@pome-sh/cli 0.24.0 → 0.24.2

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.24.0",
4
- "git_sha": "9158b590adb2d241a803fe2c6206e6674e392dd3",
5
- "build_time": "2026-08-18T10:26:51.900Z"
3
+ "version": "0.24.2",
4
+ "git_sha": "9c4a28b62e0b41aa100087a65a0307a0cf27d705",
5
+ "build_time": "2026-08-20T19:11:54.132Z"
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-ASAPUQJT.js');
186
+ const { bootTwin } = await import('./twinHarness-H6SY773Z.js');
187
187
  harness = await bootTwin({
188
188
  twin: "github",
189
189
  seedState: void 0,
@@ -1,5 +1,5 @@
1
1
  import { readManifest, normalizeManifestTwins } from './chunk-LA6BHJ5H.js';
2
- import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-GXQVX6IQ.js';
2
+ import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-YUQWG57T.js';
3
3
  import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema } from './chunk-QYCUNR2V.js';
4
4
  import { redactSecrets, redactEvent } from './chunk-SG6ZTIMT.js';
5
5
  import { randomUUID, createHash } from 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-PMM3VKN6.js';
1
+ import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-XXSZLN7I.js';
2
2
  import { createFileBackedRecorderStore, createRecorderStore } from './chunk-5EGHN6H4.js';
3
3
 
4
4
  // src/recorder/recorder.ts
@@ -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-GXQVX6IQ.js';
4
- import { createRecorder, bootTwin } from './chunk-FH3W7IRL.js';
3
+ import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-YUQWG57T.js';
4
+ import { createRecorder, bootTwin } from './chunk-TJPGONWC.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';
@@ -39,7 +39,7 @@ var TWIN_REGISTRY = {
39
39
  defaultSeedState,
40
40
  GitHubDomain,
41
41
  openGitHubCloneDatabase
42
- } = await import('./src-BHCAQQF7.js');
42
+ } = await import('./src-5OWSOCET.js');
43
43
  const db = openGitHubCloneDatabase();
44
44
  const domain = new GitHubDomain(db);
45
45
  domain.seed(seedState === void 0 ? defaultSeedState() : seedState);
