@pome-sh/cli 0.26.4 → 0.26.6

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.
package/README.md CHANGED
@@ -116,7 +116,7 @@ Three rules CI must honor:
116
116
  npm install
117
117
  npm run typecheck
118
118
  npm run build
119
- npm test
119
+ npx vitest run --project cli
120
120
  ```
121
121
 
122
122
  The package publishes the `pome` binary from `dist/src/cli/main.js`.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "pome-sh",
3
- "version": "0.26.4",
4
- "git_sha": "8e396fcfae65745a93a57f64ca4faaec941816b7",
5
- "build_time": "2026-08-22T03:12:21.394Z"
3
+ "version": "0.26.6",
4
+ "git_sha": "9913100d227924c71a6a77307fd3c042197576f9",
5
+ "build_time": "2026-08-22T06:27:19.126Z"
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-AJHGWE5B.js');
186
+ const { bootTwin } = await import('./twinHarness-PEPV4RQX.js');
187
187
  harness = await bootTwin({
188
188
  twin: "github",
189
189
  seedState: void 0,
@@ -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-VDHVVSUJ.js';
4
- import { createRecorder, bootTwin } from './chunk-4AY5VHQK.js';
3
+ import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-WERW3JMN.js';
4
+ import { createRecorder, bootTwin } from './chunk-GJXH37KY.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-ZGAM3HXJ.js');
42
+ } = await import('./src-TBV553KB.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-ZGAM3HXJ.js');
176
+ const { createGitHubCloneApp } = await import('./src-TBV553KB.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-K37RXI3K.js';
1
+ import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-5D2TGFE3.js';
2
2
  import { createFileBackedRecorderStore, createRecorderStore } from './chunk-WEKJIGUD.js';
3
3
 
4
4
  // src/recorder/recorder.ts
@@ -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-VDHVVSUJ.js';
2
+ import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-WERW3JMN.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';
@@ -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-K37RXI3K.js';
5
+ import { isTwinName, TWIN_REGISTRY } from './chunk-5D2TGFE3.js';
6
6
  import { toTwinHttpEventRow } from './chunk-WEKJIGUD.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-NSFNITIC.js';
3
+ import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-4H3JXPGZ.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-VDHVVSUJ.js';
6
+ import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-WERW3JMN.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-4AY5VHQK.js';
13
- import './chunk-K37RXI3K.js';
12
+ import { bootTwin } from './chunk-GJXH37KY.js';
13
+ import './chunk-5D2TGFE3.js';
14
14
  import './chunk-WEKJIGUD.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-IBB4I5PM.js';
2
+ import { runTaskHosted, resolveRunAgentIdentity } from './chunk-M4IK4D4X.js';
3
3
  import './chunk-LA6BHJ5H.js';
4
- import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-VDHVVSUJ.js';
4
+ import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-WERW3JMN.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-K37RXI3K.js';
10
+ import './chunk-5D2TGFE3.js';
11
11
  import './chunk-WEKJIGUD.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-IBB4I5PM.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-M4IK4D4X.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-NSFNITIC.js';
4
+ import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-4H3JXPGZ.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-VDHVVSUJ.js';
7
+ import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-WERW3JMN.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-4AY5VHQK.js';
19
- import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-K37RXI3K.js';
18
+ import '../../chunk-GJXH37KY.js';
19
+ import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-5D2TGFE3.js';
20
20
  import '../../chunk-WEKJIGUD.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-ZGAM3HXJ.js');
853
+ const { GitHubDomain, openGitHubCloneDatabase } = await import('../../src-TBV553KB.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.26.4".length > 0) return "0.26.4";
4654
+ if ("0.26.6".length > 0) return "0.26.6";
4655
4655
  try {
4656
4656
  const here = dirname(fileURLToPath(import.meta.url));
4657
4657
  const candidates = [
@@ -5096,7 +5096,7 @@ function createProgram() {
5096
5096
  return;
5097
5097
  }
5098
5098
  {
5099
- const { runDoctorChecks } = await import('../../checks-LKGNPTOL.js');
5099
+ const { runDoctorChecks } = await import('../../checks-7SWBCD5C.js');
5100
5100
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5101
5101
  const doctorReport = await runDoctorChecks({ mode: useLocal ? "full" : "hosted" });
5102
5102
  if (!doctorReport.ok) {
@@ -5134,7 +5134,7 @@ function createProgram() {
5134
5134
  taskForRuns.config.runs
5135
5135
  );
5136
5136
  if (k > 1) {
5137
- const { runTrialGroup } = await import('../../runTrialGroup-S7CRQPIM.js');
5137
+ const { runTrialGroup } = await import('../../runTrialGroup-Z4PB3WGJ.js');
5138
5138
  const fileForRerun = relative(process.cwd(), file);
5139
5139
  const rerunCommand = defaultTask ? options.trials !== void 0 ? `pome run -n ${k}` : "pome run" : `pome run ${fileForRerun && !fileForRerun.startsWith("..") ? fileForRerun : file} -n ${k}`;
5140
5140
  const groupResult = await runTrialGroup({
@@ -5228,7 +5228,7 @@ function createProgram() {
5228
5228
  process.exitCode = 5;
5229
5229
  return;
5230
5230
  }
5231
- const { runDemo } = await import('../../runDemo-NQV256MB.js');
5231
+ const { runDemo } = await import('../../runDemo-EPTIRUX6.js');
5232
5232
  const result = await runDemo({
5233
5233
  apiBase: opts.apiUrl.replace(/\/$/, ""),
5234
5234
  dashboardBase: process.env.POME_DASHBOARD_URL ?? DEFAULT_DASHBOARD_URL,
@@ -5246,7 +5246,7 @@ function createProgram() {
5246
5246
  program.command("doctor").description(
5247
5247
  "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."
5248
5248
  ).action(async () => {
5249
- const { runDoctorChecks } = await import('../../checks-LKGNPTOL.js');
5249
+ const { runDoctorChecks } = await import('../../checks-7SWBCD5C.js');
5250
5250
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5251
5251
  const report = await runDoctorChecks();
5252
5252
  for (const line of renderDoctorReport(report, { passNote: true })) console.error(line);
@@ -5422,7 +5422,7 @@ function createProgram() {
5422
5422
  ).description(
5423
5423
  "Start a standalone twin as a long-lived foreground server (Ctrl-C to stop)"
5424
5424
  ).action(async (name, options) => {
5425
- const { runTwinStartCommand } = await import('../../twinStart-QXSCA577.js');
5425
+ const { runTwinStartCommand } = await import('../../twinStart-CP4UAY5W.js');
5426
5426
  await runTwinStartCommand(name, options);
5427
5427
  });
5428
5428
  twin.command("reset").argument("[name]", "Twin name (default: github)", "github").description("Reset standalone twin state").action(async (name) => {
@@ -623,7 +623,7 @@ var mcp_tools_list_meta_default = {
623
623
  'What this file does NOT say is what the twin ACCEPTS. These are GitHub\'s advertised schemas; the twin\'s zod validators are what actually admit or refuse an examinee\'s call, and the two can disagree \u2014 GitHub advertises `perPage` where the validator also takes `per_page`, and advertises state ["OPEN","CLOSED"] where the validator still takes lowercase. src/tool-schema-conformance.ts is the report on that gap. Reading this fixture as a statement about behaviour is the mistake it exists to make visible.',
624
624
  "Dropping a tool from this listing does NOT drop the twin's REST route for the same operation. Fourteen of the thirty-four names retired by F-1376 (milestones, commit statuses, check runs, issue-comment edit/delete) were GitHub REST operations that were never MCP tools upstream, and they remain reachable exactly the way an examinee could always have reached them at GitHub: over HTTP."
625
625
  ],
626
- canonicalFileSha256: "ccd957048004c010791e19999d1aff507791171dec4882d5a3e171e22482f13b",
626
+ canonicalFileSha256: "223917a5b2669df70622bbd48cf566f6b8258c902dbff5cc274a5318ddf1264a",
627
627
  files: {
628
628
  raw: "mcp-tools-list.raw.json",
629
629
  canonical: "mcp-tools-list.canonical.json"
@@ -631,7 +631,7 @@ var mcp_tools_list_meta_default = {
631
631
  configuration: {
632
632
  toolsets: "default",
633
633
  whyThisToolset: [
634
- "examples/support-triage declares mcp_servers[name=github].url = https://api.githubcopilot.com/mcp/ (agents/support-triage-v1.yaml and -v2.yaml, byte-identical on that line).",
634
+ "agent-examples/support-triage declares mcp_servers[name=github].url = https://api.githubcopilot.com/mcp/ (agents/support-triage-v1.yaml and -v2.yaml, byte-identical on that line).",
635
635
  "docs/remote-server.md at the pinned commit maps that exact URL to the `default` toolset. `all` is a DIFFERENT URL: https://api.githubcopilot.com/mcp/x/all.",
636
636
  "Measured at the pinned commit: --toolsets=default returns 44 tools, --toolsets=all returns 85. Reading the union would invent 41 tools no examinee of ours can call."
637
637
  ],
@@ -0,0 +1,5 @@
1
+ export { UnsupportedTwinError, bootTwin } from './chunk-GJXH37KY.js';
2
+ export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-5D2TGFE3.js';
3
+ import './chunk-WEKJIGUD.js';
4
+ import './chunk-VBATFCWR.js';
5
+ import './chunk-SG6ZTIMT.js';
@@ -1,5 +1,5 @@
1
- import { bootTwin } from './chunk-4AY5VHQK.js';
2
- import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-K37RXI3K.js';
1
+ import { bootTwin } from './chunk-GJXH37KY.js';
2
+ import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-5D2TGFE3.js';
3
3
  import './chunk-WEKJIGUD.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.26.4",
3
+ "version": "0.26.6",
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",
@@ -48,8 +48,6 @@
48
48
  "pome": "node dist/src/cli/main.js",
49
49
  "prepublishOnly": "node scripts/assert-publishable.mjs && npm run build",
50
50
  "typecheck": "tsc -p tsconfig.json --noEmit",
51
- "test": "vitest run",
52
- "gate:golden": "vitest run test/golden",
53
51
  "gate:recorder-overhead": "tsx scripts/recorder-overhead-gate.ts",
54
52
  "gate:agent-trace-overhead": "tsx scripts/overhead-gate.ts",
55
53
  "gate:cas-adapter-acceptance": "tsx scripts/cas-adapter-acceptance.ts",
@@ -1,5 +0,0 @@
1
- export { UnsupportedTwinError, bootTwin } from './chunk-4AY5VHQK.js';
2
- export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-K37RXI3K.js';
3
- import './chunk-WEKJIGUD.js';
4
- import './chunk-VBATFCWR.js';
5
- import './chunk-SG6ZTIMT.js';