@pome-sh/cli 0.31.0 → 0.32.0

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "pome-sh",
3
- "version": "0.31.0",
4
- "git_sha": "0c525a5023e8941e14fb2420e222fc90baea0140",
5
- "build_time": "2026-08-27T11:38:56.203Z"
3
+ "version": "0.32.0",
4
+ "git_sha": "816bd6d21eb0380e78441fd7f8e419ccb9f86ba0",
5
+ "build_time": "2026-08-27T11:54:47.200Z"
6
6
  }
@@ -1,4 +1,4 @@
1
- import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-EMIRZNHN.js';
1
+ import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-KNULR6S4.js';
2
2
  import { readSeedFileText, parseSeedFileText, soleTwinOf, seedsForTwins } from './chunk-IHKUFGYW.js';
3
3
  import { readManifest, normalizeManifestTwins } from './chunk-2V5A7NWP.js';
4
4
  import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema, isMultiTwinSeedEnvelope } from './chunk-72CG3JNL.js';
@@ -1,4 +1,4 @@
1
- import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-EMIRZNHN.js';
1
+ import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-KNULR6S4.js';
2
2
  import { createRecorder, bootTwin } from './chunk-WJFRBXL5.js';
3
3
  import { getAvailablePort } from './chunk-XDU6TD4O.js';
4
4
  import { buildEgressAllowlist, readBlockedEgress } from './chunk-CBFKZZBR.js';
@@ -181,24 +181,18 @@ var stripeSeedStateSchema = z.object({
181
181
  account_id: z.string().min(1).optional()
182
182
  })
183
183
  ).default([]),
184
- customers: z.array(z.record(z.string(), z.unknown())).default([]),
185
- products: z.array(z.record(z.string(), z.unknown())).default([]),
186
- prices: z.array(z.record(z.string(), z.unknown())).default([]),
184
+ failure_injection: z.array(stripeFailureInjectionRuleSchema).default([]),
187
185
  payment_intents: z.array(z.record(z.string(), z.unknown())).default([]),
188
186
  charges: z.array(z.record(z.string(), z.unknown())).default([]),
189
- events: z.array(z.record(z.string(), z.unknown())).default([]),
190
- balances: z.array(z.record(z.string(), z.unknown())).default([]),
191
- failure_injection: z.array(stripeFailureInjectionRuleSchema).default([])
187
+ refunds: z.array(z.record(z.string(), z.unknown())).default([]),
188
+ balance_transactions: z.array(z.record(z.string(), z.unknown())).default([])
192
189
  }).strict();
193
190
  var slackSeedStateSchema = z.object({
194
191
  team: z.record(z.string(), z.unknown()).optional(),
195
192
  users: z.array(z.record(z.string(), z.unknown())).default([]),
196
193
  channels: z.array(z.record(z.string(), z.unknown())).default([]),
197
- // Permissive like its siblings — the vendored `parseSeed` does the
198
- // regex-level validation. It has to be listed at all because `.strict()`
199
- // REJECTS an unlisted key: without this line a slack seed declaring `files`
200
- // fails to parse rather than being stripped.
201
- files: z.array(z.record(z.string(), z.unknown())).default([])
194
+ files: z.array(z.record(z.string(), z.unknown())).default([]),
195
+ emoji: z.array(z.record(z.string(), z.unknown())).default([])
202
196
  }).strict();
