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/README.md +38 -25
- package/dist/index.js +24 -12
- package/dist/index.js.map +3 -3
- package/package.json +5 -2
- package/packages/tiny-mcp-test-server/dist/index.js +47 -0
package/README.md
CHANGED
|
@@ -1,60 +1,73 @@
|
|
|
1
|
-
|
|
1
|
+

|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
<div align="center">
|
|
4
|
+
<h1>Poe Code ⚡</h1>
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
<a href="https://poe.com"><img src="https://img.shields.io/badge/Poe-Sign up-purple?logo=poe&logoColor=white&color=5D5CDE&style=for-the-badge" alt="Discord"></a>
|
|
7
|
+
<a href="https://www.npmjs.com/package/poe-code"><img alt="NPM version" src="https://img.shields.io/npm/v/next.svg?&style=for-the-badge&color=09B16B"></a>
|
|
8
|
+
<a href="https://discord.gg/joinpoe"><img src="https://img.shields.io/badge/Discord-Join-purple?logo=discord&logoColor=white&color=FF44D3&style=for-the-badge" alt="Discord"></a>
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
# Install Poe wrapper binaries.
|
|
9
|
-
npm install -g poe-code
|
|
10
|
+
</div>
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
poe-claude --help
|
|
13
|
-
```
|
|
12
|
+
Power your favorite coding agents (Claude Code, Codex, OpenCode, and more) with your Poe subscription—**no need to handle multiple providers/accounts.** Poe Code routes everything through the [Poe API](https://poe.com/api) .
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
Use it of a single session (`poe-code wrap claude`) or configure it as your default and use your tools normally.
|
|
16
15
|
|
|
17
|
-
## Make it default
|
|
18
|
-
|
|
19
|
-
This updates the provider’s config files so you can use the provider CLI directly.
|
|
20
16
|
|
|
17
|
+
## Quickstart
|
|
18
|
+
Start a coding session routing all your `claude` calls to Poe
|
|
21
19
|
```bash
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
npx poe-code wrap claude
|
|
21
|
+
# Also available: codex, opencode, kimi
|
|
22
|
+
```
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
npx poe-code@latest configure codex
|
|
24
|
+
or
|
|
27
25
|
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
## Set it as your default (works with CLIs and desktop apps)
|
|
27
|
+
This updates the provider’s config files so you can use the provider CLI directly.
|
|
30
28
|
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
```bash
|
|
30
|
+
# Start the interactive setup
|
|
31
|
+
npx poe-code configure
|
|
32
|
+
|
|
33
|
+
# Setup a specific agent
|
|
34
|
+
npx poe-code@latest configure codex # (or claude, opencode, kimi)
|
|
33
35
|
```
|
|
34
36
|
|
|
37
|
+
|
|
35
38
|
### Unconfigure (remove overrides)
|
|
36
39
|
|
|
37
40
|
```bash
|
|
38
|
-
npx poe-code
|
|
41
|
+
npx poe-code unconfigure claude
|
|
39
42
|
```
|
|
40
43
|
|
|
44
|
+
|
|
45
|
+
## Quick links
|
|
46
|
+
- [Utilities](#utilities)
|
|
47
|
+
- [Usage and Billing](#usage--billing)
|
|
48
|
+
- [MCP Server](#poe-mcp-server)
|
|
49
|
+
- [SDK](#sdk)
|
|
50
|
+
- [Poe API](https://poe.com/api)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
41
54
|
## Utilities
|
|
42
55
|
|
|
43
56
|
Utilities are especially useful for scripting and CI/CD.
|
|
44
57
|
|
|
45
|
-
|
|
58
|
+
#### Spawn a one-off prompt
|
|
46
59
|
|
|
47
60
|
```bash
|
|
48
61
|
npx poe-code@latest spawn codex "Say hello"
|
|
49
62
|
```
|
|
50
63
|
|
|
51
|
-
|
|
64
|
+
#### Spawn a prompt via stdin
|
|
52
65
|
|
|
53
66
|
```bash
|
|
54
67
|
echo "Say hello" | npx poe-code@latest spawn codex
|
|
55
68
|
```
|
|
56
69
|
|
|
57
|
-
|
|
70
|
+
#### Test a configured service
|
|
58
71
|
|
|
59
72
|
```bash
|
|
60
73
|
npx poe-code@latest test codex
|
package/dist/index.js
CHANGED
|
@@ -692,8 +692,8 @@ async function applyChmod(mutation, context, options) {
|
|
|
692
692
|
};
|
|
693
693
|
}
|
|
694
694
|
try {
|
|
695
|
-
const
|
|
696
|
-
const currentMode = typeof
|
|
695
|
+
const stat4 = await context.fs.stat(targetPath);
|
|
696
|
+
const currentMode = typeof stat4.mode === "number" ? stat4.mode & 511 : null;
|
|
697
697
|
if (currentMode === mutation.mode) {
|
|
698
698
|
return {
|
|
699
699
|
outcome: { changed: false, effect: "none", detail: "noop" },
|
|
@@ -33921,8 +33921,8 @@ function backoff(attempt, min, max) {
|
|
|
33921
33921
|
}
|
|
33922
33922
|
async function tryRemoveStale(lockPath, staleMs, fs3) {
|
|
33923
33923
|
try {
|
|
33924
|
-
const
|
|
33925
|
-
if (Date.now() -
|
|
33924
|
+
const stat4 = await fs3.stat(lockPath);
|
|
33925
|
+
if (Date.now() - stat4.mtimeMs > staleMs) {
|
|
33926
33926
|
await fs3.rmdir(lockPath);
|
|
33927
33927
|
return true;
|
|
33928
33928
|
}
|
|
@@ -35107,13 +35107,22 @@ async function listPlanCandidates(fs3, cwd) {
|
|
|
35107
35107
|
if (!stats.isFile()) {
|
|
35108
35108
|
continue;
|
|
35109
35109
|
}
|
|
35110
|
-
|
|
35110
|
+
const relativePath = path12.relative(cwd, absPath2);
|
|
35111
|
+
const content = await fs3.readFile(absPath2, "utf8");
|
|
35112
|
+
const plan = parsePlan(content);
|
|
35113
|
+
const done = plan.stories.filter((s) => s.status === "done").length;
|
|
35114
|
+
const total = plan.stories.length;
|
|
35115
|
+
candidates.push({ path: relativePath, done, total });
|
|
35111
35116
|
}
|
|
35112
|
-
candidates.sort((a, b) => a.localeCompare(b));
|
|
35117
|
+
candidates.sort((a, b) => a.path.localeCompare(b.path));
|
|
35113
35118
|
return candidates;
|
|
35114
35119
|
}
|
|
35115
35120
|
async function resolvePlanPath(options) {
|
|
35116
|
-
const fs3 = options.fs ??
|
|
35121
|
+
const fs3 = options.fs ?? {
|
|
35122
|
+
readdir: fsPromises6.readdir,
|
|
35123
|
+
stat: fsPromises6.stat,
|
|
35124
|
+
readFile: fsPromises6.readFile
|
|
35125
|
+
};
|
|
35117
35126
|
const cwd = options.cwd;
|
|
35118
35127
|
const provided = options.plan?.trim();
|
|
35119
35128
|
if (provided) {
|
|
@@ -35143,13 +35152,13 @@ async function resolvePlanPath(options) {
|
|
|
35143
35152
|
return null;
|
|
35144
35153
|
}
|
|
35145
35154
|
if (candidates.length === 1) {
|
|
35146
|
-
return candidates[0];
|
|
35155
|
+
return candidates[0].path;
|
|
35147
35156
|
}
|
|
35148
35157
|
const selection = await select2({
|
|
35149
35158
|
message: "Select a plan file to use for this Ralph run",
|
|
35150
35159
|
options: candidates.map((candidate) => ({
|
|
35151
|
-
label: candidate
|
|
35152
|
-
value: candidate
|
|
35160
|
+
label: `${candidate.path} (${candidate.done}/${candidate.total})`,
|
|
35161
|
+
value: candidate.path
|
|
35153
35162
|
}))
|
|
35154
35163
|
});
|
|
35155
35164
|
if (isCancel(selection)) {
|
|
@@ -36192,7 +36201,7 @@ function registerModelsCommand(program, container) {
|
|
|
36192
36201
|
// package.json
|
|
36193
36202
|
var package_default = {
|
|
36194
36203
|
name: "poe-code",
|
|
36195
|
-
version: "
|
|
36204
|
+
version: "3.0.30",
|
|
36196
36205
|
description: "CLI tool to configure Poe API for developer workflows.",
|
|
36197
36206
|
type: "module",
|
|
36198
36207
|
workspaces: [
|
|
@@ -36234,6 +36243,7 @@ var package_default = {
|
|
|
36234
36243
|
"e2e:logs": "tsx packages/e2e-docker-test-runner/scripts/logs.ts",
|
|
36235
36244
|
"e2e:logs:rotate": "tsx packages/e2e-docker-test-runner/scripts/logs.ts --rotate",
|
|
36236
36245
|
"e2e:cache:clear": "rm -rf ~/.cache/poe-e2e",
|
|
36246
|
+
prepack: "npm run build",
|
|
36237
36247
|
prepare: "husky"
|
|
36238
36248
|
},
|
|
36239
36249
|
bin: {
|
|
@@ -36241,7 +36251,8 @@ var package_default = {
|
|
|
36241
36251
|
"poe-code-configure": "dist/bin.cjs",
|
|
36242
36252
|
"poe-claude": "dist/bin/poe-claude.js",
|
|
36243
36253
|
"poe-codex": "dist/bin/poe-codex.js",
|
|
36244
|
-
"poe-opencode": "dist/bin/poe-opencode.js"
|
|
36254
|
+
"poe-opencode": "dist/bin/poe-opencode.js",
|
|
36255
|
+
"tiny-mcp-test-server": "packages/tiny-mcp-test-server/dist/index.js"
|
|
36245
36256
|
},
|
|
36246
36257
|
files: [
|
|
36247
36258
|
"dist"
|
|
@@ -36270,6 +36281,7 @@ var package_default = {
|
|
|
36270
36281
|
"@poe-code/e2e-docker-test-runner": "*",
|
|
36271
36282
|
"@poe-code/freeze-cli": "*",
|
|
36272
36283
|
"@poe-code/tiny-mcp-server": "*",
|
|
36284
|
+
"@poe-code/tiny-mcp-test-server": "*",
|
|
36273
36285
|
"@types/mustache": "^4.2.6",
|
|
36274
36286
|
"@types/node": "^20.12.7",
|
|
36275
36287
|
"@types/semver": "^7.7.1",
|