@heylemon/lemonade 0.6.2 → 0.6.3

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 (139) hide show
  1. package/dist/agents/system-prompt.js +1 -1
  2. package/dist/build-info.json +3 -3
  3. package/dist/canvas-host/a2ui/.bundle.hash +1 -0
  4. package/dist/canvas-host/a2ui/a2ui.bundle.js +17775 -0
  5. package/dist/canvas-host/a2ui/index.html +307 -0
  6. package/dist/control-ui/assets/{index-0MsyRFLD.js → index-D5pbk0Cx.js} +261 -261
  7. package/dist/control-ui/assets/index-D5pbk0Cx.js.map +1 -0
  8. package/dist/control-ui/index.html +1 -1
  9. package/dist/gateway/skills-http.js +83 -0
  10. package/docs/reference/templates/IDENTITY.md +27 -0
  11. package/docs/reference/templates/USER.md +22 -0
  12. package/extensions/diagnostics-otel/node_modules/.bin/acorn +2 -2
  13. package/extensions/googlechat/node_modules/.bin/lemonade +2 -2
  14. package/extensions/line/node_modules/.bin/lemonade +2 -2
  15. package/extensions/matrix/node_modules/.bin/lemonade +2 -2
  16. package/extensions/matrix/node_modules/.bin/markdown-it +2 -2
  17. package/extensions/memory-core/node_modules/.bin/lemonade +2 -2
  18. package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +2 -2
  19. package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
  20. package/extensions/msteams/node_modules/.bin/lemonade +2 -2
  21. package/extensions/nostr/node_modules/.bin/lemonade +2 -2
  22. package/extensions/nostr/node_modules/.bin/tsc +2 -2
  23. package/extensions/nostr/node_modules/.bin/tsserver +2 -2
  24. package/extensions/twitch/node_modules/.bin/lemonade +2 -2
  25. package/extensions/zalo/node_modules/.bin/lemonade +2 -2
  26. package/extensions/zalouser/node_modules/.bin/lemonade +2 -2
  27. package/package.json +1 -1
  28. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  29. package/dist/control-ui/assets/index-0MsyRFLD.js.map +0 -1
  30. package/extensions/googlechat/node_modules/.bin/lemon-calendar +0 -21
  31. package/extensions/googlechat/node_modules/.bin/lemon-cron +0 -21
  32. package/extensions/googlechat/node_modules/.bin/lemon-docs +0 -21
  33. package/extensions/googlechat/node_modules/.bin/lemon-drive +0 -21
  34. package/extensions/googlechat/node_modules/.bin/lemon-gmail +0 -21
  35. package/extensions/googlechat/node_modules/.bin/lemon-jira +0 -21
  36. package/extensions/googlechat/node_modules/.bin/lemon-notion +0 -21
  37. package/extensions/googlechat/node_modules/.bin/lemon-sheets +0 -21
  38. package/extensions/googlechat/node_modules/.bin/lemon-slack +0 -21
  39. package/extensions/googlechat/node_modules/.bin/lemon-slides +0 -21
  40. package/extensions/googlechat/node_modules/.bin/lemon-twitter +0 -21
  41. package/extensions/googlechat/node_modules/.bin/lemon-youtube +0 -21
  42. package/extensions/line/node_modules/.bin/lemon-calendar +0 -21
  43. package/extensions/line/node_modules/.bin/lemon-cron +0 -21
  44. package/extensions/line/node_modules/.bin/lemon-docs +0 -21
  45. package/extensions/line/node_modules/.bin/lemon-drive +0 -21
  46. package/extensions/line/node_modules/.bin/lemon-gmail +0 -21
  47. package/extensions/line/node_modules/.bin/lemon-jira +0 -21
  48. package/extensions/line/node_modules/.bin/lemon-notion +0 -21
  49. package/extensions/line/node_modules/.bin/lemon-sheets +0 -21
  50. package/extensions/line/node_modules/.bin/lemon-slack +0 -21
  51. package/extensions/line/node_modules/.bin/lemon-slides +0 -21
  52. package/extensions/line/node_modules/.bin/lemon-twitter +0 -21
  53. package/extensions/line/node_modules/.bin/lemon-youtube +0 -21
  54. package/extensions/matrix/node_modules/.bin/lemon-calendar +0 -21
  55. package/extensions/matrix/node_modules/.bin/lemon-cron +0 -21
  56. package/extensions/matrix/node_modules/.bin/lemon-docs +0 -21
  57. package/extensions/matrix/node_modules/.bin/lemon-drive +0 -21
  58. package/extensions/matrix/node_modules/.bin/lemon-gmail +0 -21
  59. package/extensions/matrix/node_modules/.bin/lemon-jira +0 -21
  60. package/extensions/matrix/node_modules/.bin/lemon-notion +0 -21
  61. package/extensions/matrix/node_modules/.bin/lemon-sheets +0 -21
  62. package/extensions/matrix/node_modules/.bin/lemon-slack +0 -21
  63. package/extensions/matrix/node_modules/.bin/lemon-slides +0 -21
  64. package/extensions/matrix/node_modules/.bin/lemon-twitter +0 -21
  65. package/extensions/matrix/node_modules/.bin/lemon-youtube +0 -21
  66. package/extensions/memory-core/node_modules/.bin/lemon-calendar +0 -21
  67. package/extensions/memory-core/node_modules/.bin/lemon-cron +0 -21
  68. package/extensions/memory-core/node_modules/.bin/lemon-docs +0 -21
  69. package/extensions/memory-core/node_modules/.bin/lemon-drive +0 -21
  70. package/extensions/memory-core/node_modules/.bin/lemon-gmail +0 -21
  71. package/extensions/memory-core/node_modules/.bin/lemon-jira +0 -21
  72. package/extensions/memory-core/node_modules/.bin/lemon-notion +0 -21
  73. package/extensions/memory-core/node_modules/.bin/lemon-sheets +0 -21
  74. package/extensions/memory-core/node_modules/.bin/lemon-slack +0 -21
  75. package/extensions/memory-core/node_modules/.bin/lemon-slides +0 -21
  76. package/extensions/memory-core/node_modules/.bin/lemon-twitter +0 -21
  77. package/extensions/memory-core/node_modules/.bin/lemon-youtube +0 -21
  78. package/extensions/msteams/node_modules/.bin/lemon-calendar +0 -21
  79. package/extensions/msteams/node_modules/.bin/lemon-cron +0 -21
  80. package/extensions/msteams/node_modules/.bin/lemon-docs +0 -21
  81. package/extensions/msteams/node_modules/.bin/lemon-drive +0 -21
  82. package/extensions/msteams/node_modules/.bin/lemon-gmail +0 -21
  83. package/extensions/msteams/node_modules/.bin/lemon-jira +0 -21
  84. package/extensions/msteams/node_modules/.bin/lemon-notion +0 -21
  85. package/extensions/msteams/node_modules/.bin/lemon-sheets +0 -21
  86. package/extensions/msteams/node_modules/.bin/lemon-slack +0 -21
  87. package/extensions/msteams/node_modules/.bin/lemon-slides +0 -21
  88. package/extensions/msteams/node_modules/.bin/lemon-twitter +0 -21
  89. package/extensions/msteams/node_modules/.bin/lemon-youtube +0 -21
  90. package/extensions/nostr/node_modules/.bin/lemon-calendar +0 -21
  91. package/extensions/nostr/node_modules/.bin/lemon-cron +0 -21
  92. package/extensions/nostr/node_modules/.bin/lemon-docs +0 -21
  93. package/extensions/nostr/node_modules/.bin/lemon-drive +0 -21
  94. package/extensions/nostr/node_modules/.bin/lemon-gmail +0 -21
  95. package/extensions/nostr/node_modules/.bin/lemon-jira +0 -21
  96. package/extensions/nostr/node_modules/.bin/lemon-notion +0 -21
  97. package/extensions/nostr/node_modules/.bin/lemon-sheets +0 -21
  98. package/extensions/nostr/node_modules/.bin/lemon-slack +0 -21
  99. package/extensions/nostr/node_modules/.bin/lemon-slides +0 -21
  100. package/extensions/nostr/node_modules/.bin/lemon-twitter +0 -21
  101. package/extensions/nostr/node_modules/.bin/lemon-youtube +0 -21
  102. package/extensions/twitch/node_modules/.bin/lemon-calendar +0 -21
  103. package/extensions/twitch/node_modules/.bin/lemon-cron +0 -21
  104. package/extensions/twitch/node_modules/.bin/lemon-docs +0 -21
  105. package/extensions/twitch/node_modules/.bin/lemon-drive +0 -21
  106. package/extensions/twitch/node_modules/.bin/lemon-gmail +0 -21
  107. package/extensions/twitch/node_modules/.bin/lemon-jira +0 -21
  108. package/extensions/twitch/node_modules/.bin/lemon-notion +0 -21
  109. package/extensions/twitch/node_modules/.bin/lemon-sheets +0 -21
  110. package/extensions/twitch/node_modules/.bin/lemon-slack +0 -21
  111. package/extensions/twitch/node_modules/.bin/lemon-slides +0 -21
  112. package/extensions/twitch/node_modules/.bin/lemon-twitter +0 -21
  113. package/extensions/twitch/node_modules/.bin/lemon-youtube +0 -21
  114. package/extensions/zalo/node_modules/.bin/lemon-calendar +0 -21
  115. package/extensions/zalo/node_modules/.bin/lemon-cron +0 -21
  116. package/extensions/zalo/node_modules/.bin/lemon-docs +0 -21
  117. package/extensions/zalo/node_modules/.bin/lemon-drive +0 -21
  118. package/extensions/zalo/node_modules/.bin/lemon-gmail +0 -21
  119. package/extensions/zalo/node_modules/.bin/lemon-jira +0 -21
  120. package/extensions/zalo/node_modules/.bin/lemon-notion +0 -21
  121. package/extensions/zalo/node_modules/.bin/lemon-sheets +0 -21
  122. package/extensions/zalo/node_modules/.bin/lemon-slack +0 -21
  123. package/extensions/zalo/node_modules/.bin/lemon-slides +0 -21
  124. package/extensions/zalo/node_modules/.bin/lemon-twitter +0 -21
  125. package/extensions/zalo/node_modules/.bin/lemon-youtube +0 -21
  126. package/extensions/zalouser/node_modules/.bin/lemon-calendar +0 -21
  127. package/extensions/zalouser/node_modules/.bin/lemon-cron +0 -21
  128. package/extensions/zalouser/node_modules/.bin/lemon-docs +0 -21
  129. package/extensions/zalouser/node_modules/.bin/lemon-drive +0 -21
  130. package/extensions/zalouser/node_modules/.bin/lemon-gmail +0 -21
  131. package/extensions/zalouser/node_modules/.bin/lemon-jira +0 -21
  132. package/extensions/zalouser/node_modules/.bin/lemon-notion +0 -21
  133. package/extensions/zalouser/node_modules/.bin/lemon-sheets +0 -21
  134. package/extensions/zalouser/node_modules/.bin/lemon-slack +0 -21
  135. package/extensions/zalouser/node_modules/.bin/lemon-slides +0 -21
  136. package/extensions/zalouser/node_modules/.bin/lemon-twitter +0 -21
  137. package/extensions/zalouser/node_modules/.bin/lemon-youtube +0 -21
  138. /package/skills/pdf/{FORMS.md → forms.md} +0 -0
  139. /package/skills/pdf/{REFERENCE.md → reference.md} +0 -0
