@pome-sh/cli 0.23.48 → 0.23.50

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.48",
4
- "git_sha": "0dd8faf57062539f921e76f510d0f2cea847a104",
5
- "build_time": "2026-08-13T20:30:07.412Z"
3
+ "version": "0.23.50",
4
+ "git_sha": "5bce2d403766321d74eda19b4281b05bd6f65037",
5
+ "build_time": "2026-08-14T19:50:13.287Z"
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-WIWX5USC.js');
186
+ const { bootTwin } = await import('./twinHarness-5UJQR4QM.js');
187
187
  harness = await bootTwin({
188
188
  twin: "github",
189
189
  seedState: void 0,
@@ -0,0 +1,8 @@
1
+ // ../packages/twin-github/dist/src/tape-assertable-tools.js
2
+ var TAPE_ASSERTABLE_TOOLS = [
3
+ "create_commit_status",
4
+ "create_check_run",
5
+ "add_issue_comment"
6
+ ];
7
+
8
+ export { TAPE_ASSERTABLE_TOOLS };
@@ -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-BZ3RQU56.js';
2
+ import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-UZDZM67T.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 { randomUUID, createHash } from 'node:crypto';
@@ -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-BZ3RQU56.js';
4
- import { createRecorder, bootTwin } from './chunk-WMHGTTRH.js';
3
+ import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-UZDZM67T.js';
4
+ import { createRecorder, bootTwin } from './chunk-SIJP5OCX.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';
@@ -1,6 +1,6 @@
1
1
  // ../packages/twin-github/package.json
2
2
  var package_default = {
3
- version: "0.11.0"};
3
+ version: "0.12.0"};
4
4
 
5
5
  // ../packages/twin-slack/package.json
6
6
  var package_default2 = {
@@ -39,7 +39,7 @@ var TWIN_REGISTRY = {
39
39
  defaultSeedState,
40
40
  GitHubDomain,
41
41
  openGitHubCloneDatabase
42
- } = await import('./src-7Z35KM4S.js');
42
+ } = await import('./src-BHCAQQF7.js');
43
43
  const db = openGitHubCloneDatabase();
44
44
  const domain = new GitHubDomain(db);
45
45
  domain.seed(seedState === void 0 ? defaultSeedState() : seedState);
@@ -173,7 +173,7 @@ var TWIN_REGISTRY = {
173
173
  }
174
174
  };
175
175
  async function createGitHubSmokeApp() {
176
- const { createGitHubCloneApp } = await import('./src-7Z35KM4S.js');
176
+ const { createGitHubCloneApp } = await import('./src-BHCAQQF7.js');
177
177
  return createGitHubCloneApp();
178
178
  }