@@ -84,9 +84,9 @@ var TWIN_REGISTRY = {
84
84
  envName: "STRIPE",
85
85
  defaultPort: 3333,
86
86
  version: package_default3.version,
87
- defaultSeed: async () => (await import('./src-NMHFBKVW.js')).defaultSeed(),
87
+ defaultSeed: async () => (await import('./src-J3LKERPK.js')).defaultSeed(),
88
88
  async boot({ seedState, runId, recorder, twinBaseUrl }) {
89
- const stripeTwin = await import('./src-NMHFBKVW.js');
89
+ const stripeTwin = await import('./src-J3LKERPK.js');
90
90
  const { createApp } = await import('./server-AJUCP5KS.js');
91
91
  const {
92
92
  applySeed: applyStripeSeed,
@@ -173,7 +173,7 @@ var TWIN_REGISTRY = {
173
173
  }
174
174
  };
175
175
  async function createGitHubSmokeApp() {
176
- const { createGitHubCloneApp } = await import('./src-BHCAQQF7.js');
176
+ const { createGitHubCloneApp } = await import('./src-5OWSOCET.js');
177
177
  return createGitHubCloneApp();
178
178
  }
179
179
  function defaultPortFor(twin, env = process.env) {
@@ -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-PMM3VKN6.js';
5
+ import { isTwinName, TWIN_REGISTRY } from './chunk-XXSZLN7I.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-QFQTZ6L4.js';
3
+ import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-UWMDE7LX.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-GXQVX6IQ.js';
6
+ import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-YUQWG57T.js';
7
7
  import './chunk-NW7HGA2K.js';
8
8
  import { HostedQuotaError, HostedOrchError } from './chunk-QYCUNR2V.js';
9
9
  import './chunk-B22TYIEM.js';
10
10
  import './chunk-NJ246QPJ.js';
11
11
  import './chunk-IZIZC7ZW.js';
12
- import { bootTwin } from './chunk-FH3W7IRL.js';
13
- import './chunk-PMM3VKN6.js';
12
+ import { bootTwin } from './chunk-TJPGONWC.js';
13
+ import './chunk-XXSZLN7I.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-KBE4RT5T.js';
2
+ import { runTaskHosted, resolveRunAgentIdentity } from './chunk-IZ2GFNAJ.js';
3
3
  import './chunk-LA6BHJ5H.js';
4
- import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-GXQVX6IQ.js';
4
+ import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-YUQWG57T.js';
5
5
  import './chunk-NW7HGA2K.js';
6
6
  import { HostedQuotaError, HostedTrialError } from './chunk-QYCUNR2V.js';
7
7
  import './chunk-B22TYIEM.js';
8
8
  import './chunk-NJ246QPJ.js';
9
9
  import './chunk-IZIZC7ZW.js';
10
- import './chunk-PMM3VKN6.js';
10
+ import './chunk-XXSZLN7I.js';
11
11
  import './chunk-5EGHN6H4.js';
12
12
  import './chunk-VBATFCWR.js';
13
13
  import './chunk-SG6ZTIMT.js';
@@ -1,10 +1,10 @@
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-KBE4RT5T.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-IZ2GFNAJ.js';
3
3
  import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-LA6BHJ5H.js';
4
- import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-QFQTZ6L4.js';
4
+ import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-UWMDE7LX.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-GXQVX6IQ.js';
7
+ import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-YUQWG57T.js';
8
8
  import '../../chunk-NW7HGA2K.js';
9
9
  import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-QYCUNR2V.js';
10
10
  import { TAPE_ASSERTABLE_TOOLS } from '../../chunk-C4BVTUA3.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-FH3W7IRL.js';
19
- import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-PMM3VKN6.js';
18
+ import '../../chunk-TJPGONWC.js';
19
+ import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-XXSZLN7I.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-BHCAQQF7.js');
853
+ const { GitHubDomain, openGitHubCloneDatabase } = await import('../../src-5OWSOCET.js');
854
854
  const db = openGitHubCloneDatabase(":memory:");
855
855
  try {
856
856
  new GitHubDomain(db).seed(seed);
@@ -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.24.0".length > 0) return "0.24.0";
4654
+ if ("0.24.2".length > 0) return "0.24.2";
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-QFWWMBDU.js');
5109
+ const { runDoctorChecks } = await import('../../checks-NCNSHMND.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-KTTAYFWE.js');
5147
+ const { runTrialGroup } = await import('../../runTrialGroup-FOO6F3A7.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-TXFZWHHJ.js');
5241
+ const { runDemo } = await import('../../runDemo-UST3X3OB.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-QFWWMBDU.js');
5259
+ const { runDoctorChecks } = await import('../../checks-NCNSHMND.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-PZNMEDBK.js');
5435
+ const { runTwinStartCommand } = await import('../../twinStart-IGPEXS7E.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) => {
@@ -1749,7 +1749,7 @@ function dispatchTool(domain, name, parsed, onDelta, options = {}) {
1749
1749
  case "get_labels":
1750
1750
  return domain.listIssueLabelsForIssue(parsed);
1751
1751
  default:
1752
- throw new TwinError(`issue_read method '${parsed.method}' is not supported by this GitHub twin clone.`, 501);
1752
+ throw new TwinError(`issue_read method '${parsed.method}' is not supported by this GitHub twin.`, 501);
1753
1753
  }
1754
1754
  case "issue_write":
1755
1755
  switch (parsed.method) {
@@ -1801,15 +1801,15 @@ function dispatchTool(domain, name, parsed, onDelta, options = {}) {
1801
1801
  return domain.listCheckRunsForRef({ ...pull, ref: head?.ref ?? "" });
1802
1802
  }
1803
1803
  default:
1804
- throw new TwinError(`pull_request_read method '${parsed.method}' is not supported by this GitHub twin clone.`, 501);
1804
+ throw new TwinError(`pull_request_read method '${parsed.method}' is not supported by this GitHub twin.`, 501);
1805
1805
  }
1806
1806
  }
1807
1807
  case "pull_request_review_write":
1808
1808
  if (parsed.method !== "create") {
1809
- throw new TwinError(`pull_request_review_write method '${parsed.method}' is not supported by this GitHub twin clone.`, 501);
1809
+ throw new TwinError(`pull_request_review_write method '${parsed.method}' is not supported by this GitHub twin.`, 501);
1810
1810
  }
1811
1811
  if (parsed.event === void 0) {
1812
- throw new TwinError("pull_request_review_write method 'create' without an `event` opens a pending review, which this GitHub twin clone does not model.", 501);
1812
+ throw new TwinError("pull_request_review_write method 'create' without an `event` opens a pending review, which this GitHub twin does not model.", 501);
1813
1813
  }
1814
1814
  return domain.createPullRequestReview({ ...parsed, pull_number: parsed.pullNumber }, onDelta);
1815
1815
  case "create_pull_request_review":
@@ -3024,7 +3024,24 @@ function releaseJson(release, repo) {
3024
3024
  upload_url: `https://uploads.github.com/repos/${repo.full_name}/releases/${release.id}/assets{?name,label}`,
3025
3025
  tarball_url: `https://api.github.com/repos/${repo.full_name}/tarball/${release.tag_name}`,
3026
3026
  zipball_url: `https://api.github.com/repos/${repo.full_name}/zipball/${release.tag_name}`,
3027
- assets: []
3027
+ assets: [],
3028
+ // F-1533 — the last leaf real GitHub sends on all three release surfaces
3029
+ // that this twin did not. Same shape of fix as `updated_at` above (F-1459),
3030
+ // and the same reason it went unnoticed: `satisfies DeepPartial<Release>`
3031
+ // encodes "faithful SUBSET", so it cannot see an omission.
3032
+ //
3033
+ // `false` is the TRUE value here, not a placeholder. This twin models no
3034
+ // immutable-release feature and has no route that could enable one — no
3035
+ // `PUT /repos/:o/:r/immutable-releases`, nothing on the seed — so every
3036
+ // release in every reachable twin state IS mutable. That is what separates
3037
+ // this from the nine sibling fields F-1504 registered rather than fixed:
3038
+ // stating `false` invents no model.
3039
+ //
3040
+ // Not a column. A stored value would be a second source of truth for a
3041
+ // feature that does not exist, and the first route to enable immutability
3042
+ // is the change that owes one — the inverse of `updated_at`, which IS a
3043
+ // column precisely because a future update route must be able to move it.
3044
+ immutable: false
3028
3045
  };
3029
3046
  }
3030
3047
  function releaseState(release, repo) {
@@ -5587,7 +5604,7 @@ function milestoneRef(path) {
5587
5604
  var unsupportedEnvelope = {
5588
5605
  status: 501,
5589
5606
  body: {
5590
- message: "This endpoint is not supported by this GitHub twin clone.",
5607
+ message: "This endpoint is not supported by this GitHub twin.",
5591
5608
  _twin: {
5592
5609
  fidelity: "unsupported",
5593
5610
  supported_surfaces: [
@@ -560,7 +560,7 @@ function forbidden(message = "Forbidden") {
560
560
  });
561
561
  }
562
562
  function unsupported() {
563
- return stripeError("invalid_request_error", "endpoint_not_supported", "This endpoint is not supported by this Stripe twin clone.", {
563
+ return stripeError("invalid_request_error", "endpoint_not_supported", "This endpoint is not supported by this Stripe twin.", {
564
564
  statusCode: 501,
565
565
  fidelity: "unsupported",
566
566
  supported_surfaces: [
@@ -0,0 +1,5 @@
1
+ export { UnsupportedTwinError, bootTwin } from './chunk-TJPGONWC.js';
2
+ export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-XXSZLN7I.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-FH3W7IRL.js';
2
- import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-PMM3VKN6.js';
1
+ import { bootTwin } from './chunk-TJPGONWC.js';
2
+ import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-XXSZLN7I.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.24.0",
3
+ "version": "0.24.2",
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-FH3W7IRL.js';
2
- export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-PMM3VKN6.js';
3
- import './chunk-5EGHN6H4.js';
4
- import './chunk-VBATFCWR.js';
5
- import './chunk-SG6ZTIMT.js';