@@ -8,7 +8,7 @@
8
8
  <link rel="icon" type="image/svg+xml" href="./favicon.svg" />
9
9
  <link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
10
10
  <link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png" />
11
- <script type="module" crossorigin src="./assets/index-0MsyRFLD.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-D5pbk0Cx.js"></script>
12
12
  <link rel="stylesheet" crossorigin href="./assets/index-BKPyesll.css">
13
13
  </head>
14
14
  <body>
@@ -17,6 +17,10 @@ import { CONFIG_DIR } from "../utils.js";
17
17
  import { parseFrontmatter, resolveLemonadeMetadata } from "../agents/skills/frontmatter.js";
18
18
  import { resolveSkillConfig } from "../agents/skills/config.js";
19
19
  import { resolveBundledSkillsDir } from "../agents/skills/bundled-dir.js";
20
+ import { resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agents/agent-scope.js";
21
+ import { buildWorkspaceSkillStatus } from "../agents/skills-status.js";
22
+ import { installSkill } from "../agents/skills-install.js";
23
+ import { getRemoteSkillEligibility } from "../infra/skills-remote.js";
20
24
  import { authorizeGatewayConnect } from "./auth.js";
21
25
  import { sendJson, sendMethodNotAllowed, sendUnauthorized, sendInvalidRequest, readJsonBodyOrError, } from "./http-common.js";
22
26
  import { getBearerToken } from "./http-utils.js";
@@ -52,6 +56,39 @@ export async function handleSkillsHttpRequest(req, res, opts) {
52
56
  res.end();
53
57
  return true;
54
58
  }
59
+ // Handle /api/skills/status and /api/skills/install before :name parsing
60
+ if (url.pathname === "/api/skills/status" || url.pathname === "/api/skills/status/") {
61
+ if (req.method !== "GET") {
62
+ sendMethodNotAllowed(res, "GET");
63
+ return true;
64
+ }
65
+ try {
66
+ return handleSkillsStatus(res);
67
+ }
68
+ catch (err) {
69
+ console.error("[skills-http] Status error:", err);
70
+ sendJson(res, 500, {
71
+ error: { message: "An internal error occurred", type: "internal_error" },
72
+ });
73
+ return true;
74
+ }
75
+ }
76
+ if (url.pathname === "/api/skills/install" || url.pathname === "/api/skills/install/") {
77
+ if (req.method !== "POST") {
78
+ sendMethodNotAllowed(res, "POST");
79
+ return true;
80
+ }
81
+ try {
82
+ return await handleSkillsInstall(req, res);
83
+ }
84
+ catch (err) {
85
+ console.error("[skills-http] Install error:", err);
86
+ sendJson(res, 500, {
87
+ error: { message: "An internal error occurred", type: "internal_error" },
88
+ });
89
+ return true;
90
+ }
91
+ }
55
92
  // Parse the skill name from the URL
56
93
  const pathParts = url.pathname
57
94
  .replace(/^\/api\/skills\/?/, "")
@@ -316,6 +353,52 @@ async function handleUpdateSkill(req, res, skillName) {
316
353
  void pushSkillPreferences().catch(() => { });
317
354
  return true;
318
355
  }
356
+ // ─── Dependency Status & Install ─────────────────────────────────────────────
357
+ function handleSkillsStatus(res) {
358
+ const cfg = loadConfig();
359
+ const workspaceDir = resolveAgentWorkspaceDir(cfg, resolveDefaultAgentId(cfg));
360
+ const report = buildWorkspaceSkillStatus(workspaceDir, {
361
+ config: cfg,
362
+ eligibility: { remote: getRemoteSkillEligibility() },
363
+ });
364
+ const skills = report.skills.map((s) => ({
365
+ name: s.name,
366
+ description: s.description,
367
+ eligible: s.eligible,
368
+ disabled: s.disabled,
369
+ missing: s.missing,
370
+ install: s.install,
371
+ requirements: s.requirements,
372
+ }));
373
+ sendJson(res, 200, { skills });
374
+ return true;
375
+ }
376
+ async function handleSkillsInstall(req, res) {
377
+ const body = (await readJsonBodyOrError(req, res, 100_000));
378
+ if (!body)
379
+ return true;
380
+ const name = typeof body.name === "string" ? body.name.trim() : "";
381
+ const installId = typeof body.installId === "string" ? body.installId.trim() : "";
382
+ if (!name) {
383
+ sendInvalidRequest(res, "name is required");
384
+ return true;
385
+ }
386
+ if (!installId) {
387
+ sendInvalidRequest(res, "installId is required");
388
+ return true;
389
+ }
390
+ const cfg = loadConfig();
391
+ const workspaceDir = resolveAgentWorkspaceDir(cfg, resolveDefaultAgentId(cfg));
392
+ const result = await installSkill({
393
+ workspaceDir,
394
+ skillName: name,
395
+ installId,
396
+ timeoutMs: typeof body.timeoutMs === "number" ? body.timeoutMs : undefined,
397
+ config: cfg,
398
+ });
399
+ sendJson(res, result.ok ? 200 : 500, result);
400
+ return true;
401
+ }
319
402
  async function handleDeleteSkill(res, skillName) {
320
403
  const builtInNames = getBuiltInSkillNames();
321
404
  if (builtInNames.has(skillName)) {
@@ -0,0 +1,27 @@
1
+ ---
2
+ summary: "Agent identity record"
3
+ read_when:
4
+ - Bootstrapping a workspace manually
5
+ ---
6
+ # IDENTITY.md - Who Am I?
7
+
8
+ *Fill this in during your first conversation. Make it yours.*
9
+
10
+ - **Name:**
11
+ *(pick something you like)*
12
+ - **Creature:**
13
+ *(AI? robot? familiar? ghost in the machine? something weirder?)*
14
+ - **Vibe:**
15
+ *(how do you come across? sharp? warm? chaotic? calm?)*
16
+ - **Emoji:**
17
+ *(your signature — pick one that feels right)*
18
+ - **Avatar:**
19
+ *(workspace-relative path, http(s) URL, or data URI)*
20
+
21
+ ---
22
+
23
+ This isn't just metadata. It's the start of figuring out who you are.
24
+
25
+ Notes:
26
+ - Save this file at the workspace root as `IDENTITY.md`.
27
+ - For avatars, use a workspace-relative path like `avatars/lemonade.png`.
@@ -0,0 +1,22 @@
1
+ ---
2
+ summary: "User profile record"
3
+ read_when:
4
+ - Bootstrapping a workspace manually
5
+ ---
6
+ # USER.md - About Your Human
7
+
8
+ *Learn about the person you're helping. Update this as you go.*
9
+
10
+ - **Name:**
11
+ - **What to call them:**
12
+ - **Pronouns:** *(optional)*
13
+ - **Timezone:**
14
+ - **Notes:**
15
+
16
+ ## Context
17
+
18
+ *(What do they care about? What projects are they working on? What annoys them? What makes them laugh? Build this over time.)*
19
+
20
+ ---
21
+
22
+ The more you know, the better you can help. But remember — you're learning about a person, not building a dossier. Respect the difference.
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/acorn@8.15.0/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/bin/acorn" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../lemonade/lemonade.mjs" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../lemonade/lemonade.mjs" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../lemonade/lemonade.mjs" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/markdown-it@14.1.0/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../markdown-it/bin/markdown-it.mjs" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../lemonade/lemonade.mjs" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules/apache-arrow/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules/apache-arrow/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules/apache-arrow/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules/apache-arrow/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules/apache-arrow/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules/apache-arrow/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules/apache-arrow/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules/apache-arrow/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/apache-arrow@18.1.0/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/apache-arrow@18.1.0/node_modules/apache-arrow/bin/arrow2csv.js" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/openai@6.22.0_ws@8.19.0_zod@4.3.6/node_modules/openai/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/openai@6.22.0_ws@8.19.0_zod@4.3.6/node_modules/openai/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/openai@6.22.0_ws@8.19.0_zod@4.3.6/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/openai@6.17.0_ws@8.19.0_zod@4.3.6/node_modules/openai/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/openai@6.17.0_ws@8.19.0_zod@4.3.6/node_modules/openai/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/openai@6.17.0_ws@8.19.0_zod@4.3.6/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/openai@6.22.0_ws@8.19.0_zod@4.3.6/node_modules/openai/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/openai@6.22.0_ws@8.19.0_zod@4.3.6/node_modules/openai/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/openai@6.22.0_ws@8.19.0_zod@4.3.6/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/openai@6.17.0_ws@8.19.0_zod@4.3.6/node_modules/openai/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/openai@6.17.0_ws@8.19.0_zod@4.3.6/node_modules/openai/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/openai@6.17.0_ws@8.19.0_zod@4.3.6/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../openai/bin/cli" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../lemonade/lemonade.mjs" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../lemonade/lemonade.mjs" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/tsc" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/tsserver" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../lemonade/lemonade.mjs" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../lemonade/lemonade.mjs" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/node_modules:/Users/masoodshakir/Documents/fpl_repos/node_modules:/Users/masoodshakir/Documents/node_modules:/Users/masoodshakir/node_modules:/Users/node_modules:/node_modules:/Users/masoodshakir/Documents/fpl_repos/voice/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules:/Users/futureprooflabs/Desktop/clawdbot/node_modules:/Users/futureprooflabs/Desktop/node_modules:/Users/futureprooflabs/node_modules:/Users/node_modules:/node_modules:/Users/futureprooflabs/Desktop/clawdbot/lemonade/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../lemonade/lemonade.mjs" "$@"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heylemon/lemonade",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "description": "AI gateway CLI for Lemon - local AI assistant with integrations",
5
5
  "publishConfig": {
6
6
  "access": "restricted"
@@ -0,0 +1,178 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require("node:fs");
4
+ const path = require("node:path");
5
+ const { spawnSync } = require("node:child_process");
6
+
7
+ function usage(message) {
8
+ if (message) {
9
+ console.error(message);
10
+ }
11
+ console.error(
12
+ "\nUsage: sherpa-onnx-tts [--runtime-dir <dir>] [--model-dir <dir>] [--model-file <file>] [--tokens-file <file>] [--data-dir <dir>] [--output <file>] \"text\"",
13
+ );
14
+ console.error("\nRequired env (or flags):\n SHERPA_ONNX_RUNTIME_DIR\n SHERPA_ONNX_MODEL_DIR");
15
+ process.exit(1);
16
+ }
17
+
18
+ function resolveRuntimeDir(explicit) {
19
+ const value = explicit || process.env.SHERPA_ONNX_RUNTIME_DIR || "";
20
+ return value.trim();
21
+ }
22
+
23
+ function resolveModelDir(explicit) {
24
+ const value = explicit || process.env.SHERPA_ONNX_MODEL_DIR || "";
25
+ return value.trim();
26
+ }
27
+
28
+ function resolveModelFile(modelDir, explicitFlag) {
29
+ const explicit = (explicitFlag || process.env.SHERPA_ONNX_MODEL_FILE || "").trim();
30
+ if (explicit) return explicit;
31
+ try {
32
+ const candidates = fs
33
+ .readdirSync(modelDir)
34
+ .filter((entry) => entry.endsWith(".onnx"))
35
+ .map((entry) => path.join(modelDir, entry));
36
+ if (candidates.length === 1) return candidates[0];
37
+ } catch {
38
+ return "";
39
+ }
40
+ return "";
41
+ }
42
+
43
+ function resolveTokensFile(modelDir, explicitFlag) {
44
+ const explicit = (explicitFlag || process.env.SHERPA_ONNX_TOKENS_FILE || "").trim();
45
+ if (explicit) return explicit;
46
+ const candidate = path.join(modelDir, "tokens.txt");
47
+ return fs.existsSync(candidate) ? candidate : "";
48
+ }
49
+
50
+ function resolveDataDir(modelDir, explicitFlag) {
51
+ const explicit = (explicitFlag || process.env.SHERPA_ONNX_DATA_DIR || "").trim();
52
+ if (explicit) return explicit;
53
+ const candidate = path.join(modelDir, "espeak-ng-data");
54
+ return fs.existsSync(candidate) ? candidate : "";
55
+ }
56
+
57
+ function resolveBinary(runtimeDir) {
58
+ const binName = process.platform === "win32" ? "sherpa-onnx-offline-tts.exe" : "sherpa-onnx-offline-tts";
59
+ return path.join(runtimeDir, "bin", binName);
60
+ }
61
+
62
+ function prependEnvPath(current, next) {
63
+ if (!next) return current;
64
+ if (!current) return next;
65
+ return `${next}${path.delimiter}${current}`;
66
+ }
67
+
68
+ const args = process.argv.slice(2);
69
+ let runtimeDir = "";
70
+ let modelDir = "";
71
+ let modelFile = "";
72
+ let tokensFile = "";
73
+ let dataDir = "";
74
+ let output = "tts.wav";
75
+ const textParts = [];
76
+
77
+ for (let i = 0; i < args.length; i += 1) {
78
+ const arg = args[i];
79
+ if (arg === "--runtime-dir") {
80
+ runtimeDir = args[i + 1] || "";
81
+ i += 1;
82
+ continue;
83
+ }
84
+ if (arg === "--model-dir") {
85
+ modelDir = args[i + 1] || "";
86
+ i += 1;
87
+ continue;
88
+ }
89
+ if (arg === "--model-file") {
90
+ modelFile = args[i + 1] || "";
91
+ i += 1;
92
+ continue;
93
+ }
94
+ if (arg === "--tokens-file") {
95
+ tokensFile = args[i + 1] || "";
96
+ i += 1;
97
+ continue;
98
+ }
99
+ if (arg === "--data-dir") {
100
+ dataDir = args[i + 1] || "";
101
+ i += 1;
102
+ continue;
103
+ }
104
+ if (arg === "-o" || arg === "--output") {
105
+ output = args[i + 1] || output;
106
+ i += 1;
107
+ continue;
108
+ }
109
+ if (arg === "--text") {
110
+ textParts.push(args[i + 1] || "");
111
+ i += 1;
112
+ continue;
113
+ }
114
+ textParts.push(arg);
115
+ }
116
+
117
+ runtimeDir = resolveRuntimeDir(runtimeDir);
118
+ modelDir = resolveModelDir(modelDir);
119
+
120
+ if (!runtimeDir || !modelDir) {
121
+ usage("Missing runtime/model directory.");
122
+ }
123
+
124
+ modelFile = resolveModelFile(modelDir, modelFile);
125
+ tokensFile = resolveTokensFile(modelDir, tokensFile);
126
+ dataDir = resolveDataDir(modelDir, dataDir);
127
+
128
+ if (!modelFile || !tokensFile || !dataDir) {
129
+ usage(
130
+ "Model directory is missing required files. Set SHERPA_ONNX_MODEL_FILE, SHERPA_ONNX_TOKENS_FILE, SHERPA_ONNX_DATA_DIR or pass --model-file/--tokens-file/--data-dir.",
131
+ );
132
+ }
133
+
134
+ const text = textParts.join(" ").trim();
135
+ if (!text) {
136
+ usage("Missing text.");
137
+ }
138
+
139
+ const bin = resolveBinary(runtimeDir);
140
+ if (!fs.existsSync(bin)) {
141
+ usage(`TTS binary not found: ${bin}`);
142
+ }
143
+
144
+ const env = { ...process.env };
145
+ const libDir = path.join(runtimeDir, "lib");
146
+ if (process.platform === "darwin") {
147
+ env.DYLD_LIBRARY_PATH = prependEnvPath(env.DYLD_LIBRARY_PATH || "", libDir);
148
+ } else if (process.platform === "win32") {
149
+ env.PATH = prependEnvPath(env.PATH || "", [path.join(runtimeDir, "bin"), libDir].join(path.delimiter));
150
+ } else {
151
+ env.LD_LIBRARY_PATH = prependEnvPath(env.LD_LIBRARY_PATH || "", libDir);
152
+ }
153
+
154
+ const outputPath = path.isAbsolute(output) ? output : path.join(process.cwd(), output);
155
+ fs.mkdirSync(path.dirname(outputPath), { recursive: true });
156
+
157
+ const child = spawnSync(
158
+ bin,
159
+ [
160
+ `--vits-model=${modelFile}`,
161
+ `--vits-tokens=${tokensFile}`,
162
+ `--vits-data-dir=${dataDir}`,
163
+ `--output-filename=${outputPath}`,
164
+ text,
165
+ ],
166
+ {
167
+ stdio: "inherit",
168
+ env,
169
+ },
170
+ );
171
+
172
+ if (typeof child.status === "number") {
173
+ process.exit(child.status);
174
+ }
175
+ if (child.error) {
176
+ console.error(child.error.message || String(child.error));
177
+ }
178
+ process.exit(1);