@pome-sh/cli 0.21.0 → 0.21.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.
package/README.md CHANGED
@@ -42,7 +42,7 @@ local/OSS package release.
42
42
  pome login # one-time; opens the dashboard to sign in
43
43
  pome init # scaffolds tasks/, examples/agents/, runs/, pome.config.json
44
44
  pome register agent my-agent # scopes runs to this project
45
- pome run tasks/01-bug-happy-path.md --agent "npx tsx examples/agents/scripted-triage-agent.ts"
45
+ pome run tasks/01-bug-happy-path.md --agent "node examples/agents/scripted-triage-agent.ts"
46
46
  pome inspect latest # trace/audit view of the last run
47
47
  ```
48
48
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "pome-sh",
3
- "version": "0.21.0",
4
- "git_sha": "88ed221d8c0a5f1bfabfbeacca1d2d214ecb383d",
5
- "build_time": "2026-08-05T15:28:04.134Z"
3
+ "version": "0.21.2",
4
+ "git_sha": "3a0eeab91aa4405817ea8232e80a41981b920914",
5
+ "build_time": "2026-08-05T18:21:53.179Z"
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-IZC72UQN.js');
186
+ const { bootTwin } = await import('./twinHarness-YTU4427G.js');
187
187
  harness = await bootTwin({
188
188
  twin: "github",
189
189
  seedState: void 0,
@@ -253,7 +253,7 @@ async function checkRouting(configDir) {
253
253
  cause: `no POME_*_REST_URL / POME_*_MCP_URL read and no @pome-sh adapter found in the ${scan.filesScanned} source file(s) under ${relative(process.cwd(), configDir) || "."} \u2014 the agent has no path to the twin.`,
254
254
  fix: [
255
255
  'wire the adapter: import { withPome } from "@pome-sh/adapter-claude-sdk"; call withPome() at startup;',
256
- "read the twin base URL from POME_GITHUB_REST_URL (injected by the runner) \u2014 or let your own coding agent wire it with the Gen-2 skills (`npx skills add pome-sh/digital-twins`)."
256
+ "read the twin base URL from POME_GITHUB_REST_URL (injected by the runner) \u2014 or let your own coding agent wire it with the Gen-2 skills (`npx skills add pome-sh/digital-twins --skill '*'`)."
257
257
  ].join("\n")
258
258
  };
259
259
  }
@@ -1,5 +1,5 @@
1
1
  import { readManifest, normalizeManifestTwins } from './chunk-BSKITCXD.js';
2
- import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus } from './chunk-D3GRORLQ.js';
2
+ import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus } from './chunk-ONXQCWPY.js';
3
3
  import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema } from './chunk-2Q7AYEUA.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-D3GRORLQ.js';
4
- import { createRecorder, bootTwin } from './chunk-GEAGPLZZ.js';
3
+ import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-ONXQCWPY.js';
4
+ import { createRecorder, bootTwin } from './chunk-JQQPZQOJ.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,4 +1,4 @@
1
- import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-OHKJGCWS.js';
1
+ import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-MBM7LY7E.js';
2
2
  import { createFileBackedRecorderStore, createRecorderStore } from './chunk-LZIPGCQJ.js';
3
3
 
4
4
  // src/recorder/recorder.ts
@@ -183,4 +183,4 @@ function defaultPortFor(twin, env = process.env) {
183
183
  return override ?? String(entry.defaultPort);
184
184
  }
185
185
 
186
- export { STRIPE_LOCAL_ACCOUNT_ID, TWIN_NAMES, TWIN_REGISTRY, createGitHubSmokeApp, defaultPortFor, isTwinName };
186
+ export { STRIPE_LOCAL_ACCOUNT_ID, TWIN_NAMES, TWIN_NAME_LIST, TWIN_REGISTRY, createGitHubSmokeApp, defaultPortFor, isTwinName };
@@ -2,7 +2,7 @@ import { criterionSchema, finalizeResponseSchema, HostedDiscardRefusedError, Hos
2
2
  import { seedSchema, parseSeed, defaultSeedState as defaultSeedState$2 } from './chunk-OKDJRKJV.js';
3
3
  import { gmailSeedSchema, defaultSeedState } from './chunk-WVWV7DLA.js';
4
4
  import { linearSeedSchema, defaultSeedState as defaultSeedState$1 } from './chunk-APAS34RJ.js';
5
- import { isTwinName, TWIN_REGISTRY } from './chunk-OHKJGCWS.js';
5
+ import { isTwinName, TWIN_REGISTRY } from './chunk-MBM7LY7E.js';
6
6
  import { toTwinHttpEventRow } from './chunk-LZIPGCQJ.js';
7
7
  import { redactEvent, redactSecrets } from './chunk-SG6ZTIMT.js';
8
8
  import { mkdir, appendFile, writeFile, readFile } from 'node:fs/promises';
@@ -5,7 +5,10 @@ var GEN2_REDIRECT = [
5
5
  "Wire your own agent to pome the Gen-2 way:",
6
6
  " 1. claude mcp add --transport http pome https://mcp.pome.sh/mcp",
7
7
  " # connect the pome control MCP",
8
- " 2. npx skills add pome-sh/digital-twins # install the Gen-2 coach skills",
8
+ " 2. npx skills add pome-sh/digital-twins --skill '*'",
9
+ " # install the Gen-2 coach skills",
10
+ " # (--skill '*' takes all six; the",
11
+ " # picker opens with none ticked)",
9
12
  " 3. run the pome-intake skill to register the examinee and check twin",
10
13
  " coverage (self-hosted REST agent: use the coach's REST-launch preflight).",
11
14
  "",
@@ -1,17 +1,17 @@
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-W5EJAOWD.js';
3
+ import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-AVUKOLA4.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-D3GRORLQ.js';
6
+ import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-ONXQCWPY.js';
7
7
  import './chunk-NW7HGA2K.js';
8
8
  import { HostedQuotaError, HostedOrchError } from './chunk-2Q7AYEUA.js';
9
9
  import './chunk-OKDJRKJV.js';
10
10
  import './chunk-WVWV7DLA.js';
11
11
  import './chunk-APAS34RJ.js';
12
12
  import './chunk-NY55QTVQ.js';
13
- import { bootTwin } from './chunk-GEAGPLZZ.js';
14
- import './chunk-OHKJGCWS.js';
13
+ import { bootTwin } from './chunk-JQQPZQOJ.js';
14
+ import './chunk-MBM7LY7E.js';
15
15
  import './chunk-LZIPGCQJ.js';
16
16
  import './chunk-VBATFCWR.js';
17
17
  import './chunk-SG6ZTIMT.js';
@@ -1,14 +1,14 @@
1
1
  import { newGroupId, criterionPhrase } from './chunk-RGZBC7NF.js';
2
- import { runTaskHosted, resolveRunAgentIdentity } from './chunk-PPJUFV6S.js';
2
+ import { runTaskHosted, resolveRunAgentIdentity } from './chunk-44TBTTIT.js';
3
3
  import './chunk-BSKITCXD.js';
4
- import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-D3GRORLQ.js';
4
+ import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-ONXQCWPY.js';
5
5
  import './chunk-NW7HGA2K.js';
6
6
  import { HostedQuotaError, HostedTrialError } from './chunk-2Q7AYEUA.js';
7
7
  import './chunk-OKDJRKJV.js';
8
8
  import './chunk-WVWV7DLA.js';
9
9
  import './chunk-APAS34RJ.js';
10
10
  import './chunk-NY55QTVQ.js';
11
- import './chunk-OHKJGCWS.js';
11
+ import './chunk-MBM7LY7E.js';
12
12
  import './chunk-LZIPGCQJ.js';
13
13
  import './chunk-VBATFCWR.js';
14
14
  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, loadTrialEvents, persistCredentialsAfterLogin, DEFAULT_DOCS_SITE_ORIGIN, resolveSeams, resolveCachedAgentId, readLinkCache, postAgentResolver, writeLinkCache, ensurePomeGitignored } from '../../chunk-PPJUFV6S.js';
2
+ import { DEFAULT_CONTROL_PLANE_URL, DEFAULT_DASHBOARD_URL, clearLocalCredentials, friendlyHostedError, runSessionCreate, runSessionList, runSessionStop, resolveCredentials, runTaskHosted, discoverRunSet, loadTrialEvents, persistCredentialsAfterLogin, DEFAULT_DOCS_SITE_ORIGIN, resolveSeams, resolveCachedAgentId, readLinkCache, postAgentResolver, writeLinkCache, ensurePomeGitignored } from '../../chunk-44TBTTIT.js';
3
3
  import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-BSKITCXD.js';
4
- import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-W5EJAOWD.js';
4
+ import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-AVUKOLA4.js';
5
5
  import '../../chunk-XDU6TD4O.js';
6
6
  import '../../chunk-CBFKZZBR.js';
7
- import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, readConfigTwins, scoreCountsSummary, markerFor, outcomeOf, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs } from '../../chunk-D3GRORLQ.js';
7
+ import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, readConfigTwins, scoreCountsSummary, markerFor, outcomeOf, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs } from '../../chunk-ONXQCWPY.js';
8
8
  import '../../chunk-NW7HGA2K.js';
9
9
  import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-2Q7AYEUA.js';
10
10
  import { TAPE_ASSERTABLE_TOOLS, seedSchema, openGitHubCloneDatabase, GitHubDomain } from '../../chunk-OKDJRKJV.js';
@@ -12,8 +12,8 @@ import { SLACK_CHECKS } from '../../chunk-IY6G5NWT.js';
12
12
  import { GMAIL_CHECKS } from '../../chunk-WVWV7DLA.js';
13
13
  import { LINEAR_CHECKS } from '../../chunk-APAS34RJ.js';
14
14
  import { oneOf, defineCheck, repoRef, VACUITY_SENTINEL_NUMBER, childStatePath, VACUITY_SENTINEL, statePath, templateSlots, renderCheck, checksDigest, checkPattern, checkNearMissPattern } from '../../chunk-NY55QTVQ.js';
15
- import '../../chunk-GEAGPLZZ.js';
16
- import { createGitHubSmokeApp } from '../../chunk-OHKJGCWS.js';
15
+ import '../../chunk-JQQPZQOJ.js';
16
+ import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-MBM7LY7E.js';
17
17
  import '../../chunk-LZIPGCQJ.js';
18
18
  import { isLegacyEventRow, eventSchema } from '../../chunk-VBATFCWR.js';
19
19
  import { redactEvent, redactSecrets } from '../../chunk-SG6ZTIMT.js';
@@ -4495,10 +4495,10 @@ ${buildGroupFixUserPrompt(ctx)}`;
4495
4495
  var PACKAGE_VERSION = readPackageVersion();
