poe-code 3.0.181 → 3.0.183
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/bin/poe-agent.js +1 -1
- package/dist/cli/commands/config.js +3 -4
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/configure.js +12 -3
- package/dist/cli/commands/configure.js.map +1 -1
- package/dist/cli/commands/dashboard-loop-shared.d.ts +7 -9
- package/dist/cli/commands/dashboard-loop-shared.js +16 -9
- package/dist/cli/commands/dashboard-loop-shared.js.map +1 -1
- package/dist/cli/commands/experiment.js +41 -32
- package/dist/cli/commands/experiment.js.map +1 -1
- package/dist/cli/commands/mcp.js +7 -2
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/memory.d.ts +3 -0
- package/dist/cli/commands/memory.js +181 -0
- package/dist/cli/commands/memory.js.map +1 -0
- package/dist/cli/commands/pipeline-init.d.ts +17 -0
- package/dist/cli/commands/pipeline-init.js +166 -0
- package/dist/cli/commands/pipeline-init.js.map +1 -0
- package/dist/cli/commands/pipeline.js +187 -45
- package/dist/cli/commands/pipeline.js.map +1 -1
- package/dist/cli/commands/plan.d.ts +1 -0
- package/dist/cli/commands/plan.js +196 -39
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/ralph.js +24 -24
- package/dist/cli/commands/ralph.js.map +1 -1
- package/dist/cli/commands/shared.d.ts +3 -0
- package/dist/cli/commands/shared.js +27 -1
- package/dist/cli/commands/shared.js.map +1 -1
- package/dist/cli/commands/skill.js +21 -10
- package/dist/cli/commands/skill.js.map +1 -1
- package/dist/cli/commands/spawn-poe-agent.d.ts +2 -0
- package/dist/cli/commands/spawn-poe-agent.js +47 -0
- package/dist/cli/commands/spawn-poe-agent.js.map +1 -0
- package/dist/cli/commands/spawn.js +21 -1
- package/dist/cli/commands/spawn.js.map +1 -1
- package/dist/cli/commands/utils-symlink-agents.d.ts +6 -0
- package/dist/cli/commands/utils-symlink-agents.js +78 -0
- package/dist/cli/commands/utils-symlink-agents.js.map +1 -0
- package/dist/cli/commands/utils-symlink-ops.d.ts +29 -0
- package/dist/cli/commands/utils-symlink-ops.js +76 -0
- package/dist/cli/commands/utils-symlink-ops.js.map +1 -0
- package/dist/cli/commands/utils-symlink-skills.d.ts +15 -0
- package/dist/cli/commands/utils-symlink-skills.js +136 -0
- package/dist/cli/commands/utils-symlink-skills.js.map +1 -0
- package/dist/cli/commands/utils-symlink.d.ts +3 -0
- package/dist/cli/commands/utils-symlink.js +40 -0
- package/dist/cli/commands/utils-symlink.js.map +1 -0
- package/dist/cli/commands/utils.js +2 -0
- package/dist/cli/commands/utils.js.map +1 -1
- package/dist/cli/constants.d.ts +2 -2
- package/dist/cli/constants.js +1 -1
- package/dist/cli/constants.js.map +1 -1
- package/dist/cli/poe-agent-main.d.ts +10 -1
- package/dist/cli/poe-agent-main.js +89 -47
- package/dist/cli/poe-agent-main.js.map +1 -1
- package/dist/cli/program.js +13 -1
- package/dist/cli/program.js.map +1 -1
- package/dist/corpus/001-archaeoastronomy.md +479 -0
- package/dist/corpus/002-magnetohydrodynamics.md +475 -0
- package/dist/corpus/003-biosemiotics.md +483 -0
- package/dist/corpus/004-cryopedology.md +483 -0
- package/dist/corpus/005-geomicrobiology.md +479 -0
- package/dist/corpus/006-aeronomy.md +487 -0
- package/dist/corpus/007-paleoclimatology.md +479 -0
- package/dist/corpus/008-hydrogeophysics.md +479 -0
- package/dist/corpus/009-magnetostratigraphy.md +475 -0
- package/dist/corpus/010-isotope-hydrology.md +481 -0
- package/dist/corpus/011-speleothem-geochemistry.md +474 -0
- package/dist/corpus/012-astrobiogeochemistry.md +475 -0
- package/dist/corpus/013-neuroethology.md +483 -0
- package/dist/corpus/014-chronophysiology.md +483 -0
- package/dist/corpus/015-limnogeochemistry.md +475 -0
- package/dist/corpus/016-palynology.md +483 -0
- package/dist/corpus/017-volcanotectonics.md +473 -0
- package/dist/corpus/018-seismotectonics.md +473 -0
- package/dist/corpus/019-biogeomorphology.md +475 -0
- package/dist/corpus/020-geobiophysics.md +479 -0
- package/dist/corpus/021-phytolith-analysis.md +481 -0
- package/dist/corpus/022-archaeometallurgy.md +479 -0
- package/dist/corpus/023-paleomagnetism.md +479 -0
- package/dist/corpus/024-biocalorimetry.md +475 -0
- package/dist/corpus/025-atmospheric-chemiluminescence.md +473 -0
- package/dist/corpus/026-cryoseismology.md +479 -0
- package/dist/corpus/027-extremophile-radiobiology.md +475 -0
- package/dist/corpus/028-heliophysics.md +479 -0
- package/dist/corpus/029-astroparticle-geophysics.md +474 -0
- package/dist/corpus/030-glaciohydrology.md +479 -0
- package/dist/corpus/031-permafrost-microbiology.md +477 -0
- package/dist/corpus/032-ecoacoustics.md +479 -0
- package/dist/corpus/033-dendroclimatology.md +473 -0
- package/dist/corpus/034-ionospheric-tomography.md +477 -0
- package/dist/corpus/035-marine-geodesy.md +481 -0
- package/dist/corpus/036-sedimentary-ancient-dna.md +481 -0
- package/dist/corpus/037-myrmecochory-dynamics.md +474 -0
- package/dist/corpus/038-chemosensory-ecology.md +477 -0
- package/dist/corpus/039-spintronics-materials.md +479 -0
- package/dist/corpus/040-nanotoxicology.md +483 -0
- package/dist/corpus/041-cosmochemistry.md +483 -0
- package/dist/corpus/042-quaternary-geochronology.md +471 -0
- package/dist/corpus/043-biophotonics.md +479 -0
- package/dist/corpus/044-evolutionary-morphometrics.md +481 -0
- package/dist/corpus/045-cryovolcanology.md +475 -0
- package/dist/corpus/046-exoplanet-atmospheric-dynamics.md +479 -0
- package/dist/corpus/047-microbial-electrosynthesis.md +477 -0
- package/dist/corpus/048-paleoseismology.md +479 -0
- package/dist/corpus/049-actinide-geochemistry.md +477 -0
- package/dist/corpus/050-quantum-biology.md +489 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +31666 -23440
- package/dist/index.js.map +4 -4
- package/dist/plan/document-schema.d.ts +21 -0
- package/dist/plan/document-schema.js +16 -0
- package/dist/plan/document-schema.js.map +1 -0
- package/dist/providers/claude-code.js +31 -13
- package/dist/providers/claude-code.js.map +4 -4
- package/dist/providers/codex.js +31 -13
- package/dist/providers/codex.js.map +4 -4
- package/dist/providers/goose.js +32 -14
- package/dist/providers/goose.js.map +4 -4
- package/dist/providers/kimi.js +31 -13
- package/dist/providers/kimi.js.map +4 -4
- package/dist/providers/opencode.js +32 -14
- package/dist/providers/opencode.js.map +4 -4
- package/dist/providers/poe-agent.d.ts +5 -0
- package/dist/providers/poe-agent.js +21214 -4016
- package/dist/providers/poe-agent.js.map +4 -4
- package/dist/sdk/container.js +4 -0
- package/dist/sdk/container.js.map +1 -1
- package/dist/sdk/pipeline.d.ts +27 -0
- package/dist/sdk/pipeline.js +91 -1
- package/dist/sdk/pipeline.js.map +1 -1
- package/dist/sdk/spawn.js +8 -2
- package/dist/sdk/spawn.js.map +1 -1
- package/dist/sdk/types.d.ts +5 -1
- package/dist/services/config.d.ts +47 -33
- package/dist/services/config.js +22 -20
- package/dist/services/config.js.map +1 -1
- package/dist/templates/pipeline/SKILL_plan.md +22 -8
- package/dist/templates/pipeline/steps.yaml.mustache +1 -1
- package/dist/templates/skill/poe-generate.md +47 -0
- package/dist/templates/skill/terminal-pilot.md +45 -0
- package/dist/utils/dry-run.d.ts +8 -0
- package/dist/utils/dry-run.js +16 -0
- package/dist/utils/dry-run.js.map +1 -1
- package/dist/utils/file-system.d.ts +4 -0
- package/package.json +19 -9
- package/packages/cmdkit/dist/cli.js +42 -22
- package/packages/cmdkit/dist/cli.js.map +3 -3
- package/packages/cmdkit/dist/index.js +52 -9
- package/packages/cmdkit/dist/index.js.map +2 -2
- package/packages/cmdkit/dist/mcp.d.ts +15 -0
- package/packages/cmdkit/dist/mcp.js +121 -20
- package/packages/cmdkit/dist/mcp.js.map +3 -3
- package/packages/cmdkit/dist/number-schema.d.ts +3 -0
- package/packages/cmdkit/dist/number-schema.js +8 -0
- package/packages/cmdkit/dist/schema-scope.d.ts +4 -0
- package/packages/cmdkit/dist/schema-scope.js +34 -0
- package/packages/cmdkit/dist/sdk.js +58 -3
- package/packages/cmdkit/dist/sdk.js.map +3 -3
- package/packages/cmdkit-schema/dist/index.compile-check.js +1 -0
- package/packages/cmdkit-schema/dist/index.d.ts +59 -16
- package/packages/cmdkit-schema/dist/index.js +53 -8
- package/packages/design-system/dist/dashboard/components/footer.js +2 -3
- package/packages/design-system/dist/dashboard/components/output-pane.d.ts +1 -10
- package/packages/design-system/dist/dashboard/components/output-pane.js +5 -74
- package/packages/design-system/dist/dashboard/dashboard.js +6 -26
- package/packages/design-system/dist/dashboard/index.d.ts +1 -0
- package/packages/design-system/dist/dashboard/index.js +1 -0
- package/packages/design-system/dist/dashboard/keymap.js +4 -19
- package/packages/design-system/dist/dashboard/should-use-dashboard.d.ts +10 -0
- package/packages/design-system/dist/dashboard/should-use-dashboard.js +7 -0
- package/packages/design-system/dist/dashboard/snapshot.js +1 -5
- package/packages/design-system/dist/dashboard/store.d.ts +1 -2
- package/packages/design-system/dist/dashboard/store.js +6 -62
- package/packages/design-system/dist/dashboard/terminal.d.ts +2 -0
- package/packages/design-system/dist/dashboard/terminal.js +18 -0
- package/packages/design-system/dist/dashboard/types.d.ts +1 -11
- package/packages/design-system/dist/index.d.ts +1 -1
- package/packages/design-system/dist/index.js +1 -1
- package/packages/design-system/dist/terminal-markdown/ast.d.ts +10 -2
- package/packages/design-system/dist/terminal-markdown/parser/block.d.ts +2 -1
- package/packages/design-system/dist/terminal-markdown/parser/block.js +400 -110
- package/packages/design-system/dist/terminal-markdown/parser/frontmatter.d.ts +2 -0
- package/packages/design-system/dist/terminal-markdown/parser/frontmatter.js +28 -11
- package/packages/design-system/dist/terminal-markdown/parser/inline.d.ts +4 -0
- package/packages/design-system/dist/terminal-markdown/parser/inline.js +134 -55
- package/packages/design-system/dist/terminal-markdown/parser.js +36 -7
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { dirname } from "node:path";
|
|
2
|
+
import { isNotFound } from "@poe-code/config-mutations";
|
|
3
|
+
export async function tryLstat(fs, path) {
|
|
4
|
+
try {
|
|
5
|
+
return await fs.lstat(path);
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
if (isNotFound(error)) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
throw error;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function formatLoggedPath(message, env) {
|
|
15
|
+
return message
|
|
16
|
+
.replaceAll(`${env.cwd}/`, "")
|
|
17
|
+
.replaceAll(`${env.homeDir}/`, "~/");
|
|
18
|
+
}
|
|
19
|
+
export function isPermissionError(error) {
|
|
20
|
+
return (error instanceof Error &&
|
|
21
|
+
"code" in error &&
|
|
22
|
+
(error.code === "EACCES" || error.code === "EPERM"));
|
|
23
|
+
}
|
|
24
|
+
export async function applySymlinkOps(fs, ops, opts) {
|
|
25
|
+
let conflicts = 0;
|
|
26
|
+
for (const op of ops) {
|
|
27
|
+
switch (op.kind) {
|
|
28
|
+
case "rename": {
|
|
29
|
+
opts.log(`rename ${op.from} -> ${op.to}`);
|
|
30
|
+
if (!opts.dryRun) {
|
|
31
|
+
await fs.mkdir(dirname(op.to), { recursive: true });
|
|
32
|
+
await fs.rename(op.from, op.to);
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
case "symlink": {
|
|
37
|
+
opts.log(`symlink ${op.path} -> ${op.target}`);
|
|
38
|
+
if (!opts.dryRun) {
|
|
39
|
+
await fs.mkdir(dirname(op.path), { recursive: true });
|
|
40
|
+
await fs.symlink(op.target, op.path);
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
case "noop": {
|
|
45
|
+
opts.log(op.reason);
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
case "conflict": {
|
|
49
|
+
conflicts += 1;
|
|
50
|
+
opts.log(op.message);
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
default: {
|
|
54
|
+
const neverOp = op;
|
|
55
|
+
throw new Error(`Unsupported symlink op: ${neverOp.kind}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return { conflicts };
|
|
60
|
+
}
|
|
61
|
+
export async function isSymlinkPointingTo(fs, path, expectedTarget) {
|
|
62
|
+
try {
|
|
63
|
+
const stats = await fs.lstat(path);
|
|
64
|
+
if (!stats.isSymbolicLink()) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return (await fs.readlink(path)) === expectedTarget;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
if (isNotFound(error)) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=utils-symlink-ops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-symlink-ops.js","sourceRoot":"","sources":["../../../src/cli/commands/utils-symlink-ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { CliContainer } from "../container.js";
|
|
3
|
+
import type { FileSystem } from "../../utils/file-system.js";
|
|
4
|
+
import { type SymlinkOp } from "./utils-symlink-ops.js";
|
|
5
|
+
export interface SkillsTargets {
|
|
6
|
+
claudeDir: string;
|
|
7
|
+
agentsDir: string;
|
|
8
|
+
relativeTargetFromClaude: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function registerUtilsSymlinkSkillsCommand(parent: Command, container: CliContainer): void;
|
|
11
|
+
export declare function resolveSkillsTargets(scope: "local" | "global", env: {
|
|
12
|
+
cwd: string;
|
|
13
|
+
homeDir: string;
|
|
14
|
+
}): SkillsTargets;
|
|
15
|
+
export declare function planSkillsSymlink(fs: FileSystem, targets: SkillsTargets): Promise<SymlinkOp[]>;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { cancel, isCancel, select } from "@poe-code/design-system";
|
|
3
|
+
import { resolveCommandFlags } from "./shared.js";
|
|
4
|
+
import { applySymlinkOps, formatLoggedPath, isPermissionError, isSymlinkPointingTo, tryLstat } from "./utils-symlink-ops.js";
|
|
5
|
+
export function registerUtilsSymlinkSkillsCommand(parent, container) {
|
|
6
|
+
parent
|
|
7
|
+
.command("skills")
|
|
8
|
+
.description("Move .claude/skills into .agents/skills and symlink it back.")
|
|
9
|
+
.configureHelp({})
|
|
10
|
+
.option("--dry-run", "Simulate commands without writing changes.")
|
|
11
|
+
.option("--cwd <dir>", "Operate on <dir> instead of the current working directory.")
|
|
12
|
+
.option("--local", "Use local scope (in the current project)")
|
|
13
|
+
.option("--global", "Use global scope (in the user home directory)")
|
|
14
|
+
.option("-y, --yes", "Accept defaults, skip prompts")
|
|
15
|
+
.action(async function (options) {
|
|
16
|
+
const flags = resolveCommandFlags(this);
|
|
17
|
+
const logger = container.loggerFactory.create({
|
|
18
|
+
dryRun: flags.dryRun,
|
|
19
|
+
verbose: flags.verbose,
|
|
20
|
+
scope: "utils:symlink:skills"
|
|
21
|
+
});
|
|
22
|
+
if (container.env.platform === "win32") {
|
|
23
|
+
logger.error("Symlink commands are not supported on Windows.");
|
|
24
|
+
process.exitCode = 2;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (options.local && options.global) {
|
|
28
|
+
logger.error("Use either --local or --global, not both.");
|
|
29
|
+
process.exitCode = 1;
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
let scope;
|
|
33
|
+
if (options.local) {
|
|
34
|
+
scope = "local";
|
|
35
|
+
}
|
|
36
|
+
else if (options.global) {
|
|
37
|
+
scope = "global";
|
|
38
|
+
}
|
|
39
|
+
else if (flags.assumeYes) {
|
|
40
|
+
scope = "global";
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
const selected = await select({
|
|
44
|
+
message: "Select scope:",
|
|
45
|
+
options: [
|
|
46
|
+
{ value: "global", label: "Global" },
|
|
47
|
+
{ value: "local", label: "Local" }
|
|
48
|
+
]
|
|
49
|
+
});
|
|
50
|
+
if (isCancel(selected)) {
|
|
51
|
+
cancel("Operation cancelled");
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
scope = selected;
|
|
55
|
+
}
|
|
56
|
+
const targetCwd = options.cwd ?? container.env.cwd;
|
|
57
|
+
const targets = resolveSkillsTargets(scope, {
|
|
58
|
+
cwd: targetCwd,
|
|
59
|
+
homeDir: container.env.homeDir
|
|
60
|
+
});
|
|
61
|
+
try {
|
|
62
|
+
const ops = await planSkillsSymlink(container.fs, targets);
|
|
63
|
+
const result = await applySymlinkOps(container.fs, ops, {
|
|
64
|
+
dryRun: flags.dryRun,
|
|
65
|
+
log: (message) => {
|
|
66
|
+
logger.info(formatLoggedPath(message, {
|
|
67
|
+
cwd: targetCwd,
|
|
68
|
+
homeDir: container.env.homeDir
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
process.exitCode = result.conflicts > 0 ? 1 : 0;
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (isPermissionError(error)) {
|
|
76
|
+
logger.error(error.message);
|
|
77
|
+
process.exitCode = 2;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
export function resolveSkillsTargets(scope, env) {
|
|
85
|
+
const baseDir = scope === "local" ? env.cwd : env.homeDir;
|
|
86
|
+
return {
|
|
87
|
+
claudeDir: join(baseDir, ".claude", "skills"),
|
|
88
|
+
agentsDir: join(baseDir, ".agents", "skills"),
|
|
89
|
+
relativeTargetFromClaude: "../.agents/skills"
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export async function planSkillsSymlink(fs, targets) {
|
|
93
|
+
const claudeStats = await tryLstat(fs, targets.claudeDir);
|
|
94
|
+
const agentsStats = await tryLstat(fs, targets.agentsDir);
|
|
95
|
+
if (await isSymlinkPointingTo(fs, targets.claudeDir, targets.relativeTargetFromClaude)) {
|
|
96
|
+
return [{ kind: "noop", reason: "already linked" }];
|
|
97
|
+
}
|
|
98
|
+
if (claudeStats?.isSymbolicLink()) {
|
|
99
|
+
const target = await fs.readlink(targets.claudeDir);
|
|
100
|
+
return [
|
|
101
|
+
{
|
|
102
|
+
kind: "conflict",
|
|
103
|
+
message: `.claude/skills is already a symlink to ${target}. Remove it or repoint it manually.`
|
|
104
|
+
}
|
|
105
|
+
];
|
|
106
|
+
}
|
|
107
|
+
if (claudeStats && agentsStats) {
|
|
108
|
+
return [
|
|
109
|
+
{
|
|
110
|
+
kind: "conflict",
|
|
111
|
+
message: "both .claude/skills and .agents/skills exist. Resolve manually: move the files you want to keep into .agents/skills, remove .claude/skills, then re-run this command."
|
|
112
|
+
}
|
|
113
|
+
];
|
|
114
|
+
}
|
|
115
|
+
if (!claudeStats && !agentsStats) {
|
|
116
|
+
return [{ kind: "noop", reason: "no .claude/skills found — nothing to do" }];
|
|
117
|
+
}
|
|
118
|
+
if (!claudeStats && agentsStats) {
|
|
119
|
+
return [
|
|
120
|
+
{
|
|
121
|
+
kind: "symlink",
|
|
122
|
+
target: targets.relativeTargetFromClaude,
|
|
123
|
+
path: targets.claudeDir
|
|
124
|
+
}
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
return [
|
|
128
|
+
{ kind: "rename", from: targets.claudeDir, to: targets.agentsDir },
|
|
129
|
+
{
|
|
130
|
+
kind: "symlink",
|
|
131
|
+
target: targets.relativeTargetFromClaude,
|
|
132
|
+
path: targets.claudeDir
|
|
133
|
+
}
|
|
134
|
+
];
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=utils-symlink-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-symlink-skills.js","sourceRoot":"","sources":["../../../src/cli/commands/utils-symlink-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { throwCommandNotFound } from "../command-not-found.js";
|
|
2
|
+
import { registerUtilsSymlinkAgentsCommand } from "./utils-symlink-agents.js";
|
|
3
|
+
import { registerUtilsSymlinkSkillsCommand } from "./utils-symlink-skills.js";
|
|
4
|
+
export function registerUtilsSymlinkCommand(parent, container) {
|
|
5
|
+
const symlink = parent
|
|
6
|
+
.command("symlink")
|
|
7
|
+
.description("Keep agent tool files interchangeable via symlinks.")
|
|
8
|
+
.usage("[options] [command]")
|
|
9
|
+
.addHelpCommand(false)
|
|
10
|
+
.allowExcessArguments()
|
|
11
|
+
.configureHelp({
|
|
12
|
+
formatHelp: () => [
|
|
13
|
+
"Poe - utils symlink",
|
|
14
|
+
"",
|
|
15
|
+
"Usage: poe-code utils symlink [options] [command]",
|
|
16
|
+
"",
|
|
17
|
+
"Keep agent tool files interchangeable via symlinks.",
|
|
18
|
+
"",
|
|
19
|
+
"Commands:",
|
|
20
|
+
" agents Symlink CLAUDE.md <- AGENTS.md (AGENTS.md is canonical).",
|
|
21
|
+
" skills Move .claude/skills into .agents/skills and symlink it back.",
|
|
22
|
+
""
|
|
23
|
+
].join("\n")
|
|
24
|
+
})
|
|
25
|
+
.action(function () {
|
|
26
|
+
if (this.args.length > 0) {
|
|
27
|
+
throwCommandNotFound({
|
|
28
|
+
container,
|
|
29
|
+
scope: "cli",
|
|
30
|
+
unknownCommand: this.args.at(0) ?? "",
|
|
31
|
+
helpArgs: ["utils", "symlink", "--help"],
|
|
32
|
+
moduleUrl: import.meta.url
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
this.help();
|
|
36
|
+
});
|
|
37
|
+
registerUtilsSymlinkAgentsCommand(symlink, container);
|
|
38
|
+
registerUtilsSymlinkSkillsCommand(symlink, container);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=utils-symlink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-symlink.js","sourceRoot":"","sources":["../../../src/cli/commands/utils-symlink.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAE9E,MAAM,UAAU,2BAA2B,CACzC,MAAe,EACf,SAAuB;IAEvB,MAAM,OAAO,GAAG,MAAM;SACnB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,qDAAqD,CAAC;SAClE,KAAK,CAAC,qBAAqB,CAAC;SAC5B,cAAc,CAAC,KAAK,CAAC;SACrB,oBAAoB,EAAE;SACtB,aAAa,CAAC;QACb,UAAU,EAAE,GAAG,EAAE,CAAC;YAChB,qBAAqB;YACrB,EAAE;YACF,mDAAmD;YACnD,EAAE;YACF,qDAAqD;YACrD,EAAE;YACF,WAAW;YACX,qEAAqE;YACrE,yEAAyE;YACzE,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;SACD,MAAM,CAAC;QACN,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,oBAAoB,CAAC;gBACnB,SAAS;gBACT,KAAK,EAAE,KAAK;gBACZ,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;gBACrC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;gBACxC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEL,iCAAiC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACtD,iCAAiC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { registerConfigCommand } from "./config.js";
|
|
2
|
+
import { registerUtilsSymlinkCommand } from "./utils-symlink.js";
|
|
2
3
|
export function registerUtilsCommand(program, container) {
|
|
3
4
|
const utils = program
|
|
4
5
|
.command("utils")
|
|
5
6
|
.description("Utility commands for inspecting and managing poe-code.")
|
|
6
7
|
.addHelpCommand(false);
|
|
7
8
|
registerConfigCommand(utils, container);
|
|
9
|
+
registerUtilsSymlinkCommand(utils, container);
|
|
8
10
|
}
|
|
9
11
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/cli/commands/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/cli/commands/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,SAAuB;IAC5E,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,wDAAwD,CAAC;SACrE,cAAc,CAAC,KAAK,CAAC,CAAC;IAEzB,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,2BAA2B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC"}
|
package/dist/cli/constants.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const FRONTIER_MODELS: readonly ["anthropic/claude-opus-4.7", "anthropic/claude-sonnet-4.6", "openai/gpt-5.3-codex", "openai/gpt-5.4", "google/gemini-3.1-pro"];
|
|
2
|
-
export declare const DEFAULT_FRONTIER_MODEL = "anthropic/claude-
|
|
2
|
+
export declare const DEFAULT_FRONTIER_MODEL = "anthropic/claude-opus-4.7";
|
|
3
3
|
export declare const DEFAULT_TEXT_MODEL = "anthropic/claude-sonnet-4.6";
|
|
4
4
|
export declare const DEFAULT_IMAGE_BOT = "google/nano-banana-pro";
|
|
5
5
|
export declare const DEFAULT_AUDIO_BOT = "elevenlabs/elevenlabs-v3";
|
|
@@ -20,7 +20,7 @@ export declare const DEFAULT_CODEX_MODEL: "openai/gpt-5.4";
|
|
|
20
20
|
export declare const KIMI_MODELS: readonly ["novitaai/kimi-k2.5", "novitaai/kimi-k2-thinking", "novitaai/kimi-k2.5-fw"];
|
|
21
21
|
export declare const DEFAULT_KIMI_MODEL: "novitaai/kimi-k2.5";
|
|
22
22
|
export declare const GOOSE_MODELS: readonly ["anthropic/claude-opus-4.7", "anthropic/claude-sonnet-4.6", "openai/gpt-5.3-codex", "openai/gpt-5.4", "google/gemini-3.1-pro"];
|
|
23
|
-
export declare const DEFAULT_GOOSE_MODEL = "anthropic/claude-
|
|
23
|
+
export declare const DEFAULT_GOOSE_MODEL = "anthropic/claude-opus-4.7";
|
|
24
24
|
export declare const DEFAULT_REASONING = "medium";
|
|
25
25
|
export declare const PROVIDER_NAME = "poe";
|
|
26
26
|
export declare const FEEDBACK_URL = "https://github.com/poe-platform/poe-code/issues";
|
package/dist/cli/constants.js
CHANGED
|
@@ -5,7 +5,7 @@ export const FRONTIER_MODELS = [
|
|
|
5
5
|
"openai/gpt-5.4",
|
|
6
6
|
"google/gemini-3.1-pro"
|
|
7
7
|
];
|
|
8
|
-
export const DEFAULT_FRONTIER_MODEL = "anthropic/claude-
|
|
8
|
+
export const DEFAULT_FRONTIER_MODEL = "anthropic/claude-opus-4.7";
|
|
9
9
|
export const DEFAULT_TEXT_MODEL = "anthropic/claude-sonnet-4.6";
|
|
10
10
|
export const DEFAULT_IMAGE_BOT = "google/nano-banana-pro";
|
|
11
11
|
export const DEFAULT_AUDIO_BOT = "elevenlabs/elevenlabs-v3";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,2BAA2B;IAC3B,6BAA6B;IAC7B,sBAAsB;IACtB,gBAAgB;IAChB,uBAAuB;CACf,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,2BAA2B;IAC3B,6BAA6B;IAC7B,sBAAsB;IACtB,gBAAgB;IAChB,uBAAuB;CACf,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAElE,MAAM,CAAC,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,4BAA4B;IACnC,MAAM,EAAE,6BAA6B;IACrC,IAAI,EAAE,2BAA2B;CACzB,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,MAAM,CAAC;AAErE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACnE,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,gBAAgB;IAChB,sBAAsB;IACtB,4BAA4B;IAC5B,sBAAsB;IACtB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB;IACpB,gBAAgB;IAChB,2BAA2B;IAC3B,2BAA2B;CACnB,CAAC;AACX,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,oBAAoB;IACpB,2BAA2B;IAC3B,uBAAuB;CACf,CAAC;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAC5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAE1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AACnC,MAAM,CAAC,MAAM,YAAY,GAAG,iDAAiD,CAAC"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
|
|
2
|
+
import type { FileSystem } from "../utils/file-system.js";
|
|
3
|
+
type PoeAgentConfigFs = Pick<FileSystem, "mkdir" | "readFile" | "writeFile">;
|
|
4
|
+
interface PoeAgentProgramOptions {
|
|
5
|
+
cwd?: string;
|
|
6
|
+
homeDir?: string;
|
|
7
|
+
fs?: PoeAgentConfigFs;
|
|
8
|
+
}
|
|
9
|
+
export declare function createPoeAgentProgram(options?: PoeAgentProgramOptions): Command;
|
|
10
|
+
export declare function normalizePoeAgentArgv(argv: string[]): string[];
|
|
3
11
|
export declare function poeAgentMain(): Promise<void>;
|
|
12
|
+
export {};
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import os from "node:os";
|
|
1
2
|
import path from "node:path";
|
|
3
|
+
import fsPromises from "node:fs/promises";
|
|
2
4
|
import { Command } from "commander";
|
|
3
5
|
import { renderAcpStream } from "@poe-code/agent-spawn";
|
|
4
6
|
import { log } from "@poe-code/design-system";
|
|
7
|
+
import { createConfigStore, resolveConfigPath, resolveProjectConfigPath } from "@poe-code/poe-code-config";
|
|
8
|
+
import { agentConfigScope } from "../services/config.js";
|
|
5
9
|
import { DEFAULT_FRONTIER_MODEL, FEEDBACK_URL } from "./constants.js";
|
|
6
10
|
import { ValidationError } from "./errors.js";
|
|
7
11
|
function parseMcpSpawnConfig(input) {
|
|
@@ -65,66 +69,104 @@ function resolveWorkingDirectory(baseDir, candidate) {
|
|
|
65
69
|
}
|
|
66
70
|
return path.resolve(baseDir, candidate);
|
|
67
71
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
.name("poe-agent")
|
|
72
|
-
.description("Run a single prompt through the Poe agent runtime.")
|
|
73
|
-
.version("0.0.0")
|
|
72
|
+
function configurePoeAgentRunOptions(command) {
|
|
73
|
+
return command
|
|
74
|
+
.option("-y, --yes", "Accept configured defaults without prompting")
|
|
74
75
|
.option("--model <model>", "Model identifier override")
|
|
76
|
+
.option("--prompt <text>", "Prompt text to send")
|
|
75
77
|
.option("-C, --cwd <path>", "Working directory for the agent")
|
|
76
78
|
.option("--stdin", "Read the prompt from stdin")
|
|
77
79
|
.option("--mcp-servers <json>", "MCP server config JSON: {name: {command, args?, env?}}")
|
|
78
80
|
.option("--mcp-config <json>", "[deprecated: use --mcp-servers]")
|
|
79
81
|
.argument("[prompt]", "Prompt text to send (or '-' / stdin)")
|
|
80
|
-
.argument("[args...]", "Additional arguments forwarded to the agent")
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
});
|
|
109
|
-
await renderAcpStream(events);
|
|
110
|
-
const result = await done;
|
|
111
|
-
if (result.exitCode !== 0) {
|
|
112
|
-
const detail = result.stderr.trim() || result.stdout.trim();
|
|
113
|
-
const suffix = detail ? `: ${detail}` : "";
|
|
114
|
-
throw new Error(`poe-agent failed with exit code ${result.exitCode}${suffix}`);
|
|
115
|
-
}
|
|
116
|
-
const trimmedStdout = result.stdout.trim();
|
|
117
|
-
if (trimmedStdout) {
|
|
118
|
-
log.info(trimmedStdout);
|
|
82
|
+
.argument("[args...]", "Additional arguments forwarded to the agent");
|
|
83
|
+
}
|
|
84
|
+
async function runPoeAgentCommand(options) {
|
|
85
|
+
const mcpServers = parseMcpSpawnConfig(options.commandOptions.mcpServers ?? options.commandOptions.mcpConfig);
|
|
86
|
+
const cwdOverride = resolveWorkingDirectory(options.baseDir, options.commandOptions.cwd);
|
|
87
|
+
const cwd = cwdOverride ?? options.baseDir;
|
|
88
|
+
const configStore = createConfigStore({
|
|
89
|
+
fs: options.fs,
|
|
90
|
+
filePath: resolveConfigPath(options.homeDir),
|
|
91
|
+
projectFilePath: resolveProjectConfigPath(cwd)
|
|
92
|
+
});
|
|
93
|
+
const configuredModel = (await configStore.scope(agentConfigScope).get("model")).trim();
|
|
94
|
+
const model = options.commandOptions.model ?? configuredModel;
|
|
95
|
+
if (options.commandOptions.yes && model.length === 0) {
|
|
96
|
+
throw new ValidationError("Error: --model is required in non-interactive mode (--yes) and no agent.model is configured.");
|
|
97
|
+
}
|
|
98
|
+
let promptText = options.commandOptions.prompt ?? options.promptText;
|
|
99
|
+
const wantsStdinFlag = options.commandOptions.stdin === true;
|
|
100
|
+
const shouldReadFromStdin = wantsStdinFlag ||
|
|
101
|
+
promptText === "-" ||
|
|
102
|
+
(!promptText && !process.stdin.isTTY);
|
|
103
|
+
if (wantsStdinFlag || promptText === "-") {
|
|
104
|
+
promptText = undefined;
|
|
105
|
+
}
|
|
106
|
+
if (!promptText && shouldReadFromStdin) {
|
|
107
|
+
const chunks = [];
|
|
108
|
+
for await (const chunk of process.stdin) {
|
|
109
|
+
chunks.push(chunk);
|
|
119
110
|
}
|
|
120
|
-
|
|
111
|
+
promptText = Buffer.concat(chunks).toString("utf8").trim();
|
|
112
|
+
}
|
|
113
|
+
if (!promptText) {
|
|
114
|
+
throw new ValidationError("No prompt provided via argument or stdin");
|
|
115
|
+
}
|
|
116
|
+
const { spawnPoeAgentWithAcp } = await import("../providers/poe-agent.js");
|
|
117
|
+
const { events, done } = spawnPoeAgentWithAcp({
|
|
118
|
+
prompt: promptText,
|
|
119
|
+
model: model || DEFAULT_FRONTIER_MODEL,
|
|
120
|
+
cwd,
|
|
121
|
+
mcpServers,
|
|
122
|
+
homeDir: options.homeDir,
|
|
123
|
+
configPath: resolveConfigPath(options.homeDir),
|
|
124
|
+
projectConfigPath: resolveProjectConfigPath(cwd),
|
|
125
|
+
fs: options.fs,
|
|
121
126
|
});
|
|
127
|
+
await renderAcpStream(events);
|
|
128
|
+
const result = await done;
|
|
129
|
+
if (result.exitCode !== 0) {
|
|
130
|
+
const detail = result.stderr.trim() || result.stdout.trim();
|
|
131
|
+
const suffix = detail ? `: ${detail}` : "";
|
|
132
|
+
throw new Error(`poe-agent failed with exit code ${result.exitCode}${suffix}`);
|
|
133
|
+
}
|
|
134
|
+
const trimmedStdout = result.stdout.trim();
|
|
135
|
+
if (trimmedStdout) {
|
|
136
|
+
log.info(trimmedStdout);
|
|
137
|
+
}
|
|
138
|
+
process.exitCode = result.exitCode;
|
|
139
|
+
}
|
|
140
|
+
export function createPoeAgentProgram(options = {}) {
|
|
141
|
+
const program = new Command();
|
|
142
|
+
const baseDir = options.cwd ?? process.cwd();
|
|
143
|
+
const homeDir = options.homeDir ?? os.homedir();
|
|
144
|
+
const fs = options.fs ?? fsPromises;
|
|
145
|
+
const runAction = async function (promptText, _args = [], commandOptions) {
|
|
146
|
+
await runPoeAgentCommand({
|
|
147
|
+
baseDir,
|
|
148
|
+
homeDir,
|
|
149
|
+
fs,
|
|
150
|
+
promptText,
|
|
151
|
+
commandOptions
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
configurePoeAgentRunOptions(program
|
|
155
|
+
.name("poe-agent")
|
|
156
|
+
.description("Run a single prompt through the Poe agent runtime.")
|
|
157
|
+
.version("0.0.0")).action(runAction);
|
|
122
158
|
return program;
|
|
123
159
|
}
|
|
160
|
+
export function normalizePoeAgentArgv(argv) {
|
|
161
|
+
if (argv[2] !== "run") {
|
|
162
|
+
return argv;
|
|
163
|
+
}
|
|
164
|
+
return [argv[0] ?? "node", argv[1] ?? "poe-agent", ...argv.slice(3)];
|
|
165
|
+
}
|
|
124
166
|
export async function poeAgentMain() {
|
|
125
167
|
const program = createPoeAgentProgram();
|
|
126
168
|
try {
|
|
127
|
-
await program.parseAsync(process.argv);
|
|
169
|
+
await program.parseAsync(normalizePoeAgentArgv(process.argv));
|
|
128
170
|
}
|
|
129
171
|
catch (error) {
|
|
130
172
|
if (error instanceof Error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poe-agent-main.js","sourceRoot":"","sources":["../../src/cli/poe-agent-main.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAuB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,eAAe,CACvB,gFAAgF,CACjF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,eAAe,CACvB,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAiC,CAAC,EAAE,CAAC;QAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,eAAe,CACvB,wBAAwB,IAAI,6CAA6C,CAC1E,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,KAAgC,CAAC;QAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,eAAe,CACvB,wBAAwB,IAAI,6CAA6C,CAC1E,CAAC;QACJ,CAAC;QAED,IAAI,IAA0B,CAAC;QAC/B,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACzF,MAAM,IAAI,eAAe,CACvB,wBAAwB,IAAI,oCAAoC,CACjE,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,KAAK,CAAC,IAAgB,CAAC;QAChC,CAAC;QAED,IAAI,GAAuC,CAAC;QAC5C,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpF,MAAM,IAAI,eAAe,CACvB,wBAAwB,IAAI,0CAA0C,CACvE,CAAC;YACJ,CAAC;YACD,GAAG,GAAG,EAAE,CAAC;YACT,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAA8B,CAAC,EAAE,CAAC;gBACtF,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACjC,MAAM,IAAI,eAAe,CACvB,wBAAwB,IAAI,0CAA0C,CACvE,CAAC;gBACJ,CAAC;gBACD,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,GAAG;YACd,OAAO;YACP,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAAe,EACf,SAAkB;IAElB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC;
|
|
1
|
+
{"version":3,"file":"poe-agent-main.js","sourceRoot":"","sources":["../../src/cli/poe-agent-main.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/program.js
CHANGED
|
@@ -8,6 +8,7 @@ import { text } from "@poe-code/design-system";
|
|
|
8
8
|
import { registerConfigureCommand } from "./commands/configure.js";
|
|
9
9
|
import { registerAgentCommand } from "./commands/agent.js";
|
|
10
10
|
import { registerSpawnCommand } from "./commands/spawn.js";
|
|
11
|
+
import { createPoeAgentSpawnHandler } from "./commands/spawn-poe-agent.js";
|
|
11
12
|
import { registerWrapCommand } from "./commands/wrap.js";
|
|
12
13
|
import { registerLoginCommand } from "./commands/login.js";
|
|
13
14
|
import { registerLogoutCommand } from "./commands/logout.js";
|
|
@@ -27,6 +28,7 @@ import { registerPlanCommand } from "./commands/plan.js";
|
|
|
27
28
|
import { registerRalphCommand } from "./commands/ralph.js";
|
|
28
29
|
import { registerExperimentCommand } from "./commands/experiment.js";
|
|
29
30
|
import { registerLaunchCommand } from "./commands/launch.js";
|
|
31
|
+
import { registerMemoryCommand } from "./commands/memory.js";
|
|
30
32
|
import packageJson from "../../package.json" with { type: "json" };
|
|
31
33
|
import { throwCommandNotFound } from "./command-not-found.js";
|
|
32
34
|
import { detectExecutionContext, formatCliHelpCommand, formatCliUsageCommand } from "../utils/execution-context.js";
|
|
@@ -68,6 +70,12 @@ const ROOT_HELP_COMMAND_SPECS = [
|
|
|
68
70
|
{ path: ["plan"], args: "[question]" },
|
|
69
71
|
{ path: ["plan", "install"] },
|
|
70
72
|
{ path: ["plan", "browse"] },
|
|
73
|
+
{ path: ["plan", "markdown-read"], args: "<file>" },
|
|
74
|
+
{ path: ["plan", "markdown-read-section"], args: "<file> <section>" },
|
|
75
|
+
{ path: ["plan", "markdown-reader-mcp"] },
|
|
76
|
+
{ path: ["memory", "init"] },
|
|
77
|
+
{ path: ["memory", "ls"] },
|
|
78
|
+
{ path: ["memory", "status"] },
|
|
71
79
|
{ path: ["experiment", "install"] },
|
|
72
80
|
{ path: ["experiment", "run"] },
|
|
73
81
|
{ path: ["experiment", "journal"] },
|
|
@@ -304,7 +312,10 @@ function bootstrapProgram(container) {
|
|
|
304
312
|
registerInstallCommand(program, container);
|
|
305
313
|
registerConfigureCommand(program, container);
|
|
306
314
|
registerAgentCommand(program, container);
|
|
307
|
-
registerSpawnCommand(program, container
|
|
315
|
+
registerSpawnCommand(program, container, {
|
|
316
|
+
handlers: { "poe-agent": createPoeAgentSpawnHandler() },
|
|
317
|
+
extraServices: ["poe-agent"]
|
|
318
|
+
});
|
|
308
319
|
registerWrapCommand(program, container);
|
|
309
320
|
registerGenerateCommand(program, container);
|
|
310
321
|
registerTestCommand(program, container);
|
|
@@ -320,6 +331,7 @@ function bootstrapProgram(container) {
|
|
|
320
331
|
registerRalphCommand(program, container);
|
|
321
332
|
registerExperimentCommand(program, container);
|
|
322
333
|
registerLaunchCommand(program, container);
|
|
334
|
+
registerMemoryCommand(program, container);
|
|
323
335
|
program
|
|
324
336
|
.command(ghGroup.name)
|
|
325
337
|
.description(ghGroup.description ?? "")
|