@pome-sh/cli 0.29.0 → 0.29.1

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.29.0",
4
- "git_sha": "b065b0336a80c35d63c53bed262be6b037bfec76",
5
- "build_time": "2026-08-26T21:23:55.631Z"
3
+ "version": "0.29.1",
4
+ "git_sha": "c89dc0c40e2f591a46a0802285b043acf5b084bf",
5
+ "build_time": "2026-08-26T22:31:38.093Z"
6
6
  }
@@ -1,6 +1,6 @@
1
- import { findManifestPath, readManifest } from './chunk-VO2XUPZC.js';
1
+ import { findManifestPath, readManifest } from './chunk-XWGZ5C7Y.js';
2
2
  import { getAvailablePort } from './chunk-XDU6TD4O.js';
3
- import './chunk-E7WJ3SRP.js';
3
+ import './chunk-OTFDQT3H.js';
4
4
  import { buildEgressAllowlist } from './chunk-CBFKZZBR.js';
5
5
  import './chunk-6KJC4BTO.js';
6
6
  import './chunk-SG6ZTIMT.js';
@@ -1,7 +1,7 @@
1
- import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-XAQGX7K2.js';
1
+ import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-VORBQXJN.js';
2
2
  import { readSeedFileText, parseSeedFileText, soleTwinOf, seedsForTwins } from './chunk-B7PA7UDX.js';
3
- import { readManifest, normalizeManifestTwins } from './chunk-VO2XUPZC.js';
4
- import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema, isMultiTwinSeedEnvelope } from './chunk-E7WJ3SRP.js';
3
+ import { readManifest, normalizeManifestTwins } from './chunk-XWGZ5C7Y.js';
4
+ import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema, isMultiTwinSeedEnvelope } from './chunk-OTFDQT3H.js';
5
5
  import { redactSecrets, redactEvent } from './chunk-SG6ZTIMT.js';
6
6
  import { randomUUID, createHash } from 'node:crypto';
7
7
  import { rm, readFile, stat, mkdir, writeFile, chmod, mkdtemp, readdir, rename } from 'node:fs/promises';
@@ -740,17 +740,39 @@ function isMultiTwinSeedEnvelope(twins) {
740
740
  return twins.length > 1;
741
741
  }
742
742
  var taskClassSchema = z.enum(["conformance", "restraint", "adversarial"]);
