poe-code 3.0.45 → 3.0.46

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.
@@ -3,6 +3,4 @@ import type { CliContainer } from "../container.js";
3
3
  export declare function registerTestCommand(program: Command, container: CliContainer): Command;
4
4
  export declare function executeTest(program: Command, container: CliContainer, service: string, options?: {
5
5
  isolated?: boolean;
6
- stdin?: boolean;
7
- model?: string;
8
6
  }): Promise<void>;
@@ -1,8 +1,6 @@
1
1
  import { buildProviderContext, createExecutionResources, resolveCommandFlags, resolveServiceAdapter, formatServiceList } from "./shared.js";
2
2
  import { resolveServiceArgument } from "./configure.js";
3
3
  import { resolveIsolatedEnvDetails } from "../isolated-env.js";
4
- import { formatCommandRunnerResult, stdoutMatchesExpected } from "../../utils/command-checks.js";
5
- import { spawnStreaming, getSpawnConfig } from "@poe-code/agent-spawn";
6
4
  import { withSpinner } from "@poe-code/design-system";
7
5
  export function registerTestCommand(program, container) {
8
6
  const serviceNames = container.registry
@@ -13,17 +11,13 @@ export function registerTestCommand(program, container) {
13
11
  return program
14
12
  .command("test")
15
13
  .description("Run agent health checks.")
16
- .option("--stdin", "Verify stdin prompt support via spawn")
17
- .option("--model <model>", "Model identifier override (requires --stdin)")
18
14
  .argument("[agent]", serviceDescription)
19
15
  .option("--isolated", "Run the health check using isolated configuration.")
20
16
  .action(async function (service) {
21
17
  const resolved = await resolveServiceArgument(program, container, service, { action: "test" });
22
18
  const opts = this.opts();
23
19
  await executeTest(this, container, resolved, {
24
- isolated: Boolean(opts.isolated),
25
- stdin: Boolean(opts.stdin),
26
- model: opts.model
20
+ isolated: Boolean(opts.isolated)
27
21
  });
28
22
  });
29
23
  }
@@ -34,9 +28,6 @@ export async function executeTest(program, container, service, options = {}) {
34
28
  const resources = createExecutionResources(container, flags, `test:${canonicalService}`);
35
29
  resources.logger.intro(`test ${canonicalService}`);
36
30
  const providerContext = buildProviderContext(container, adapter, resources);
37
- if (options.model && !options.stdin) {
38
- throw new Error("The --model option requires --stdin.");
39
- }
40
31
  const isolatedDetails = options.isolated && adapter.isolatedEnv
41
32
  ? await resolveIsolatedEnvDetails(container.env, adapter.isolatedEnv, adapter.name, container.fs)
42
33
  : null;
@@ -49,102 +40,33 @@ export async function executeTest(program, container, service, options = {}) {
49
40
  flags
50
41
  });
51
42
  }
