@pome-sh/cli 0.23.30 → 0.23.32

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.23.30",
4
- "git_sha": "6f38ef654b65dfd8453a205b31af5cee4b385290",
5
- "build_time": "2026-08-12T22:28:09.137Z"
3
+ "version": "0.23.32",
4
+ "git_sha": "07c526747a7654a4aea3b1d8f417da3c9d653238",
5
+ "build_time": "2026-08-13T01:00:51.116Z"
6
6
  }
@@ -183,7 +183,7 @@ async function checkTwinReachable(_configDir) {
183
183
  });
184
184
  let harness;
185
185
  try {
186
- const { bootTwin } = await import('./twinHarness-AZ6QKBXA.js');
186
+ const { bootTwin } = await import('./twinHarness-XO47SYBH.js');
187
187
  harness = await bootTwin({
188
188
  twin: "github",
189
189
  seedState: void 0,
@@ -128,9 +128,9 @@ var TWIN_REGISTRY = {
128
128
  portEnvName: "GMAIL_TWIN_PORT",
129
129
  tokenEnvName: "POME_GMAIL_TOKEN",
130
130
  version: package_default4.version,
131
- defaultSeed: async () => (await import('./src-2MGTP2RK.js')).defaultSeedState(),
131
+ defaultSeed: async () => (await import('./src-A6EH5KVF.js')).defaultSeedState(),
132
132
  async boot({ seedState, runId, recorder }) {
133
- const { createGmailTwinApp, GmailDomain, openGmailTwinDatabase, parseSeed } = await import('./src-2MGTP2RK.js');
133
+ const { createGmailTwinApp, GmailDomain, openGmailTwinDatabase, parseSeed } = await import('./src-A6EH5KVF.js');
134
134
  const db = openGmailTwinDatabase(":memory:");
135
135
  const seed = parseSeed(seedState);
136
136
  const domain = new GmailDomain(db);
@@ -1,5 +1,5 @@
1
1
  import { readManifest, normalizeManifestTwins } from './chunk-ABM3CMQB.js';
2
- import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-AR2GK5VT.js';
2
+ import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-ZTINFLSV.js';
3
3
  import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema } from './chunk-X66JOOO7.js';
4
4
  import { redactSecrets, redactEvent } from './chunk-SG6ZTIMT.js';
5
5
  import { existsSync } from 'node:fs';
@@ -1,7 +1,7 @@
1
1
  import { getAvailablePort } from './chunk-XDU6TD4O.js';
2
2
  import { buildEgressAllowlist, readBlockedEgress } from './chunk-CBFKZZBR.js';
3
- import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-AR2GK5VT.js';
4
- import { createRecorder, bootTwin } from './chunk-G47ZEYXD.js';
3
+ import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-ZTINFLSV.js';
4
+ import { createRecorder, bootTwin } from './chunk-YL4FHI3J.js';
5
5
  import { eventSchema } from './chunk-VBATFCWR.js';
6
6
  import { redactSecrets, redactEvent } from './chunk-SG6ZTIMT.js';
7
7
  import { serve } from '@hono/node-server';
@@ -429,10 +429,10 @@ var mailboxLabelCount = defineCheck({
429
429
  },
430
430
  evaluate({ mailbox, count, label }, { final }) {
431
431
  const wanted = Number(count);
432
- if (final.messages == null || final.messageLabels == null) {
432
+ if (final.messages == null || final.messageLabels == null || final.labels == null) {
433
433
  return { passed: false, status: "skipped", reason: "state_incomplete" };
434
434
  }
435
- if (isTruncated(final, "messages") || isTruncated(final, "messageLabels")) {
435
+ if (isTruncated(final, "messages") || isTruncated(final, "messageLabels") || isTruncated(final, "labels")) {
436
436
  return { passed: false, status: "skipped", reason: "collection_truncated" };
437
437
  }
438
438
  if (final.mailboxes != null && !final.mailboxes.some((mb) => (mb.email ?? "").toLowerCase() === mailbox.toLowerCase())) {
@@ -489,10 +489,10 @@ var oneMessagePerRecipient = defineCheck({
489
489
  },
490
490
  evaluate({ label, count }, { final }) {
491
491
  const wanted = parseCount(count);
492
- if (final.messages == null || final.messageLabels == null) {
492
+ if (final.messages == null || final.messageLabels == null || final.labels == null) {
493
493
  return { passed: false, status: "skipped", reason: "state_incomplete" };
494
494
  }
495
- if (isTruncated(final, "messages") || isTruncated(final, "messageLabels")) {
495
+ if (isTruncated(final, "messages") || isTruncated(final, "messageLabels") || isTruncated(final, "labels")) {
496
496
  return { passed: false, status: "skipped", reason: "collection_truncated" };
497
497
  }
498
498
  const ids = labelIdsFor(final, label);
@@ -1,4 +1,4 @@
1
- import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-MPIJ2E3V.js';
1
+ import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-3OVV6JUQ.js';
2
2
  import { createFileBackedRecorderStore, createRecorderStore } from './chunk-OW7VVW6X.js';
3
3
 
4
4
  // src/recorder/recorder.ts
@@ -2,7 +2,7 @@ import { criterionSchema, finalizeResponseSchema, HostedDiscardRefusedError, Hos
2
2
  import { seedSchema, parseSeed, defaultSeedState as defaultSeedState$2 } from './chunk-KIUIKAVU.js';
3
3
  import { gmailSeedSchema, defaultSeedState } from './chunk-NJ246QPJ.js';
4
4
  import { linearSeedSchema, defaultSeedState as defaultSeedState$1 } from './chunk-ZKID2HS3.js';
5
- import { isTwinName, TWIN_REGISTRY } from './chunk-MPIJ2E3V.js';
5
+ import { isTwinName, TWIN_REGISTRY } from './chunk-3OVV6JUQ.js';
6
6
  import { toTwinHttpEventRow } from './chunk-OW7VVW6X.js';
7
7
  import { redactEvent, redactSecrets } from './chunk-SG6ZTIMT.js';
8
8
  import { mkdir, appendFile, writeFile, readFile } from 'node:fs/promises';
@@ -1,16 +1,16 @@
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-N4AWB7EO.js';
3
+ import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-GEC6MJV5.js';
4
4
  import { getAvailablePort } from './chunk-XDU6TD4O.js';
5
5
  import './chunk-CBFKZZBR.js';
6
- import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-AR2GK5VT.js';
6
+ import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-ZTINFLSV.js';
7
7
  import './chunk-NW7HGA2K.js';
8
8
  import { HostedQuotaError, HostedOrchError } from './chunk-X66JOOO7.js';
9
9
  import './chunk-KIUIKAVU.js';
10
10
  import './chunk-NJ246QPJ.js';
11
11
  import './chunk-ZKID2HS3.js';
12
- import { bootTwin } from './chunk-G47ZEYXD.js';
13
- import './chunk-MPIJ2E3V.js';
12
+ import { bootTwin } from './chunk-YL4FHI3J.js';
13
+ import './chunk-3OVV6JUQ.js';
14
14
  import './chunk-OW7VVW6X.js';
15
15
  import './chunk-VBATFCWR.js';
16
16
  import './chunk-SG6ZTIMT.js';
@@ -1,13 +1,13 @@
1
1
  import { newGroupId, criterionPhrase } from './chunk-RGZBC7NF.js';
2
- import { runTaskHosted, resolveRunAgentIdentity } from './chunk-EUQI4NCT.js';
2
+ import { runTaskHosted, resolveRunAgentIdentity } from './chunk-A2LGBYJG.js';
3
3
  import './chunk-ABM3CMQB.js';
4
- import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-AR2GK5VT.js';
4
+ import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-ZTINFLSV.js';
5
5
  import './chunk-NW7HGA2K.js';
6
6
  import { HostedQuotaError, HostedTrialError } from './chunk-X66JOOO7.js';
7
7
  import './chunk-KIUIKAVU.js';
8
8
  import './chunk-NJ246QPJ.js';
9
9
  import './chunk-ZKID2HS3.js';
10
- import './chunk-MPIJ2E3V.js';
10
+ import './chunk-3OVV6JUQ.js';
11
11
  import './chunk-OW7VVW6X.js';
12
12
  import './chunk-VBATFCWR.js';
13
13
  import './chunk-SG6ZTIMT.js';
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env node
2
- import { DEFAULT_CONTROL_PLANE_URL, DEFAULT_DASHBOARD_URL, clearLocalCredentials, friendlyHostedError, runSessionCreate, runSessionList, runSessionStop, resolveCredentials, runTaskHosted, discoverRunSet, VERDICT_ARTIFACT_VERSION, persistCredentialsAfterLogin, DEFAULT_DOCS_SITE_ORIGIN, resolveSeams, resolveCachedAgentId, readLinkCache, postAgentResolver, writeLinkCache, ensurePomeGitignored } from '../../chunk-EUQI4NCT.js';
2
+ import { DEFAULT_CONTROL_PLANE_URL, DEFAULT_DASHBOARD_URL, clearLocalCredentials, friendlyHostedError, runSessionCreate, runSessionList, runSessionStop, resolveCredentials, runTaskHosted, discoverRunSet, VERDICT_ARTIFACT_VERSION, persistCredentialsAfterLogin, DEFAULT_DOCS_SITE_ORIGIN, resolveSeams, resolveCachedAgentId, readLinkCache, postAgentResolver, writeLinkCache, ensurePomeGitignored } from '../../chunk-A2LGBYJG.js';
3
3
  import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-ABM3CMQB.js';
4
- import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-N4AWB7EO.js';
4
+ import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-GEC6MJV5.js';
5
5
  import '../../chunk-XDU6TD4O.js';
6
6
  import '../../chunk-CBFKZZBR.js';
7
- import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-AR2GK5VT.js';
7
+ import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-ZTINFLSV.js';
8
8
  import '../../chunk-NW7HGA2K.js';
9
9
  import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-X66JOOO7.js';
10
10
  import { TAPE_ASSERTABLE_TOOLS } from '../../chunk-FKZZWWYC.js';
11
11
  import { seedSchema } from '../../chunk-KIUIKAVU.js';
12
12
  import { SLACK_CHECKS } from '../../chunk-IDNSKKEC.js';
13
- import { GMAIL_CHECKS } from '../../chunk-SE44FKWH.js';
13
+ import { GMAIL_CHECKS } from '../../chunk-KTVFRR56.js';
14
14
  import '../../chunk-NJ246QPJ.js';
15
15
  import { LINEAR_CHECKS } from '../../chunk-XBT6ZLBG.js';
16
16
  import '../../chunk-ZKID2HS3.js';
17
17
  import { oneOf, defineCheck, repoRef, VACUITY_SENTINEL_NUMBER, childStatePath, VACUITY_SENTINEL, statePath, templateSlots, renderCheck, checksDigest, checkPattern, checkNearMissPattern } from '../../chunk-JWJYNAWI.js';
18
- import '../../chunk-G47ZEYXD.js';
19
- import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-MPIJ2E3V.js';
18
+ import '../../chunk-YL4FHI3J.js';
19
+ import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-3OVV6JUQ.js';
20
20
  import '../../chunk-OW7VVW6X.js';
21
21
  import { isLegacyEventRow, eventSchema } from '../../chunk-VBATFCWR.js';
22
22
  import { redactEvent, redactSecrets } from '../../chunk-SG6ZTIMT.js';
@@ -4541,7 +4541,7 @@ var DEFAULT_AGENT_COMMAND = `node ${DEFAULT_AGENT_FILE}`;
4541
4541
  var MANIFEST_SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
4542
4542
  var MAX_UNREADABLE_PATHS_SHOWN = 5;
4543
4543
  function readPackageVersion() {
4544
- if ("0.23.30".length > 0) return "0.23.30";
4544
+ if ("0.23.32".length > 0) return "0.23.32";
4545
4545
  try {
4546
4546
  const here = dirname(fileURLToPath(import.meta.url));
4547
4547
  const candidates = [
@@ -4996,7 +4996,7 @@ function createProgram() {
4996
4996
  return;
4997
4997
  }
4998
4998
  {
4999
- const { runDoctorChecks } = await import('../../checks-OU4WFQRV.js');
4999
+ const { runDoctorChecks } = await import('../../checks-PZSMAVLY.js');
5000
5000
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5001
5001
  const doctorReport = await runDoctorChecks({ mode: useLocal ? "full" : "hosted" });
5002
5002
  if (!doctorReport.ok) {
@@ -5034,7 +5034,7 @@ function createProgram() {
5034
5034
  taskForRuns.config.runs
5035
5035
  );
5036
5036
  if (k > 1) {
5037
- const { runTrialGroup } = await import('../../runTrialGroup-CE7ZJEJV.js');
5037
+ const { runTrialGroup } = await import('../../runTrialGroup-WXDRCVUE.js');
5038
5038
  const fileForRerun = relative(process.cwd(), file);
5039
5039
  const rerunCommand = defaultTask ? options.trials !== void 0 ? `pome run -n ${k}` : "pome run" : `pome run ${fileForRerun && !fileForRerun.startsWith("..") ? fileForRerun : file} -n ${k}`;
5040
5040
  const groupResult = await runTrialGroup({
@@ -5128,7 +5128,7 @@ function createProgram() {
5128
5128
  process.exitCode = 5;
5129
5129
  return;
5130
5130
  }
5131
- const { runDemo } = await import('../../runDemo-U4ZJZLUR.js');
5131
+ const { runDemo } = await import('../../runDemo-EV3CQBDR.js');
5132
5132
  const result = await runDemo({
5133
5133
  apiBase: opts.apiUrl.replace(/\/$/, ""),
5134
5134
  dashboardBase: process.env.POME_DASHBOARD_URL ?? DEFAULT_DASHBOARD_URL,
@@ -5146,7 +5146,7 @@ function createProgram() {
5146
5146
  program.command("doctor").description(
5147
5147
  "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."
5148
5148
  ).action(async () => {
5149
- const { runDoctorChecks } = await import('../../checks-OU4WFQRV.js');
5149
+ const { runDoctorChecks } = await import('../../checks-PZSMAVLY.js');
5150
5150
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5151
5151
  const report = await runDoctorChecks();
5152
5152
  for (const line of renderDoctorReport(report, { passNote: true })) console.error(line);
@@ -5322,7 +5322,7 @@ function createProgram() {
5322
5322
  ).description(
5323
5323
  "Start a standalone twin as a long-lived foreground server (Ctrl-C to stop)"
5324
5324
  ).action(async (name, options) => {
5325
- const { runTwinStartCommand } = await import('../../twinStart-56AVX7VI.js');
5325
+ const { runTwinStartCommand } = await import('../../twinStart-J42TT766.js');
5326
5326
  await runTwinStartCommand(name, options);
5327
5327
  });
5328
5328
  twin.command("reset").argument("[name]", "Twin name (default: github)", "github").description("Reset standalone twin state").action(async (name) => {
@@ -1,4 +1,4 @@
1
- export { GMAIL_CHECKS } from './chunk-SE44FKWH.js';
1
+ export { GMAIL_CHECKS } from './chunk-KTVFRR56.js';
2
2
  import { gmailErrorEnvelope, gmailSeedSchema, parseSeed, defaultSeedState, notFound, invalidArgument, checkFault, unsupported, validateSearchQuery, SEARCH_MAILBOX_MESSAGE_BUDGET, GmailError, parseSearchQuery, CATEGORY_LABELS, parseDate, parseSize, KNOWN_FIELDS, parseDuration, assertHasOperator } from './chunk-NJ246QPJ.js';
3
3
  export { DEFAULT_GMAIL_AGENT_EMAIL, GmailError, SEARCH_MAILBOX_MESSAGE_BUDGET, agentPathInboxMailbox, defaultSeedState, gmailErrorEnvelope, gmailSeedSchema, loadSeedFromEnv, parseSearchQuery, parseSeed, validateSearchQuery } from './chunk-NJ246QPJ.js';
4
4
  import './chunk-JWJYNAWI.js';
@@ -2511,6 +2511,14 @@ var implementations = {
2511
2511
  });
2512
2512
  return {
2513
2513
  threads: page.items.map((thread) => threadResult(thread, input.view === "THREAD_VIEW_METADATA_ONLY" ? "metadata" : "minimal")),
2514
+ // `threads` above is the PAGE; this is the whole match set, which is
2515
+ // why the count is exact rather than an estimate. Google documents the
2516
+ // field as a lower bound, so an exact count satisfies the contract —
2517
+ // and the advertised type is int64-as-STRING, not a number (F-1417).
2518
+ // Unconditional: it is the answer to "how many matched", and 0 matches
2519
+ // is an answer. Emitting it only when non-zero would make an absent
2520
+ // field mean two different things.
2521
+ resultCountEstimate: String(threads.length),
2514
2522
  ...page.nextPageToken ? { nextPageToken: page.nextPageToken } : {}
2515
2523
  };
2516
2524
  }
@@ -0,0 +1,5 @@
1
+ export { UnsupportedTwinError, bootTwin } from './chunk-YL4FHI3J.js';
2
+ export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-3OVV6JUQ.js';
3
+ import './chunk-OW7VVW6X.js';
4
+ import './chunk-VBATFCWR.js';
5
+ import './chunk-SG6ZTIMT.js';
@@ -1,5 +1,5 @@
1
- import { bootTwin } from './chunk-G47ZEYXD.js';
2
- import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-MPIJ2E3V.js';
1
+ import { bootTwin } from './chunk-YL4FHI3J.js';
2
+ import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-3OVV6JUQ.js';
3
3
  import './chunk-OW7VVW6X.js';
4
4
  import './chunk-VBATFCWR.js';
5
5
  import './chunk-SG6ZTIMT.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/cli",
3
- "version": "0.23.30",
3
+ "version": "0.23.32",
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",
@@ -1,5 +0,0 @@
1
- export { UnsupportedTwinError, bootTwin } from './chunk-G47ZEYXD.js';
2
- export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-MPIJ2E3V.js';
3
- import './chunk-OW7VVW6X.js';
4
- import './chunk-VBATFCWR.js';
5
- import './chunk-SG6ZTIMT.js';