4496
4496
  var SESSION_CREATE_FORMATS = /* @__PURE__ */ new Set(["text", "json", "env"]);
4497
4497
  var DEFAULT_AGENT_FILE = "examples/agents/scripted-triage-agent.ts";
4498
- var DEFAULT_AGENT_COMMAND = `npx tsx ${DEFAULT_AGENT_FILE}`;
4498
+ var DEFAULT_AGENT_COMMAND = `node ${DEFAULT_AGENT_FILE}`;
4499
4499
  var MANIFEST_SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
4500
4500
  function readPackageVersion() {
4501
- if ("0.21.0".length > 0) return "0.21.0";
4501
+ if ("0.21.2".length > 0) return "0.21.2";
4502
4502
  try {
4503
4503
  const here = dirname(fileURLToPath(import.meta.url));
4504
4504
  const candidates = [
@@ -4597,9 +4597,9 @@ function createProgram() {
4597
4597
  console.error(postInitMessage);
4598
4598
  });
4599
4599
  program.command("install").allowUnknownOption().allowExcessArguments().description(
4600
- "Retired (F-893). Prints the Gen-2 wiring path: `claude mcp add \u2026 pome` + `npx skills add pome-sh/digital-twins`, then the pome-intake / REST-launch preflight."
4600
+ "Retired (F-893). Prints the Gen-2 wiring path: `claude mcp add \u2026 pome` + `npx skills add pome-sh/digital-twins --skill '*'`, then the pome-intake / REST-launch preflight."
4601
4601
  ).action(async () => {
4602
- const { runInstall } = await import('../../install-A2PSSNW6.js');
4602
+ const { runInstall } = await import('../../install-4OATBKG3.js');
4603
4603
  runInstall();
4604
4604
  });
4605
4605
  program.command("login").description("Sign in with Clerk and store a hosted team API key (macOS Keychain or ~/.pome/credentials.json)").option(
@@ -4953,7 +4953,7 @@ function createProgram() {
4953
4953
  return;
4954
4954
  }
4955
4955
  {
4956
- const { runDoctorChecks } = await import('../../checks-C63QWUOI.js');
4956
+ const { runDoctorChecks } = await import('../../checks-MPWDPVBN.js');
4957
4957
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
4958
4958
  const doctorReport = await runDoctorChecks({ mode: useLocal ? "full" : "hosted" });
4959
4959
  if (!doctorReport.ok) {
@@ -4991,7 +4991,7 @@ function createProgram() {
4991
4991
  taskForRuns.config.runs
4992
4992
  );
4993
4993
  if (k > 1) {
4994
- const { runTrialGroup } = await import('../../runTrialGroup-NCD4Q2QU.js');
4994
+ const { runTrialGroup } = await import('../../runTrialGroup-FRG5STUA.js');
4995
4995
  const fileForRerun = relative(process.cwd(), file);
4996
4996
  const rerunCommand = defaultTask ? options.trials !== void 0 ? `pome run -n ${k}` : "pome run" : `pome run ${fileForRerun && !fileForRerun.startsWith("..") ? fileForRerun : file} -n ${k}`;
4997
4997
  const groupResult = await runTrialGroup({
@@ -5085,7 +5085,7 @@ function createProgram() {
5085
5085
  process.exitCode = 5;
5086
5086
  return;
5087
5087
  }
5088
- const { runDemo } = await import('../../runDemo-VWKBJRSL.js');
5088
+ const { runDemo } = await import('../../runDemo-YP7OOX3I.js');
5089
5089
  const result = await runDemo({
5090
5090
  apiBase: opts.apiUrl.replace(/\/$/, ""),
5091
5091
  dashboardBase: process.env.POME_DASHBOARD_URL ?? DEFAULT_DASHBOARD_URL,
@@ -5103,7 +5103,7 @@ function createProgram() {
5103
5103
  program.command("doctor").description(
5104
5104
  "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."
5105
5105
  ).action(async () => {
5106
- const { runDoctorChecks } = await import('../../checks-C63QWUOI.js');
5106
+ const { runDoctorChecks } = await import('../../checks-MPWDPVBN.js');
5107
5107
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5108
5108
  const report = await runDoctorChecks();
5109
5109
  for (const line of renderDoctorReport(report, { passNote: true })) console.error(line);
@@ -5229,19 +5229,18 @@ function createProgram() {
5229
5229
  );
5230
5230
  });
5231
5231
  const twin = program.command("twin").description("Manage local twins");
5232
- twin.command("start").argument("<name>", "Twin name (github | slack | stripe | gmail)").option(
5232
+ twin.command("start").argument("<name>", `Twin name (${TWIN_NAME_LIST.join(" | ")})`).option(
5233
5233
  "--port <port>",
5234
5234
  "Port to bind (default: $PORT, else GMAIL_TWIN_PORT/3336 for gmail, else 3333)"
5235
5235
  ).description(
5236
5236
  "Start a standalone twin as a long-lived foreground server (Ctrl-C to stop)"
5237
5237
  ).action(async (name, options) => {
5238
- const { runTwinStartCommand } = await import('../../twinStart-S2CCEZWQ.js');
5238
+ const { runTwinStartCommand } = await import('../../twinStart-E42H5CYD.js');
5239
5239
  await runTwinStartCommand(name, options);
5240
5240
  });
5241
5241
  twin.command("reset").argument("[name]", "Twin name (default: github)", "github").description("Reset standalone twin state").action(async (name) => {
5242
- const supported = /* @__PURE__ */ new Set(["github", "slack", "stripe", "gmail"]);
5243
- if (!supported.has(name)) {
5244
- throw new Error(`Unknown twin '${name}'. Supported: ${[...supported].join(", ")}.`);
5242
+ if (!isTwinName(name)) {
5243
+ throw new Error(`Unknown twin '${name}'. Supported: ${TWIN_NAME_LIST.join(", ")}.`);
5245
5244
  }
5246
5245
  const dbPaths = name === "gmail" ? [".pome/gmail.db", ".pome-data/gmail/gmail.db"] : [`.pome/${name}.db`, `.pome-data/${name}/${name}.db`];
5247
5246
  for (const dbPath of dbPaths) {
@@ -0,0 +1,5 @@
1
+ export { UnsupportedTwinError, bootTwin } from './chunk-JQQPZQOJ.js';
2
+ export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-MBM7LY7E.js';
3
+ import './chunk-LZIPGCQJ.js';
4
+ import './chunk-VBATFCWR.js';
5
+ import './chunk-SG6ZTIMT.js';
@@ -1,5 +1,5 @@
1
- import { bootTwin } from './chunk-GEAGPLZZ.js';
2
- import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-OHKJGCWS.js';
1
+ import { bootTwin } from './chunk-JQQPZQOJ.js';
2
+ import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-MBM7LY7E.js';
3
3
  import './chunk-LZIPGCQJ.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.21.0",
3
+ "version": "0.21.2",
4
4
  "description": "Digital-twin testing for AI agents — 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-GEAGPLZZ.js';
2
- export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-OHKJGCWS.js';
3
- import './chunk-LZIPGCQJ.js';
4
- import './chunk-VBATFCWR.js';
5
- import './chunk-SG6ZTIMT.js';