52
- if (options.stdin) {
53
- if (!adapter.supportsStdinPrompt) {
54
- throw new Error(`${adapter.label} does not support stdin prompts.`);
55
- }
56
- if (flags.dryRun) {
57
- resources.context.complete({
58
- success: `Tested ${adapter.label}.`,
59
- dry: `Dry run: would run a stdin spawn test for ${adapter.label}.`
60
- });
61
- return;
62
- }
63
- const expectedOutput = "STDIN_OK";
64
- const prompt = `Output exactly: ${expectedOutput}`;
65
- const result = await withSpinner({
66
- message: `Testing ${adapter.label} via stdin...`,
67
- fn: async () => {
68
- const spawnConfig = getSpawnConfig(canonicalService);
69
- if (spawnConfig) {
70
- const streaming = spawnStreaming({
71
- agentId: canonicalService,
72
- prompt,
73
- useStdin: true,
74
- model: options.model
75
- });
76
- let output = "";
77
- for await (const event of streaming.events) {
78
- if (event.event === "agent_message") {
79
- output += event.text;
80
- }
81
- }
82
- const spawnResult = await streaming.done;
83
- return {
84
- stdout: output,
85
- stderr: spawnResult.stderr,
86
- exitCode: spawnResult.exitCode
87
- };
88
- }
89
- return container.registry.invoke(canonicalService, "spawn", async (entry) => {
90
- if (!entry.spawn) {
91
- throw new Error(`Agent "${canonicalService}" does not support spawn.`);
43
+ await withSpinner({
44
+ message: `Testing ${adapter.label}...`,
45
+ fn: () => container.registry.invoke(canonicalService, "test", async (entry) => {
46
+ if (!entry.test) {
47
+ throw new Error(`Agent "${canonicalService}" does not support test.`);
48
+ }
49
+ const activeContext = isolatedDetails
50
+ ? {
51
+ ...providerContext,
52
+ runCheck: async (check) => {
53
+ await check.run({
54
+ isDryRun: providerContext.logger.context.dryRun,
55
+ runCommand: (command, args) => resources.context.runCommand("poe-code", [
56
+ "wrap",
57
+ canonicalService,
58
+ "--",
59
+ ...args
60
+ ]),
61
+ logDryRun: (message) => providerContext.logger.dryRun(message)
62
+ });
92
63
  }
93
- const output = await entry.spawn(providerContext, {
94
- prompt,
95
- useStdin: true,
96
- model: options.model
97
- });
98
- return output;
99
- });
100
- },
101
- stopMessage: () => `${adapter.label} stdin test`
102
- });
103
- if (!result) {
104
- throw new Error(`Stdin spawn test for ${adapter.label} did not return command output.`);
105
- }
106
- if (result.exitCode !== 0) {
107
- throw new Error([
108
- `Stdin spawn test for ${adapter.label} failed with exit code ${result.exitCode}.`,
109
- formatCommandRunnerResult(result)
110
- ].join("\n"));
111
- }
112
- if (!stdoutMatchesExpected(result.stdout, expectedOutput)) {
113
- throw new Error([
114
- `Stdin spawn test for ${adapter.label} failed: expected "${expectedOutput}" but received "${result.stdout.trim()}".`,
115
- formatCommandRunnerResult(result)
116
- ].join("\n"));
117
- }
118
- }
119
- else {
120
- await withSpinner({
121
- message: `Testing ${adapter.label}...`,
122
- fn: () => container.registry.invoke(canonicalService, "test", async (entry) => {
123
- if (!entry.test) {
124
- throw new Error(`Agent "${canonicalService}" does not support test.`);
125
64
  }
126
- const activeContext = isolatedDetails
127
- ? {
128
- ...providerContext,
129
- runCheck: async (check) => {
130
- await check.run({
131
- isDryRun: providerContext.logger.context.dryRun,
132
- runCommand: (command, args) => resources.context.runCommand("poe-code", [
133
- "wrap",
134
- canonicalService,
135
- "--",
136
- ...args
137
- ]),
138
- logDryRun: (message) => providerContext.logger.dryRun(message)
139
- });
140
- }
141
- }
142
- : providerContext;
143
- await entry.test(activeContext);
144
- }),
145
- stopMessage: () => `${adapter.label} health check`
146
- });
147
- }
65
+ : providerContext;
66
+ await entry.test(activeContext);
67
+ }),
68
+ stopMessage: () => `${adapter.label} health check`
69
+ });
148
70
  const dryMessage = canonicalService === "claude-code"
149
71
  ? `${adapter.label} test (dry run)`
150
72
  : `Dry run: would test ${adapter.label}.`;
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -17071,28 +17071,6 @@ ${stdout}
17071
17071
  stderr:
17072
17072
  ${stderr}`;
17073
17073
  }
17074
- function stdoutMatchesExpected(stdout, expected) {
17075
- const trimmed = stdout.trim();
17076
- if (trimmed === expected) {
17077
- return true;
17078
- }
17079
- const lines = stdout.split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
17080
- if (lines.some((line) => line === expected)) {
17081
- return true;
17082
- }
17083
- for (const line of lines) {
17084
- if (line[0] !== "{") continue;
17085
- try {
17086
- const parsed = JSON.parse(line);
17087
- if (parsed.type === "result" && parsed.result === expected) {
17088
- return true;
17089
- }
17090
- } catch {
17091
- continue;
17092
- }
17093
- }
17094
- return false;
17095
- }
17096
17074
  function createSpawnHealthCheck(agentId, options) {
17097
17075
  const prompt = `Output exactly: ${options.expectedOutput}`;
17098
17076
  const { binaryName, args } = buildSpawnArgs(agentId, {
@@ -19220,7 +19198,7 @@ init_isolated_env();
19220
19198
  function registerTestCommand(program, container) {
19221
19199
  const serviceNames = container.registry.list().filter((service) => typeof service.test === "function").map((service) => service.name);
19222
19200
  const serviceDescription = `Agent to test${formatServiceList(serviceNames)}`;
19223
- return program.command("test").description("Run agent health checks.").option("--stdin", "Verify stdin prompt support via spawn").option("--model <model>", "Model identifier override (requires --stdin)").argument(
19201
+ return program.command("test").description("Run agent health checks.").argument(
19224
19202
  "[agent]",
19225
19203
  serviceDescription
19226
19204
  ).option("--isolated", "Run the health check using isolated configuration.").action(async function(service) {
@@ -19232,9 +19210,7 @@ function registerTestCommand(program, container) {
19232
19210
  );
19233
19211
  const opts = this.opts();
19234
19212
  await executeTest(this, container, resolved, {
19235
- isolated: Boolean(opts.isolated),
19236
- stdin: Boolean(opts.stdin),
19237
- model: opts.model
19213
+ isolated: Boolean(opts.isolated)
19238
19214
  });
19239
19215
  });
19240
19216
  }
@@ -19253,9 +19229,6 @@ async function executeTest(program, container, service, options = {}) {
19253
19229
  adapter,
19254
19230
  resources
19255
19231
  );
19256
- if (options.model && !options.stdin) {
19257
- throw new Error("The --model option requires --stdin.");
19258
- }
19259
19232
  const isolatedDetails = options.isolated && adapter.isolatedEnv ? await resolveIsolatedEnvDetails(
19260
19233
  container.env,
19261
19234
  adapter.isolatedEnv,
@@ -19271,109 +19244,31 @@ async function executeTest(program, container, service, options = {}) {
19271
19244
  flags
19272
19245
  });
19273
19246
  }
19274
- if (options.stdin) {
19275
- if (!adapter.supportsStdinPrompt) {
19276
- throw new Error(`${adapter.label} does not support stdin prompts.`);
19277
- }
19278
- if (flags.dryRun) {
19279
- resources.context.complete({
19280
- success: `Tested ${adapter.label}.`,
19281
- dry: `Dry run: would run a stdin spawn test for ${adapter.label}.`
19282
- });
19283
- return;
19284
- }
19285
- const expectedOutput = "STDIN_OK";
19286
- const prompt = `Output exactly: ${expectedOutput}`;
19287
- const result = await withSpinner({
19288
- message: `Testing ${adapter.label} via stdin...`,
19289
- fn: async () => {
19290
- const spawnConfig = getSpawnConfig(canonicalService);
19291
- if (spawnConfig) {
19292
- const streaming = spawnStreaming({
19293
- agentId: canonicalService,
19294
- prompt,
19295
- useStdin: true,
19296
- model: options.model
19247
+ await withSpinner({
19248
+ message: `Testing ${adapter.label}...`,
19249
+ fn: () => container.registry.invoke(canonicalService, "test", async (entry) => {
19250
+ if (!entry.test) {
19251
+ throw new Error(`Agent "${canonicalService}" does not support test.`);
19252
+ }
19253
+ const activeContext = isolatedDetails ? {
19254
+ ...providerContext,
19255
+ runCheck: async (check2) => {
19256
+ await check2.run({
19257
+ isDryRun: providerContext.logger.context.dryRun,
19258
+ runCommand: (command, args) => resources.context.runCommand("poe-code", [
19259
+ "wrap",
19260
+ canonicalService,
19261
+ "--",
19262
+ ...args
19263
+ ]),
19264
+ logDryRun: (message) => providerContext.logger.dryRun(message)
19297
19265
  });
19298
- let output = "";
19299
- for await (const event of streaming.events) {
19300
- if (event.event === "agent_message") {
19301
- output += event.text;
19302
- }
19303
- }
19304
- const spawnResult = await streaming.done;
19305
- return {
19306
- stdout: output,
19307
- stderr: spawnResult.stderr,
19308
- exitCode: spawnResult.exitCode
19309
- };
19310
19266
  }
19311
- return container.registry.invoke(
19312
- canonicalService,
19313
- "spawn",
19314
- async (entry) => {
19315
- if (!entry.spawn) {
19316
- throw new Error(`Agent "${canonicalService}" does not support spawn.`);
19317
- }
19318
- const output = await entry.spawn(providerContext, {
19319
- prompt,
19320
- useStdin: true,
19321
- model: options.model
19322
- });
19323
- return output;
19324
- }
19325
- );
19326
- },
19327
- stopMessage: () => `${adapter.label} stdin test`
19328
- });
19329
- if (!result) {
19330
- throw new Error(
19331
- `Stdin spawn test for ${adapter.label} did not return command output.`
19332
- );
19333
- }
19334
- if (result.exitCode !== 0) {
19335
- throw new Error(
19336
- [
19337
- `Stdin spawn test for ${adapter.label} failed with exit code ${result.exitCode}.`,
19338
- formatCommandRunnerResult(result)
19339
- ].join("\n")
19340
- );
19341
- }
19342
- if (!stdoutMatchesExpected(result.stdout, expectedOutput)) {
19343
- throw new Error(
19344
- [
19345
- `Stdin spawn test for ${adapter.label} failed: expected "${expectedOutput}" but received "${result.stdout.trim()}".`,
19346
- formatCommandRunnerResult(result)
19347
- ].join("\n")
19348
- );
19349
- }
19350
- } else {
19351
- await withSpinner({
19352
- message: `Testing ${adapter.label}...`,
19353
- fn: () => container.registry.invoke(canonicalService, "test", async (entry) => {
19354
- if (!entry.test) {
19355
- throw new Error(`Agent "${canonicalService}" does not support test.`);
19356
- }
19357
- const activeContext = isolatedDetails ? {
19358
- ...providerContext,
19359
- runCheck: async (check2) => {
19360
- await check2.run({
19361
- isDryRun: providerContext.logger.context.dryRun,
19362
- runCommand: (command, args) => resources.context.runCommand("poe-code", [
19363
- "wrap",
19364
- canonicalService,
19365
- "--",
19366
- ...args
19367
- ]),
19368
- logDryRun: (message) => providerContext.logger.dryRun(message)
19369
- });
19370
- }
19371
- } : providerContext;
19372
- await entry.test(activeContext);
19373
- }),
19374
- stopMessage: () => `${adapter.label} health check`
19375
- });
19376
- }
19267
+ } : providerContext;
19268
+ await entry.test(activeContext);
19269
+ }),
19270
+ stopMessage: () => `${adapter.label} health check`
19271
+ });
19377
19272
  const dryMessage = canonicalService === "claude-code" ? `${adapter.label} test (dry run)` : `Dry run: would test ${adapter.label}.`;
19378
19273
  resources.context.complete({
19379
19274
  success: `Tested ${adapter.label}.`,
@@ -36380,7 +36275,7 @@ function registerModelsCommand(program, container) {
36380
36275
  // package.json
36381
36276
  var package_default = {
36382
36277
  name: "poe-code",
36383
- version: "3.0.45",
36278
+ version: "3.0.46",
36384
36279
  description: "CLI tool to configure Poe API for developer workflows.",
36385
36280
  type: "module",
36386
36281
  workspaces: [