179
179
  function defaultPortFor(twin, env = process.env) {
@@ -1,4 +1,4 @@
1
- import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-DZU4LAYD.js';
1
+ import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-R6YWMPGO.js';
2
2
  import { createFileBackedRecorderStore, createRecorderStore } from './chunk-5EGHN6H4.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-B22TYIEM.js';
3
3
  import { gmailSeedSchema, defaultSeedState } from './chunk-NJ246QPJ.js';
4
4
  import { linearSeedSchema, defaultSeedState as defaultSeedState$1 } from './chunk-IZIZC7ZW.js';
5
- import { isTwinName, TWIN_REGISTRY } from './chunk-DZU4LAYD.js';
5
+ import { isTwinName, TWIN_REGISTRY } from './chunk-R6YWMPGO.js';
6
6
  import { toTwinHttpEventRow } from './chunk-5EGHN6H4.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-XWQK4XXD.js';
3
+ import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-P6PGKXS5.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-BZ3RQU56.js';
6
+ import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-UZDZM67T.js';
7
7
  import './chunk-NW7HGA2K.js';
8
8
  import { HostedQuotaError, HostedOrchError } from './chunk-X66JOOO7.js';
9
9
  import './chunk-B22TYIEM.js';
10
10
  import './chunk-NJ246QPJ.js';
11
11
  import './chunk-IZIZC7ZW.js';
12
- import { bootTwin } from './chunk-WMHGTTRH.js';
13
- import './chunk-DZU4LAYD.js';
12
+ import { bootTwin } from './chunk-SIJP5OCX.js';
13
+ import './chunk-R6YWMPGO.js';
14
14
  import './chunk-5EGHN6H4.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-4YGE4L6O.js';
2
+ import { runTaskHosted, resolveRunAgentIdentity } from './chunk-ECMAQH5H.js';
3
3
  import './chunk-ABM3CMQB.js';
4
- import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-BZ3RQU56.js';
4
+ import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-UZDZM67T.js';
5
5
  import './chunk-NW7HGA2K.js';
6
6
  import { HostedQuotaError, HostedTrialError } from './chunk-X66JOOO7.js';
7
7
  import './chunk-B22TYIEM.js';
8
8
  import './chunk-NJ246QPJ.js';
9
9
  import './chunk-IZIZC7ZW.js';
10
- import './chunk-DZU4LAYD.js';
10
+ import './chunk-R6YWMPGO.js';
11
11
  import './chunk-5EGHN6H4.js';
12
12
  import './chunk-VBATFCWR.js';
13
13
  import './chunk-SG6ZTIMT.js';
@@ -1,13 +1,13 @@
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-4YGE4L6O.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-ECMAQH5H.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-XWQK4XXD.js';
4
+ import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-P6PGKXS5.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-BZ3RQU56.js';
7
+ import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-UZDZM67T.js';
8
8
  import '../../chunk-NW7HGA2K.js';
9
9
  import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-X66JOOO7.js';
10
- import { TAPE_ASSERTABLE_TOOLS } from '../../chunk-FKZZWWYC.js';
10
+ import { TAPE_ASSERTABLE_TOOLS } from '../../chunk-C4BVTUA3.js';
11
11
  import { seedSchema } from '../../chunk-B22TYIEM.js';
12
12
  import { SLACK_CHECKS } from '../../chunk-IDNSKKEC.js';
13
13
  import { GMAIL_CHECKS } from '../../chunk-JM6VS62R.js';
@@ -15,8 +15,8 @@ import '../../chunk-NJ246QPJ.js';
15
15
  import { LINEAR_CHECKS } from '../../chunk-XBT6ZLBG.js';
16
16
  import '../../chunk-IZIZC7ZW.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-WMHGTTRH.js';
19
- import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-DZU4LAYD.js';
18
+ import '../../chunk-SIJP5OCX.js';
19
+ import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-R6YWMPGO.js';
20
20
  import '../../chunk-5EGHN6H4.js';
21
21
  import { isLegacyEventRow, eventSchema } from '../../chunk-VBATFCWR.js';
22
22
  import { redactEvent, redactSecrets } from '../../chunk-SG6ZTIMT.js';
@@ -850,7 +850,7 @@ async function throwForStatus(res) {
850
850
 
851
851
  // src/task/seed-verifier.ts
852
852
  async function verifySeedWithTwin(seed) {
853
- const { GitHubDomain, openGitHubCloneDatabase } = await import('../../src-7Z35KM4S.js');
853
+ const { GitHubDomain, openGitHubCloneDatabase } = await import('../../src-BHCAQQF7.js');
854
854
  const db = openGitHubCloneDatabase(":memory:");
855
855
  try {
856
856
  new GitHubDomain(db).seed(seed);
@@ -2171,7 +2171,7 @@ var toolNeverCalled = defineCheck({
2171
2171
  // that a verified fact rather than an assumption.
2172
2172
  subject: (args) => args.tool,
2173
2173
  // Null, and admitted in `HONEST_NULL_MUTANTS`. The only slot is a closed set,
2174
- // so there is no value guaranteed to be false: a mutant naming the OTHER
2174
+ // so there is no value guaranteed to be false: a mutant naming ANOTHER
2175
2175
  // assertable action asserts something that may well also be true, and a value
2176
2176
  // outside the set does not re-bind at all — which reads as "the verdict moved"
2177
2177
  // and would bless the very criterion the probe exists to catch.
@@ -2221,9 +2221,9 @@ var toolWasCalled = defineCheck({
2221
2221
  // nothing, i.e. failing an agent that did the work.
2222
2222
  subject: (args) => args.tool,
2223
2223
  // Null, and admitted in `HONEST_NULL_MUTANTS`. Same closed-set argument as the
2224
- // sibling: the only substitutable value is the OTHER assertable action, which
2225
- // an agent may well have called too, and a value outside the set does not
2226
- // re-bind at all.
2224
+ // sibling: every substitutable value is ANOTHER assertable action, which an
2225
+ // agent may well have called too, and a value outside the set does not re-bind
2226
+ // at all.
2227
2227
  vacuityMutant: () => null,
2228
2228
  // A POSITIVE check, so the passing world is the one where the action WAS
2229
2229
  // called. The failing world is deliberately NOT an empty tape: `[]` fails
@@ -4651,7 +4651,7 @@ var DEFAULT_AGENT_COMMAND = `node ${DEFAULT_AGENT_FILE}`;
4651
4651
  var MANIFEST_SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
4652
4652
  var MAX_UNREADABLE_PATHS_SHOWN = 5;
4653
4653
  function readPackageVersion() {
4654
- if ("0.23.48".length > 0) return "0.23.48";
4654
+ if ("0.23.50".length > 0) return "0.23.50";
4655
4655
  try {
4656
4656
  const here = dirname(fileURLToPath(import.meta.url));
4657
4657
  const candidates = [
@@ -5106,7 +5106,7 @@ function createProgram() {
5106
5106
  return;
5107
5107
  }
5108
5108
  {
5109
- const { runDoctorChecks } = await import('../../checks-STMFOZA5.js');
5109
+ const { runDoctorChecks } = await import('../../checks-YRMP2JX7.js');
5110
5110
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5111
5111
  const doctorReport = await runDoctorChecks({ mode: useLocal ? "full" : "hosted" });
5112
5112
  if (!doctorReport.ok) {
@@ -5144,7 +5144,7 @@ function createProgram() {
5144
5144
  taskForRuns.config.runs
5145
5145
  );
5146
5146
  if (k > 1) {
5147
- const { runTrialGroup } = await import('../../runTrialGroup-SG4QQVTN.js');
5147
+ const { runTrialGroup } = await import('../../runTrialGroup-RLR2JD3T.js');
5148
5148
  const fileForRerun = relative(process.cwd(), file);
5149
5149
  const rerunCommand = defaultTask ? options.trials !== void 0 ? `pome run -n ${k}` : "pome run" : `pome run ${fileForRerun && !fileForRerun.startsWith("..") ? fileForRerun : file} -n ${k}`;
5150
5150
  const groupResult = await runTrialGroup({
@@ -5238,7 +5238,7 @@ function createProgram() {
5238
5238
  process.exitCode = 5;
5239
5239
  return;
5240
5240
  }
5241
- const { runDemo } = await import('../../runDemo-63ZG7QKS.js');
5241
+ const { runDemo } = await import('../../runDemo-EK4AMZVR.js');
5242
5242
  const result = await runDemo({
5243
5243
  apiBase: opts.apiUrl.replace(/\/$/, ""),
5244
5244
  dashboardBase: process.env.POME_DASHBOARD_URL ?? DEFAULT_DASHBOARD_URL,
@@ -5256,7 +5256,7 @@ function createProgram() {
5256
5256
  program.command("doctor").description(
5257
5257
  "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."
5258
5258
  ).action(async () => {
5259
- const { runDoctorChecks } = await import('../../checks-STMFOZA5.js');
5259
+ const { runDoctorChecks } = await import('../../checks-YRMP2JX7.js');
5260
5260
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5261
5261
  const report = await runDoctorChecks();
5262
5262
  for (const line of renderDoctorReport(report, { passNote: true })) console.error(line);
@@ -5432,7 +5432,7 @@ function createProgram() {
5432
5432
  ).description(
5433
5433
  "Start a standalone twin as a long-lived foreground server (Ctrl-C to stop)"
5434
5434
  ).action(async (name, options) => {
5435
- const { runTwinStartCommand } = await import('../../twinStart-Q4EJ4U2C.js');
5435
+ const { runTwinStartCommand } = await import('../../twinStart-BF375EBE.js');
5436
5436
  await runTwinStartCommand(name, options);
5437
5437
  });
5438
5438
  twin.command("reset").argument("[name]", "Twin name (default: github)", "github").description("Reset standalone twin state").action(async (name) => {
@@ -1,4 +1,4 @@
1
- import './chunk-FKZZWWYC.js';
1
+ import './chunk-C4BVTUA3.js';
2
2
  import { defaultSeedState, parseSeed } from './chunk-B22TYIEM.js';
3
3
  export { defaultSeedState, parseSeed, seedSchema } from './chunk-B22TYIEM.js';
4
4
  import { routeInputDeclarer, integerInput, mountDeclaredRoute, UndeclaredInputError, MalformedBodyError } from './chunk-2Q3P45LK.js';
@@ -5408,7 +5408,7 @@ function registerGitHubRoutes(session, { domain, recorder }) {
5408
5408
  route(GITHUB_ROUTES.addIssueComment, ({ path, body }) => {
5409
5409
  const { value, delta } = captureDelta((onDelta) => domain.addIssueComment({ ...issueRef(path), ...body }, onDelta));
5410
5410
  return created(value, delta);
5411
- });
5411
+ }, "add_issue_comment");
5412
5412
  route(GITHUB_ROUTES.listRepositoryLabels, ({ path }) => ok(domain.listRepositoryLabels(path)));
5413
5413
  route(GITHUB_ROUTES.createRepositoryLabel, ({ path, body }) => {
5414
5414
  const { value, delta } = captureDelta((onDelta) => domain.createRepositoryLabel({ ...path, ...body }, onDelta));
@@ -0,0 +1,5 @@
1
+ export { UnsupportedTwinError, bootTwin } from './chunk-SIJP5OCX.js';
2
+ export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-R6YWMPGO.js';
3
+ import './chunk-5EGHN6H4.js';
4
+ import './chunk-VBATFCWR.js';
5
+ import './chunk-SG6ZTIMT.js';
@@ -1,5 +1,5 @@
1
- import { bootTwin } from './chunk-WMHGTTRH.js';
2
- import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-DZU4LAYD.js';
1
+ import { bootTwin } from './chunk-SIJP5OCX.js';
2
+ import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-R6YWMPGO.js';
3
3
  import './chunk-5EGHN6H4.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.48",
3
+ "version": "0.23.50",
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",
@@ -49,6 +49,7 @@
49
49
  "prepublishOnly": "node scripts/assert-publishable.mjs && npm run build",
50
50
  "typecheck": "tsc -p tsconfig.json --noEmit",
51
51
  "test": "vitest run",
52
+ "gate:golden": "vitest run test/golden",
52
53
  "gate:recorder-overhead": "tsx scripts/recorder-overhead-gate.ts",
53
54
  "gate:agent-trace-overhead": "tsx scripts/overhead-gate.ts",
54
55
  "gate:cas-adapter-acceptance": "tsx scripts/cas-adapter-acceptance.ts",
@@ -1,4 +0,0 @@
1
- // ../packages/twin-github/dist/src/tape-assertable-tools.js
2
- var TAPE_ASSERTABLE_TOOLS = ["create_commit_status", "create_check_run"];
3
-
4
- export { TAPE_ASSERTABLE_TOOLS };
@@ -1,5 +0,0 @@
1
- export { UnsupportedTwinError, bootTwin } from './chunk-WMHGTTRH.js';
2
- export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-DZU4LAYD.js';
3
- import './chunk-5EGHN6H4.js';
4
- import './chunk-VBATFCWR.js';
5
- import './chunk-SG6ZTIMT.js';