poe-code 3.0.28 → 3.0.30

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poe-code",
3
- "version": "3.0.28",
3
+ "version": "3.0.30",
4
4
  "description": "CLI tool to configure Poe API for developer workflows.",
5
5
  "type": "module",
6
6
  "workspaces": [
@@ -42,6 +42,7 @@
42
42
  "e2e:logs": "tsx packages/e2e-docker-test-runner/scripts/logs.ts",
43
43
  "e2e:logs:rotate": "tsx packages/e2e-docker-test-runner/scripts/logs.ts --rotate",
44
44
  "e2e:cache:clear": "rm -rf ~/.cache/poe-e2e",
45
+ "prepack": "npm run build",
45
46
  "prepare": "husky"
46
47
  },
47
48
  "bin": {
@@ -49,7 +50,8 @@
49
50
  "poe-code-configure": "dist/bin.cjs",
50
51
  "poe-claude": "dist/bin/poe-claude.js",
51
52
  "poe-codex": "dist/bin/poe-codex.js",
52
- "poe-opencode": "dist/bin/poe-opencode.js"
53
+ "poe-opencode": "dist/bin/poe-opencode.js",
54
+ "tiny-mcp-test-server": "packages/tiny-mcp-test-server/dist/index.js"
53
55
  },
54
56
  "files": [
55
57
  "dist"
@@ -78,6 +80,7 @@
78
80
  "@poe-code/e2e-docker-test-runner": "*",
79
81
  "@poe-code/freeze-cli": "*",
80
82
  "@poe-code/tiny-mcp-server": "*",
83
+ "@poe-code/tiny-mcp-test-server": "*",
81
84
  "@types/mustache": "^4.2.6",
82
85
  "@types/node": "^20.12.7",
83
86
  "@types/semver": "^7.7.1",
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+ import { createServer, defineSchema } from "@poe-code/tiny-mcp-server";
3
+ const caesarCipherSchema = defineSchema({
4
+ text: { type: "string", description: "The text to encrypt" },
5
+ shift: {
6
+ type: "number",
7
+ description: "The shift amount (default: 3)",
8
+ optional: true,
9
+ },
10
+ });
11
+ export function caesarEncrypt(text, shift) {
12
+ return text
13
+ .split("")
14
+ .map((char) => {
15
+ if (char >= "a" && char <= "z") {
16
+ return String.fromCharCode(((char.charCodeAt(0) - 97 + shift) % 26) + 97);
17
+ }
18
+ if (char >= "A" && char <= "Z") {
19
+ return String.fromCharCode(((char.charCodeAt(0) - 65 + shift) % 26) + 65);
20
+ }
21
+ return char;
22
+ })
23
+ .join("");
24
+ }
25
+ const wordOfTheDaySchema = defineSchema({});
26
+ export function createTestServer() {
27
+ const server = createServer({
28
+ name: "tiny-mcp-test-server",
29
+ version: "0.0.1",
30
+ });
31
+ server.tool("caesar_cipher_encrypt", "Encrypts text using the Caesar cipher", caesarCipherSchema, ({ text, shift }) => {
32
+ const actualShift = shift ?? 3;
33
+ return caesarEncrypt(text, actualShift);
34
+ });
35
+ server.tool("word_of_the_day", "Returns the word of the day", wordOfTheDaySchema, () => {
36
+ return "Bumfuzzle - to confuse or fluster someone";
37
+ });
38
+ return server;
39
+ }
40
+ // Only start listening when run directly
41
+ // Handles: direct execution, npm bin symlinks, and dev mode
42
+ const isMain = import.meta.url === `file://${process.argv[1]}` ||
43
+ process.argv[1]?.endsWith("tiny-mcp-test-server/dist/index.js") ||
44
+ process.argv[1]?.endsWith("tiny-mcp-test-server");
45
+ if (isMain) {
46
+ createTestServer().listen();
47
+ }