203
197
  var seedStateSchema = z.union([
204
198
  gmailSeedSchema,
@@ -1,7 +1,7 @@
1
1
  import { newGroupId, reassuranceBox, twinReadyLine, trialsHeaderLine, trialLine, summaryLines, evaluatingLine, criterionPhrase } from './chunk-RGZBC7NF.js';
2
2
  import { DemoCapacityError, capacityLabel, parseCapacityMarker, capacityKindFrom } from './chunk-ZX4WNSZ5.js';
3
- import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-GNMDGZJF.js';
4
- import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-EMIRZNHN.js';
3
+ import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-KIADZ7UM.js';
4
+ import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-KNULR6S4.js';
5
5
  import './chunk-NW7HGA2K.js';
6
6
  import './chunk-3T5XN64P.js';
7
7
  import './chunk-Q5NBPR57.js';
@@ -1,6 +1,6 @@
1
1
  import { newGroupId, criterionPhrase } from './chunk-RGZBC7NF.js';
2
- import { runTaskHosted, resolveRunAgentIdentity } from './chunk-GUAGU65D.js';
3
- import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-EMIRZNHN.js';
2
+ import { runTaskHosted, resolveRunAgentIdentity } from './chunk-BK42YBOX.js';
3
+ import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-KNULR6S4.js';
4
4
  import './chunk-IHKUFGYW.js';
5
5
  import './chunk-NW7HGA2K.js';
6
6
  import './chunk-3T5XN64P.js';
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { DEFAULT_CONTROL_PLANE_URL, DEFAULT_DASHBOARD_URL, clearLocalCredentials, friendlyHostedError, SESSION_TWIN_NAMES, runSessionCreate, runSessionList, runSessionStop, resolveCredentials, runTaskHosted, discoverRunSet, VERDICT_ARTIFACT_VERSION, persistCredentialsAfterLogin, DEFAULT_DOCS_SITE_ORIGIN, resolveSeams, resolveCachedAgentId, readLinkCache, postAgentResolver, writeLinkCache, ensurePomeGitignored } from '../../chunk-GUAGU65D.js';
3
- import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-GNMDGZJF.js';
4
- import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-EMIRZNHN.js';
2
+ import { DEFAULT_CONTROL_PLANE_URL, DEFAULT_DASHBOARD_URL, clearLocalCredentials, friendlyHostedError, SESSION_TWIN_NAMES, runSessionCreate, runSessionList, runSessionStop, resolveCredentials, runTaskHosted, discoverRunSet, VERDICT_ARTIFACT_VERSION, persistCredentialsAfterLogin, DEFAULT_DOCS_SITE_ORIGIN, resolveSeams, resolveCachedAgentId, readLinkCache, postAgentResolver, writeLinkCache, ensurePomeGitignored } from '../../chunk-BK42YBOX.js';
3
+ import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-KIADZ7UM.js';
4
+ import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-KNULR6S4.js';
5
5
  import '../../chunk-IHKUFGYW.js';
6
6
  import '../../chunk-NW7HGA2K.js';
7
7
  import { GMAIL_CHECKS } from '../../chunk-JM6VS62R.js';
@@ -4622,7 +4622,7 @@ var DEFAULT_AGENT_COMMAND = `node ${DEFAULT_AGENT_FILE}`;
4622
4622
  var MANIFEST_SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
4623
4623
  var MAX_UNREADABLE_PATHS_SHOWN = 5;
4624
4624
  function readPackageVersion() {
4625
- if ("0.31.0".length > 0) return "0.31.0";
4625
+ if ("0.32.0".length > 0) return "0.32.0";
4626
4626
  try {
4627
4627
  const here = dirname(fileURLToPath(import.meta.url));
4628
4628
  const candidates = [
@@ -5107,7 +5107,7 @@ function createProgram() {
5107
5107
  taskForRuns.config.runs
5108
5108
  );
5109
5109
  if (k > 1) {
5110
- const { runTrialGroup } = await import('../../runTrialGroup-T2H7T54Z.js');
5110
+ const { runTrialGroup } = await import('../../runTrialGroup-W7C4Z5DN.js');
5111
5111
  const fileForRerun = relative(process.cwd(), file);
5112
5112
  const rerunCommand = defaultTask ? options.trials !== void 0 ? `pome run -n ${k}` : "pome run" : `pome run ${fileForRerun && !fileForRerun.startsWith("..") ? fileForRerun : file} -n ${k}`;
5113
5113
  const groupResult = await runTrialGroup({
@@ -5201,7 +5201,7 @@ function createProgram() {
5201
5201
  process.exitCode = 5;
5202
5202
  return;
5203
5203
  }
5204
- const { runDemo } = await import('../../runDemo-PSXUXCR5.js');
5204
+ const { runDemo } = await import('../../runDemo-3JEAM6CM.js');
5205
5205
  const result = await runDemo({
5206
5206
  apiBase: opts.apiUrl.replace(/\/$/, ""),
5207
5207
  dashboardBase: process.env.POME_DASHBOARD_URL ?? DEFAULT_DASHBOARD_URL,
@@ -5399,10 +5399,13 @@ function createProgram() {
5399
5399
  const { runTwinStartCommand } = await import('../../twinStart-VUCN4CFY.js');
5400
5400
  await runTwinStartCommand(name, options);
5401
5401
  });
5402
- twin.command("seed").argument("<name...>", `Twin name (${TWIN_NAME_LIST.join(" | ")}). Repeat for one file covering several.`).option("--out <path>", "Write to this file instead of stdout. Refuses to overwrite.").description(
5402
+ twin.command("seed").argument("<name...>", `Twin name (${TWIN_NAME_LIST.join(" | ")}). Repeat for one file covering several.`).option("--out <path>", "Write to this file instead of stdout. Refuses to overwrite.").option(
5403
+ "--for-task",
5404
+ "Emit the shape a `<task>.seed.json` sidecar takes \u2014 flat for one twin, the per-twin envelope for more, the rule the task's `## Config` twins already set. Without it you get a seed file for `--seed`, which is always the envelope."
5405
+ ).description(
5403
5406
  "Print a starter seed file for a twin, generated from the twin's own starting state"
5404
5407
  ).action(async (names, options) => {
5405
- const { runTwinSeedCommand } = await import('../../twinSeed-XIKTIHX2.js');
5408
+ const { runTwinSeedCommand } = await import('../../twinSeed-QCYKAY3I.js');
5406
5409
  await runTwinSeedCommand(names, options);
5407
5410
  });
5408
5411
  twin.command("reset").argument("[name]", "Twin name (default: github)", "github").description("Reset standalone twin state").action(async (name) => {
@@ -1,7 +1,7 @@
1
1
  import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-SDBBGCE7.js';
2
2
  import { writeFile } from 'node:fs/promises';
3
3
 
4
- async function generateSeedFile(twins) {
4
+ async function generateSeedFile(twins, opts = {}) {
5
5
  if (twins.length === 0) {
6
6
  throw new Error(`No twin specified. Pass at least one of: ${TWIN_NAMES.join(", ")}.`);
7
7
  }
@@ -19,7 +19,8 @@ async function generateSeedFile(twins) {
19
19
  const entry = TWIN_REGISTRY[twin];
20
20
  envelope[twin] = await entry.parseSeed(await entry.defaultSeed());
21
21
  }
22
- return `${JSON.stringify(envelope, null, 2)}
22
+ const body = opts.forTask && twins.length === 1 ? envelope[twins[0]] : envelope;
23
+ return `${JSON.stringify(body, null, 2)}
23
24
  `;
24
25
  }
25
26
  async function writeSeedFile(path, text) {
@@ -35,14 +36,17 @@ async function writeSeedFile(path, text) {
35
36
  }
36
37
  }
37
38
  async function runTwinSeedCommand(names, options = {}) {
38
- const text = await generateSeedFile(names);
39
+ const text = await generateSeedFile(names, { forTask: options.forTask });
39
40
  if (options.out === void 0) {
40
41
  process.stdout.write(text);
41
42
  return;
42
43
  }
43
44
  await writeSeedFile(options.out, text);
44
- console.error(`Wrote ${options.out} \u2014 the ${names.join(" + ")} starting seed.`);
45
- console.error(`Boot it: pome twin start ${names[0]} --seed ${options.out}`);
45
+ const what = options.forTask ? "task seed" : "starting seed";
46
+ console.error(`Wrote ${options.out} \u2014 the ${names.join(" + ")} ${what}.`);
47
+ console.error(
48
+ options.forTask ? `Put it next to a task whose \`## Config\` reads twins: [${names.join(", ")}], named <task>.seed.json.` : `Boot it: pome twin start ${names[0]} --seed ${options.out}`
49
+ );
46
50
  }
47
51
 
48
52
  export { generateSeedFile, runTwinSeedCommand, writeSeedFile };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/cli",
3
- "version": "0.31.0",
3
+ "version": "0.32.0",
4
4
  "description": "Digital-twin testing for AI agents \u2014 run tasks against resettable local or hosted twins and record tool-call traces for evaluation on pome.sh.",
5
5
  "keywords": [
6
6
  "ai",