743
- var taskConfigSchema = z.object({
744
- twins: z.array(z.string()).default(["github"]),
745
- class: taskClassSchema.optional(),
746
- // conformance vs the exam half
747
- timeout: z.number().int().positive().default(60),
748
- // seconds
749
- runs: z.number().int().positive().default(1),
750
- passThreshold: z.number().min(0).max(100).default(100),
751
- judge: judgeModelSchema.default("claude-haiku-4-5")
752
- // CLI's BYOK config decides which endpoint serves this
753
- });
743
+ var TASK_CONFIG_SNAKE_CASE_KEY_MAP = {
744
+ pass_threshold: "passThreshold"
745
+ };
746
+ function normalizeTaskConfigKeys(value) {
747
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
748
+ return value;
749
+ }
750
+ const record = value;
751
+ let out = null;
752
+ for (const [aliasKey, canonicalKey] of Object.entries(TASK_CONFIG_SNAKE_CASE_KEY_MAP)) {
753
+ if (!(aliasKey in record)) continue;
754
+ out ??= { ...record };
755
+ if (!(canonicalKey in record)) {
756
+ out[canonicalKey] = record[aliasKey];
757
+ }
758
+ delete out[aliasKey];
759
+ }
760
+ return out ?? value;
761
+ }
762
+ var taskConfigSchema = z.preprocess(
763
+ normalizeTaskConfigKeys,
764
+ z.object({
765
+ twins: z.array(z.string()).default(["github"]),
766
+ class: taskClassSchema.optional(),
767
+ // conformance vs the exam half
768
+ timeout: z.number().int().positive().default(60),
769
+ // seconds
770
+ runs: z.number().int().positive().default(1),
771
+ passThreshold: z.number().min(0).max(100).default(100),
772
+ judge: judgeModelSchema.default("claude-haiku-4-5")
773
+ // CLI's BYOK config decides which endpoint serves this
774
+ })
775
+ );
754
776
  z.object({
755
777
  slug: z.string().min(1),
756
778
  title: z.string().min(1),
@@ -1267,4 +1289,4 @@ function exitCodeFor(err) {
1267
1289
  return 2;
1268
1290
  }
1269
1291
 
1270
- export { HostedAuthError, HostedDiscardRefusedError, HostedOrchError, HostedQuotaError, HostedTrialError, HostedUsageError, MOUNTED_TWINS, SLUG_RE, agentResponseSchema, createEvalSessionResponseSchema, createSessionResponseSchema, criterionSchema, deriveAgentSlug, exitCodeFor, finalizeResponseSchema, isMultiTwinSeedEnvelope, manifestSchema, sessionPublicSchema, submitResultResponseSchema };
1292
+ export { HostedAuthError, HostedDiscardRefusedError, HostedOrchError, HostedQuotaError, HostedTrialError, HostedUsageError, MOUNTED_TWINS, SLUG_RE, agentResponseSchema, createEvalSessionResponseSchema, createSessionResponseSchema, criterionSchema, deriveAgentSlug, exitCodeFor, finalizeResponseSchema, isMultiTwinSeedEnvelope, manifestSchema, normalizeTaskConfigKeys, sessionPublicSchema, submitResultResponseSchema };
@@ -1,7 +1,7 @@
1
1
  import { gmailSeedSchema, defaultSeedState } from './chunk-3T5XN64P.js';
2
2
  import { linearSeedSchema, defaultSeedState as defaultSeedState$1 } from './chunk-Q5NBPR57.js';
3
3
  import { isTwinName, TWIN_REGISTRY } from './chunk-SRG22BIH.js';
4
- import { criterionSchema, finalizeResponseSchema, HostedDiscardRefusedError, HostedOrchError, HostedAuthError, HostedQuotaError, submitResultResponseSchema, createEvalSessionResponseSchema, createSessionResponseSchema, sessionPublicSchema } from './chunk-E7WJ3SRP.js';
4
+ import { criterionSchema, normalizeTaskConfigKeys, finalizeResponseSchema, HostedDiscardRefusedError, HostedOrchError, HostedAuthError, HostedQuotaError, submitResultResponseSchema, createEvalSessionResponseSchema, createSessionResponseSchema, sessionPublicSchema } from './chunk-OTFDQT3H.js';
5
5
  import { seedSchema, parseSeed, defaultSeedState as defaultSeedState$2 } from './chunk-HJX25USP.js';
6
6
  import { toTwinHttpEventRow } from './chunk-E665XWYU.js';
7
7
  import { redactEvent, redactSecrets } from './chunk-SG6ZTIMT.js';
@@ -155,13 +155,16 @@ var taskCriterionSchema = criterionSchema.extend({
155
155
  alwaysScored: z.boolean().optional()
156
156
  });
157
157
  var taskClassSchema = z.enum(["conformance", "restraint", "adversarial"]);
158
- var taskConfigSchema = z.object({
159
- twins: z.array(z.string()).default(["github"]),
160
- class: taskClassSchema.optional(),
161
- timeout: z.number().int().positive().default(60),
162
- runs: z.number().int().positive().default(1),
163
- passThreshold: z.number().min(0).max(100).default(100)
164
- });
158
+ var taskConfigSchema = z.preprocess(
159
+ normalizeTaskConfigKeys,
160
+ z.object({
161
+ twins: z.array(z.string()).default(["github"]),
162
+ class: taskClassSchema.optional(),
163
+ timeout: z.number().int().positive().default(60),
164
+ runs: z.number().int().positive().default(1),
165
+ passThreshold: z.number().min(0).max(100).default(100)
166
+ })
167
+ );
165
168
  var stripeFailureInjectionRuleSchema = z.object({
166
169
  method: z.string().min(1),
167
170
  path: z.string().min(1),
@@ -1,4 +1,4 @@
1
- import { HostedOrchError, manifestSchema, deriveAgentSlug, SLUG_RE } from './chunk-E7WJ3SRP.js';
1
+ import { HostedOrchError, manifestSchema, deriveAgentSlug, SLUG_RE } from './chunk-OTFDQT3H.js';
2
2
  import { readFile, writeFile } from 'node:fs/promises';
3
3
  import { resolve, join, dirname } from 'node:path';
4
4
  import { stringify, parse } from 'yaml';
@@ -1,4 +1,4 @@
1
- import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-XAQGX7K2.js';
1
+ import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-VORBQXJN.js';
2
2
  import { createRecorder, bootTwin } from './chunk-S6JLWI4S.js';
3
3
  import { getAvailablePort } from './chunk-XDU6TD4O.js';
4
4
  import { buildEgressAllowlist, readBlockedEgress } from './chunk-CBFKZZBR.js';
@@ -1,14 +1,14 @@
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-IYMDPMMZ.js';
4
- import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-XAQGX7K2.js';
3
+ import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-ZYQK4PNC.js';
4
+ import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-VORBQXJN.js';
5
5
  import './chunk-NW7HGA2K.js';
6
6
  import './chunk-3T5XN64P.js';
7
7
  import './chunk-Q5NBPR57.js';
8
8
  import { bootTwin } from './chunk-S6JLWI4S.js';
9
9
  import './chunk-SRG22BIH.js';
10
10
  import { getAvailablePort } from './chunk-XDU6TD4O.js';
11
- import { HostedQuotaError, HostedOrchError } from './chunk-E7WJ3SRP.js';
11
+ import { HostedQuotaError, HostedOrchError } from './chunk-OTFDQT3H.js';
12
12
  import './chunk-CBFKZZBR.js';
13
13
  import './chunk-HJX25USP.js';
14
14
  import './chunk-E665XWYU.js';
@@ -1,13 +1,13 @@
1
1
  import { newGroupId, criterionPhrase } from './chunk-RGZBC7NF.js';
2
- import { runTaskHosted, resolveRunAgentIdentity } from './chunk-MRCYOSBM.js';
3
- import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-XAQGX7K2.js';
2
+ import { runTaskHosted, resolveRunAgentIdentity } from './chunk-EFX32JE3.js';
3
+ import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-VORBQXJN.js';
4
4
  import './chunk-B7PA7UDX.js';
5
5
  import './chunk-NW7HGA2K.js';
6
6
  import './chunk-3T5XN64P.js';
7
7
  import './chunk-Q5NBPR57.js';
8
8
  import './chunk-SRG22BIH.js';
9
- import './chunk-VO2XUPZC.js';
10
- import { HostedQuotaError, HostedTrialError } from './chunk-E7WJ3SRP.js';
9
+ import './chunk-XWGZ5C7Y.js';
10
+ import { HostedQuotaError, HostedTrialError } from './chunk-OTFDQT3H.js';
11
11
  import './chunk-HJX25USP.js';
12
12
  import './chunk-E665XWYU.js';
13
13
  import './chunk-6KJC4BTO.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-MRCYOSBM.js';
3
- import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-IYMDPMMZ.js';
4
- import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-XAQGX7K2.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-EFX32JE3.js';
3
+ import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-ZYQK4PNC.js';
4
+ import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-VORBQXJN.js';
5
5
  import '../../chunk-B7PA7UDX.js';
6
6
  import '../../chunk-NW7HGA2K.js';
7
7
  import { GMAIL_CHECKS } from '../../chunk-JM6VS62R.js';
@@ -10,9 +10,9 @@ import { LINEAR_CHECKS } from '../../chunk-XBT6ZLBG.js';
10
10
  import '../../chunk-Q5NBPR57.js';
11
11
  import '../../chunk-S6JLWI4S.js';
12
12
  import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-SRG22BIH.js';
13
- import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-VO2XUPZC.js';
13
+ import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-XWGZ5C7Y.js';
14
14
  import '../../chunk-XDU6TD4O.js';
15
- import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-E7WJ3SRP.js';
15
+ import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-OTFDQT3H.js';
16
16
  import '../../chunk-CBFKZZBR.js';
17
17
  import { TAPE_ASSERTABLE_TOOLS } from '../../chunk-C4BVTUA3.js';
18
18
  import { seedSchema } from '../../chunk-HJX25USP.js';
@@ -4653,7 +4653,7 @@ var DEFAULT_AGENT_COMMAND = `node ${DEFAULT_AGENT_FILE}`;
4653
4653
  var MANIFEST_SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
4654
4654
  var MAX_UNREADABLE_PATHS_SHOWN = 5;
4655
4655
  function readPackageVersion() {
4656
- if ("0.29.0".length > 0) return "0.29.0";
4656
+ if ("0.29.1".length > 0) return "0.29.1";
4657
4657
  try {
4658
4658
  const here = dirname(fileURLToPath(import.meta.url));
4659
4659
  const candidates = [
@@ -5114,7 +5114,7 @@ function createProgram() {
5114
5114
  return;
5115
5115
  }
5116
5116
  {
5117
- const { runDoctorChecks } = await import('../../checks-JR4OEKZM.js');
5117
+ const { runDoctorChecks } = await import('../../checks-BZ5L2YNC.js');
5118
5118
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5119
5119
  const doctorReport = await runDoctorChecks({ mode: useLocal ? "full" : "hosted" });
5120
5120
  if (!doctorReport.ok) {
@@ -5152,7 +5152,7 @@ function createProgram() {
5152
5152
  taskForRuns.config.runs
5153
5153
  );
5154
5154
  if (k > 1) {
5155
- const { runTrialGroup } = await import('../../runTrialGroup-XEBG225L.js');
5155
+ const { runTrialGroup } = await import('../../runTrialGroup-IFRZWVRB.js');
5156
5156
  const fileForRerun = relative(process.cwd(), file);
5157
5157
  const rerunCommand = defaultTask ? options.trials !== void 0 ? `pome run -n ${k}` : "pome run" : `pome run ${fileForRerun && !fileForRerun.startsWith("..") ? fileForRerun : file} -n ${k}`;
5158
5158
  const groupResult = await runTrialGroup({
@@ -5246,7 +5246,7 @@ function createProgram() {
5246
5246
  process.exitCode = 5;
5247
5247
  return;
5248
5248
  }
5249
- const { runDemo } = await import('../../runDemo-GBPVF5AA.js');
5249
+ const { runDemo } = await import('../../runDemo-NKSDEHRR.js');
5250
5250
  const result = await runDemo({
5251
5251
  apiBase: opts.apiUrl.replace(/\/$/, ""),
5252
5252
  dashboardBase: process.env.POME_DASHBOARD_URL ?? DEFAULT_DASHBOARD_URL,
@@ -5264,7 +5264,7 @@ function createProgram() {
5264
5264
  program.command("doctor").description(
5265
5265
  "Check the agent\u2194twin wiring: pome.json (or pome.yaml) present + valid, the local twin boots + serves, requests routed to the twin (not a hardcoded production host), egress floor active. On failure prints one named cause (file:line where knowable) + one concrete fix and exits non-zero."
5266
5266
  ).action(async () => {
5267
- const { runDoctorChecks } = await import('../../checks-JR4OEKZM.js');
5267
+ const { runDoctorChecks } = await import('../../checks-BZ5L2YNC.js');
5268
5268
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5269
5269
  const report = await runDoctorChecks();
5270
5270
  for (const line of renderDoctorReport(report, { passNote: true })) console.error(line);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/cli",
3
- "version": "0.29.0",
3
+ "version": "0.29.1",
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",