@pome-sh/cli 0.31.0 → 0.33.0

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.31.0",
4
- "git_sha": "0c525a5023e8941e14fb2420e222fc90baea0140",
5
- "build_time": "2026-08-27T11:38:56.203Z"
3
+ "version": "0.33.0",
4
+ "git_sha": "19a5eae0c7dd814492b7813601d621b22ee078e7",
5
+ "build_time": "2026-08-28T02:16:12.366Z"
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-TSAQYDC5.js');
186
+ const { bootTwin } = await import('./twinHarness-2OFWSVPK.js');
187
187
  harness = await bootTwin({
188
188
  twin: "github",
189
189
  seedState: void 0,
@@ -1,5 +1,5 @@
1
- import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-EMIRZNHN.js';
2
- import { readSeedFileText, parseSeedFileText, soleTwinOf, seedsForTwins } from './chunk-IHKUFGYW.js';
1
+ import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-YJ5PASVX.js';
2
+ import { readSeedFileText, parseSeedFileText, soleTwinOf, seedsForTwins } from './chunk-DWOCTCSE.js';
3
3
  import { readManifest, normalizeManifestTwins } from './chunk-2V5A7NWP.js';
4
4
  import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema, isMultiTwinSeedEnvelope } from './chunk-72CG3JNL.js';
5
5
  import { redactSecrets, redactEvent } from './chunk-SG6ZTIMT.js';
@@ -39,7 +39,7 @@ var TWIN_REGISTRY = {
39
39
  defaultSeedState,
40
40
  GitHubDomain,
41
41
  openGitHubCloneDatabase
42
- } = await import('./src-56Y2R7ZQ.js');
42
+ } = await import('./src-DO3BEABU.js');
43
43
  const db = openGitHubCloneDatabase();
44
44
  const domain = new GitHubDomain(db);
45
45
  domain.seed(seedState === void 0 ? defaultSeedState() : seedState);
@@ -63,7 +63,7 @@ var TWIN_REGISTRY = {
63
63
  parseSeed: async (input) => (await import('./seed-IIMBJHAJ.js')).parseSeed(input),
64
64
  seedFields: async () => Object.keys((await import('./seed-IIMBJHAJ.js')).seedSchema.shape),
65
65
  async boot({ seedState, runId, recorder }) {
66
- const { createSlackTwinApp, openSlackTwinDatabase, SlackDomain } = await import('./src-SKCWAMVQ.js');
66
+ const { createSlackTwinApp, openSlackTwinDatabase, SlackDomain } = await import('./src-ANO374BX.js');
67
67
  const db = openSlackTwinDatabase(":memory:");
68
68
  const domain = new SlackDomain(db);
69
69
  domain.applySeed(seedState);
@@ -90,8 +90,8 @@ var TWIN_REGISTRY = {
90
90
  parseSeed: async (input) => (await import('./seed-YWDTT2WL.js')).parseSeed(input),
91
91
  seedFields: async () => Object.keys((await import('./seed-YWDTT2WL.js')).seedSchema.shape),
92
92
  async boot({ seedState, runId, recorder, twinBaseUrl }) {
93
- const stripeTwin = await import('./src-PW7U25ZX.js');
94
- const { createApp } = await import('./server-DMLORMOV.js');
93
+ const stripeTwin = await import('./src-AMLUIPYO.js');
94
+ const { createApp } = await import('./server-FBKFPGR4.js');
95
95
  const {
96
96
  applySeed: applyStripeSeed,
97
97
  createTwinStripeApp,
@@ -136,7 +136,7 @@ var TWIN_REGISTRY = {
136
136
  parseSeed: async (input) => (await import('./seed-NR6RUKXV.js')).parseSeed(input),
137
137
  seedFields: async () => Object.keys((await import('./seed-NR6RUKXV.js')).gmailSeedSchema.shape),
138
138
  async boot({ seedState, runId, recorder }) {
139
- const { createGmailTwinApp, GmailDomain, openGmailTwinDatabase, parseSeed } = await import('./src-KSLAF3I4.js');
139
+ const { createGmailTwinApp, GmailDomain, openGmailTwinDatabase, parseSeed } = await import('./src-YGMRIKFV.js');
140
140
  const db = openGmailTwinDatabase(":memory:");
141
141
  const seed = parseSeed(seedState);
142
142
  const domain = new GmailDomain(db);
@@ -165,7 +165,7 @@ var TWIN_REGISTRY = {
165
165
  LinearDomain,
166
166
  openLinearTwinDatabase,
167
167
  parseSeed
168
- } = await import('./src-FK536BIR.js');
168
+ } = await import('./src-5SOF4PDV.js');
169
169
  const db = openLinearTwinDatabase(":memory:");
170
170
  const seed = parseSeed(seedState);
171
171
  const domain = new LinearDomain(db);
@@ -181,7 +181,7 @@ var TWIN_REGISTRY = {
181
181
  }
182
182
  };
183
183
  async function createGitHubSmokeApp() {
184
- const { createGitHubCloneApp } = await import('./src-56Y2R7ZQ.js');
184
+ const { createGitHubCloneApp } = await import('./src-DO3BEABU.js');
185
185
  return createGitHubCloneApp();
186
186
  }
187
187
  function defaultPortFor(twin, env = process.env) {
@@ -1,4 +1,4 @@
1
- import { isTwinName, TWIN_REGISTRY, TWIN_NAMES } from './chunk-SDBBGCE7.js';
1
+ import { isTwinName, TWIN_REGISTRY, TWIN_NAMES } from './chunk-CNG6DQWX.js';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { parse } from 'yaml';
4
4
 
@@ -1,5 +1,5 @@
1
- import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-EMIRZNHN.js';
2
- import { createRecorder, bootTwin } from './chunk-WJFRBXL5.js';
1
+ import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-YJ5PASVX.js';
2
+ import { createRecorder, bootTwin } from './chunk-T73VMABH.js';
3
3
  import { getAvailablePort } from './chunk-XDU6TD4O.js';
4
4
  import { buildEgressAllowlist, readBlockedEgress } from './chunk-CBFKZZBR.js';
5
5
  import { eventSchema } from './chunk-6KJC4BTO.js';
@@ -1,5 +1,5 @@
1
- import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-SDBBGCE7.js';
2
- import { createFileBackedRecorderStore, createRecorderStore } from './chunk-E665XWYU.js';
1
+ import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-CNG6DQWX.js';
2
+ import { createFileBackedRecorderStore, createRecorderStore } from './chunk-VOHTQV4J.js';
3
3
 
4
4
  // src/recorder/recorder.ts
5
5
  function createRecorder(options = {}) {
@@ -418,10 +418,6 @@ var twinMeta = z.object({
418
418
  healthz: z.custom(isFunction).optional(),
419
419
  bodyReader: z.custom(isFunction).optional(),
420
420
  middleware: z.custom(isFunction).optional(),
421
- legacyMcp: z.object({
422
- aliases: z.boolean().optional(),
423
- missingTool: z.custom(isFunction).optional()
424
- }).optional(),
425
421
  pomeHealth: z.custom(isFunction).optional(),
426
422
  unsupported: z.custom(isFunction).optional(),
427
423
  pomeRoutes: z.record(z.string(), z.custom(isFunction)).optional(),
@@ -1610,25 +1606,7 @@ function createApp(definition, options = {}) {
1610
1606
  }));
1611
1607
  session.post("/mcp/call", recorder.handle({ mutation: false }, async (c) => {
1612
1608
  const raw = await readBody(c);
1613
- let call;
1614
- if (definition.legacyMcp?.aliases) {
1615
- const rec = raw && typeof raw === "object" && !Array.isArray(raw) ? raw : {};
1616
- const name = rec.tool ?? rec.name;
1617
- if (typeof name !== "string" || name.length === 0) {
1618
- const missing = definition.legacyMcp.missingTool;
1619
- if (missing) {
1620
- const envelope = missing();
1621
- return { status: envelope.status, body: envelope.body };
1622
- }
1623
- z.object({ tool: z.string().min(1) }).parse(rec);
1624
- }
1625
- call = {
1626
- tool: name,
1627
- arguments: rec.arguments ?? rec.params ?? {}
1628
- };
1629
- } else {
1630
- call = z.object({ tool: z.string().min(1), arguments: jsonRecord.default({}) }).parse(raw);
1631
- }
1609
+ const call = z.object({ tool: z.string().min(1), arguments: jsonRecord.default({}) }).parse(raw);
1632
1610
  setRecordedTool(c, call.tool);
1633
1611
  const tool = findTool(definition, call.tool);
1634
1612
  const parsed = tool.schema.parse(call.arguments);
@@ -1,9 +1,9 @@
1
1
  import { gmailSeedSchema, defaultSeedState } from './chunk-3T5XN64P.js';
2
2
  import { linearSeedSchema, defaultSeedState as defaultSeedState$1 } from './chunk-Q5NBPR57.js';
3
- import { isTwinName, TWIN_REGISTRY } from './chunk-SDBBGCE7.js';
3
+ import { isTwinName, TWIN_REGISTRY } from './chunk-CNG6DQWX.js';
4
4
  import { criterionSchema, normalizeTaskConfigKeys, finalizeResponseSchema, HostedDiscardRefusedError, HostedOrchError, HostedAuthError, HostedQuotaError, submitResultResponseSchema, createEvalSessionResponseSchema, createSessionResponseSchema, sessionPublicSchema } from './chunk-72CG3JNL.js';
5
5
  import { seedSchema, parseSeed, defaultSeedState as defaultSeedState$2 } from './chunk-HJX25USP.js';
6
- import { toTwinHttpEventRow } from './chunk-E665XWYU.js';
6
+ import { toTwinHttpEventRow } from './chunk-VOHTQV4J.js';
7
7
  import { redactEvent, redactSecrets } from './chunk-SG6ZTIMT.js';
8
8
  import { mkdir, appendFile, writeFile, readFile } from 'node:fs/promises';
9
9
  import { existsSync } from 'node:fs';
@@ -181,24 +181,18 @@ var stripeSeedStateSchema = z.object({
181
181
  account_id: z.string().min(1).optional()
182
182
  })
183
183
  ).default([]),
184
- customers: z.array(z.record(z.string(), z.unknown())).default([]),
185
- products: z.array(z.record(z.string(), z.unknown())).default([]),
186
- prices: z.array(z.record(z.string(), z.unknown())).default([]),
184
+ failure_injection: z.array(stripeFailureInjectionRuleSchema).default([]),
187
185
  payment_intents: z.array(z.record(z.string(), z.unknown())).default([]),
188
186
  charges: z.array(z.record(z.string(), z.unknown())).default([]),
189
- events: z.array(z.record(z.string(), z.unknown())).default([]),
190
- balances: z.array(z.record(z.string(), z.unknown())).default([]),
191
- failure_injection: z.array(stripeFailureInjectionRuleSchema).default([])
187
+ refunds: z.array(z.record(z.string(), z.unknown())).default([]),
188
+ balance_transactions: z.array(z.record(z.string(), z.unknown())).default([])
192
189
  }).strict();
193
190
  var slackSeedStateSchema = z.object({
194
191
  team: z.record(z.string(), z.unknown()).optional(),
195
192
  users: z.array(z.record(z.string(), z.unknown())).default([]),
196
193
  channels: z.array(z.record(z.string(), z.unknown())).default([]),
197
- // Permissive like its siblings — the vendored `parseSeed` does the
198
- // regex-level validation. It has to be listed at all because `.strict()`
199
- // REJECTS an unlisted key: without this line a slack seed declaring `files`
200
- // fails to parse rather than being stripped.
201
- files: z.array(z.record(z.string(), z.unknown())).default([])
194
+ files: z.array(z.record(z.string(), z.unknown())).default([]),
195
+ emoji: z.array(z.record(z.string(), z.unknown())).default([])
202
196
  }).strict();
203
197
  var seedStateSchema = z.union([
204
198
  gmailSeedSchema,
@@ -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-GNMDGZJF.js';
4
- import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-EMIRZNHN.js';
3
+ import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-PNR7OHDC.js';
4
+ import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-YJ5PASVX.js';
5
5
  import './chunk-NW7HGA2K.js';
6
6
  import './chunk-3T5XN64P.js';
7
7
  import './chunk-Q5NBPR57.js';
8
- import { bootTwin } from './chunk-WJFRBXL5.js';
9
- import './chunk-SDBBGCE7.js';
8
+ import { bootTwin } from './chunk-T73VMABH.js';
9
+ import './chunk-CNG6DQWX.js';
10
10
  import { getAvailablePort } from './chunk-XDU6TD4O.js';
11
11
  import { HostedQuotaError, HostedOrchError } from './chunk-72CG3JNL.js';
12
12
  import './chunk-CBFKZZBR.js';
13
13
  import './chunk-HJX25USP.js';
14
- import './chunk-E665XWYU.js';
14
+ import './chunk-VOHTQV4J.js';
15
15
  import './chunk-6KJC4BTO.js';
16
16
  import './chunk-SG6ZTIMT.js';
17
17
  import './chunk-CF6EIU2U.js';
@@ -1,15 +1,15 @@
1
1
  import { newGroupId, criterionPhrase } from './chunk-RGZBC7NF.js';
2
- import { runTaskHosted, resolveRunAgentIdentity } from './chunk-GUAGU65D.js';
3
- import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-EMIRZNHN.js';
4
- import './chunk-IHKUFGYW.js';
2
+ import { runTaskHosted, resolveRunAgentIdentity } from './chunk-A2VNLUP7.js';
3
+ import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-YJ5PASVX.js';
4
+ import './chunk-DWOCTCSE.js';
5
5
  import './chunk-NW7HGA2K.js';
6
6
  import './chunk-3T5XN64P.js';
7
7
  import './chunk-Q5NBPR57.js';
8
- import './chunk-SDBBGCE7.js';
8
+ import './chunk-CNG6DQWX.js';
9
9
  import './chunk-2V5A7NWP.js';
10
10
  import { HostedQuotaError, HostedTrialError } from './chunk-72CG3JNL.js';
11
11
  import './chunk-HJX25USP.js';
12
- import './chunk-E665XWYU.js';
12
+ import './chunk-VOHTQV4J.js';
13
13
  import './chunk-6KJC4BTO.js';
14
14
  import './chunk-SG6ZTIMT.js';
15
15
  import './chunk-CF6EIU2U.js';
@@ -1,4 +1,4 @@
1
- export { POME_RECORDER_EVENTS_PATH, PROVIDER_SHAPED_TEAM_ID, TwinBootError, TwinError, UnknownToolError, bearerAuth, createAdminGate, createApp, createFileBackedRecorderStore, createRecorderHandle, createRecorderStore, created, ensureTwinAuthSecret, failureInjectionMiddleware, formTokenResolver, isLoopbackHost, mintProviderToken, ok, queryTokenResolver, recordedRequestHeaders, requireAdminAuth, resolveAuthSecret, resolveRecorderStore, serve, setClientIp, setRecordedTool, toTwinHttpEventRow, twinBuildInfo, verifyProviderToken } from './chunk-E665XWYU.js';
1
+ export { POME_RECORDER_EVENTS_PATH, PROVIDER_SHAPED_TEAM_ID, TwinBootError, TwinError, UnknownToolError, bearerAuth, createAdminGate, createApp, createFileBackedRecorderStore, createRecorderHandle, createRecorderStore, created, ensureTwinAuthSecret, failureInjectionMiddleware, formTokenResolver, isLoopbackHost, mintProviderToken, ok, queryTokenResolver, recordedRequestHeaders, requireAdminAuth, resolveAuthSecret, resolveRecorderStore, serve, setClientIp, setRecordedTool, toTwinHttpEventRow, twinBuildInfo, verifyProviderToken } from './chunk-VOHTQV4J.js';
2
2
  import './chunk-6KJC4BTO.js';
3
3
  export { redactEvent, redactSecrets } from './chunk-SG6ZTIMT.js';
4
4
  export { FAILURE_INJECTION_OVERRIDE_KEY, createFailureInjectionStore, failureInjectionRuleSchema } from './chunk-CF6EIU2U.js';
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
- import { DEFAULT_CONTROL_PLANE_URL, DEFAULT_DASHBOARD_URL, clearLocalCredentials, friendlyHostedError, SESSION_TWIN_NAMES, runSessionCreate, runSessionList, runSessionStop, resolveCredentials, runTaskHosted, discoverRunSet, VERDICT_ARTIFACT_VERSION, persistCredentialsAfterLogin, DEFAULT_DOCS_SITE_ORIGIN, resolveSeams, resolveCachedAgentId, readLinkCache, postAgentResolver, writeLinkCache, ensurePomeGitignored } from '../../chunk-GUAGU65D.js';
3
- import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-GNMDGZJF.js';
4
- import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-EMIRZNHN.js';
5
- import '../../chunk-IHKUFGYW.js';
2
+ import { DEFAULT_CONTROL_PLANE_URL, DEFAULT_DASHBOARD_URL, clearLocalCredentials, friendlyHostedError, SESSION_TWIN_NAMES, runSessionCreate, runSessionList, runSessionStop, resolveCredentials, runTaskHosted, discoverRunSet, VERDICT_ARTIFACT_VERSION, persistCredentialsAfterLogin, DEFAULT_DOCS_SITE_ORIGIN, resolveSeams, resolveCachedAgentId, readLinkCache, postAgentResolver, writeLinkCache, ensurePomeGitignored } from '../../chunk-A2VNLUP7.js';
3
+ import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-PNR7OHDC.js';
4
+ import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-YJ5PASVX.js';
5
+ import '../../chunk-DWOCTCSE.js';
6
6
  import '../../chunk-NW7HGA2K.js';
7
7
  import { GMAIL_CHECKS } from '../../chunk-JM6VS62R.js';
8
8
  import '../../chunk-3T5XN64P.js';
9
9
  import { LINEAR_CHECKS } from '../../chunk-TSOSDKXP.js';
10
10
  import '../../chunk-Q5NBPR57.js';
11
- import '../../chunk-WJFRBXL5.js';
12
- import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-SDBBGCE7.js';
11
+ import '../../chunk-T73VMABH.js';
12
+ import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-CNG6DQWX.js';
13
13
  import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-2V5A7NWP.js';
14
14
  import '../../chunk-XDU6TD4O.js';
15
15
  import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-72CG3JNL.js';
@@ -18,7 +18,7 @@ import { TAPE_ASSERTABLE_TOOLS } from '../../chunk-C4BVTUA3.js';
18
18
  import { seedSchema } from '../../chunk-HJX25USP.js';
19
19
  import { SLACK_CHECKS } from '../../chunk-2ZGVDTJC.js';
20
20
  import { oneOf, defineCheck, repoRef, VACUITY_SENTINEL_NUMBER, childStatePath, VACUITY_SENTINEL, statePath, templateSlots, renderCheck, checksDigest, checkPattern, checkNearMissPattern } from '../../chunk-JWJYNAWI.js';
21
- import '../../chunk-E665XWYU.js';
21
+ import '../../chunk-VOHTQV4J.js';
22
22
  import { eventSchema, isLegacyEventRow } from '../../chunk-6KJC4BTO.js';
23
23
  import { redactEvent, redactSecrets } from '../../chunk-SG6ZTIMT.js';
24
24
  import '../../chunk-CF6EIU2U.js';
@@ -821,7 +821,7 @@ async function throwForStatus(res) {
821
821
 
822
822
  // src/task/seed-verifier.ts
823
823
  async function verifySeedWithTwin(seed) {
824
- const { GitHubDomain, openGitHubCloneDatabase } = await import('../../src-56Y2R7ZQ.js');
824
+ const { GitHubDomain, openGitHubCloneDatabase } = await import('../../src-DO3BEABU.js');
825
825
  const db = openGitHubCloneDatabase(":memory:");
826
826
  try {
827
827
  new GitHubDomain(db).seed(seed);
@@ -4622,7 +4622,7 @@ var DEFAULT_AGENT_COMMAND = `node ${DEFAULT_AGENT_FILE}`;
4622
4622
  var MANIFEST_SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
4623
4623
  var MAX_UNREADABLE_PATHS_SHOWN = 5;
4624
4624
  function readPackageVersion() {
4625
- if ("0.31.0".length > 0) return "0.31.0";
4625
+ if ("0.33.0".length > 0) return "0.33.0";
4626
4626
  try {
4627
4627
  const here = dirname(fileURLToPath(import.meta.url));
4628
4628
  const candidates = [
@@ -5069,7 +5069,7 @@ function createProgram() {
5069
5069
  return;
5070
5070
  }
5071
5071
  {
5072
- const { runDoctorChecks } = await import('../../checks-KGDGQ35O.js');
5072
+ const { runDoctorChecks } = await import('../../checks-CAP2CSEW.js');
5073
5073
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5074
5074
  const doctorReport = await runDoctorChecks({ mode: useLocal ? "full" : "hosted" });
5075
5075
  if (!doctorReport.ok) {
@@ -5107,7 +5107,7 @@ function createProgram() {
5107
5107
  taskForRuns.config.runs
5108
5108
  );
5109
5109
  if (k > 1) {
5110
- const { runTrialGroup } = await import('../../runTrialGroup-T2H7T54Z.js');
5110
+ const { runTrialGroup } = await import('../../runTrialGroup-UBN46ZEJ.js');
5111
5111
  const fileForRerun = relative(process.cwd(), file);
5112
5112
  const rerunCommand = defaultTask ? options.trials !== void 0 ? `pome run -n ${k}` : "pome run" : `pome run ${fileForRerun && !fileForRerun.startsWith("..") ? fileForRerun : file} -n ${k}`;
5113
5113
  const groupResult = await runTrialGroup({
@@ -5201,7 +5201,7 @@ function createProgram() {
5201
5201
  process.exitCode = 5;
5202
5202
  return;
5203
5203
  }
5204
- const { runDemo } = await import('../../runDemo-PSXUXCR5.js');
5204
+ const { runDemo } = await import('../../runDemo-6WD2RSIH.js');
5205
5205
  const result = await runDemo({
5206
5206
  apiBase: opts.apiUrl.replace(/\/$/, ""),
5207
5207
  dashboardBase: process.env.POME_DASHBOARD_URL ?? DEFAULT_DASHBOARD_URL,
@@ -5219,7 +5219,7 @@ function createProgram() {
5219
5219
  program.command("doctor").description(
5220
5220
  "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."
5221
5221
  ).action(async () => {
5222
- const { runDoctorChecks } = await import('../../checks-KGDGQ35O.js');
5222
+ const { runDoctorChecks } = await import('../../checks-CAP2CSEW.js');
5223
5223
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5224
5224
  const report = await runDoctorChecks();
5225
5225
  for (const line of renderDoctorReport(report, { passNote: true })) console.error(line);
@@ -5396,13 +5396,16 @@ function createProgram() {
5396
5396
  ).description(
5397
5397
  "Start a standalone twin as a long-lived foreground server (Ctrl-C to stop)"
5398
5398
  ).action(async (name, options) => {
5399
- const { runTwinStartCommand } = await import('../../twinStart-VUCN4CFY.js');
5399
+ const { runTwinStartCommand } = await import('../../twinStart-2ZNLS3ON.js');
5400
5400
  await runTwinStartCommand(name, options);
5401
5401
  });
5402
- twin.command("seed").argument("<name...>", `Twin name (${TWIN_NAME_LIST.join(" | ")}). Repeat for one file covering several.`).option("--out <path>", "Write to this file instead of stdout. Refuses to overwrite.").description(
5402
+ twin.command("seed").argument("<name...>", `Twin name (${TWIN_NAME_LIST.join(" | ")}). Repeat for one file covering several.`).option("--out <path>", "Write to this file instead of stdout. Refuses to overwrite.").option(
5403
+ "--for-task",
5404
+ "Emit the shape a `<task>.seed.json` sidecar takes \u2014 flat for one twin, the per-twin envelope for more, the rule the task's `## Config` twins already set. Without it you get a seed file for `--seed`, which is always the envelope."
5405
+ ).description(
5403
5406
  "Print a starter seed file for a twin, generated from the twin's own starting state"
5404
5407
  ).action(async (names, options) => {
5405
- const { runTwinSeedCommand } = await import('../../twinSeed-XIKTIHX2.js');
5408
+ const { runTwinSeedCommand } = await import('../../twinSeed-2MRVMNIT.js');
5406
5409
  await runTwinSeedCommand(names, options);
5407
5410
  });
5408
5411
  twin.command("reset").argument("[name]", "Twin name (default: github)", "github").description("Reset standalone twin state").action(async (name) => {
@@ -3,7 +3,7 @@ import { MCP_PAGE_MAX, defaultSeedState, linearSeedSchema, notFound, badUserInpu
3
3
  export { DEFAULT_LINEAR_CLOCK, DEFAULT_LINEAR_EMAIL, DEFAULT_LINEAR_PORT, DEFAULT_LINEAR_SID, DEFAULT_LINEAR_TOKEN, LINEAR_PROVIDER_TOKEN_PREFIX, LinearTwinError, STATE_EXPORT_CAP, assertWebhookUrl, defaultSeedState, linearErrorEnvelope, linearSeedSchema, loadSeedFromEnv, parseSeed, unauthorizedEnvelope, unsupportedEnvelope, webhookUrlError } from './chunk-Q5NBPR57.js';
4
4
  import './chunk-JWJYNAWI.js';
5
5
  import { routeInputDeclarer, mountDeclaredRoute, UndeclaredInputError } from './chunk-IZFM7W2V.js';
6
- import { loadMcpToolFixture, deriveMcpToolTable, openTwinDatabase, defineTwin, createApp } from './chunk-E665XWYU.js';
6
+ import { loadMcpToolFixture, deriveMcpToolTable, openTwinDatabase, defineTwin, createApp } from './chunk-VOHTQV4J.js';
7
7
  import './chunk-6KJC4BTO.js';
8
8
  import './chunk-SG6ZTIMT.js';
9
9
  import './chunk-CF6EIU2U.js';
@@ -1,5 +1,5 @@
1
1
  import { routeInputDeclarer, bracketedQuery, integerInput, booleanInput, mountDeclaredRoute, UndeclaredInputError } from './chunk-IZFM7W2V.js';
2
- import { loadMcpToolFixture, openTwinDatabase, defineTwin, twinBuildInfo, deriveMcpToolTable, failureInjectionMiddleware, createApp, recordedRequestHeaders, UnknownToolError } from './chunk-E665XWYU.js';
2
+ import { loadMcpToolFixture, openTwinDatabase, defineTwin, twinBuildInfo, deriveMcpToolTable, failureInjectionMiddleware, createApp, recordedRequestHeaders, UnknownToolError } from './chunk-VOHTQV4J.js';
3
3
  import './chunk-6KJC4BTO.js';
4
4
  import './chunk-SG6ZTIMT.js';
5
5
  import { defaultSeed, seedSchema, ensureMigratedColumns, ensureStripeTables, resetStripeTables, looksLikeApiKey, resolveSidFromKey, applySeed, newId, newClientSecret, nowUnix, requestId, nowIso } from './chunk-SLTBPJKZ.js';
@@ -3,7 +3,7 @@ import './chunk-JWJYNAWI.js';
3
3
  import { defaultSeedState, parseSeed } from './chunk-ZDS25NS5.js';
4
4
  export { defaultSeedState, loadSeedFromEnv, parseSeed, seedSchema } from './chunk-ZDS25NS5.js';
5
5
  import { routeInputDeclarer, booleanInput, integerInput, mountDeclaredRoute, UndeclaredInputError } from './chunk-IZFM7W2V.js';
6
- import { loadMcpToolFixture, defineTwin, queryTokenResolver, formTokenResolver, deriveMcpToolTable, UnknownToolError, openTwinDatabase, createApp, typeDisagreements } from './chunk-E665XWYU.js';
6
+ import { loadMcpToolFixture, defineTwin, queryTokenResolver, formTokenResolver, deriveMcpToolTable, UnknownToolError, openTwinDatabase, createApp, typeDisagreements } from './chunk-VOHTQV4J.js';
7
7
  import './chunk-6KJC4BTO.js';
8
8
  import './chunk-SG6ZTIMT.js';
9
9
  import './chunk-CF6EIU2U.js';
@@ -3101,12 +3101,6 @@ var slackTwinDefinition = defineTwin({
3101
3101
  // engine-owned surface — official Slack SDKs default to
3102
3102
  // application/x-www-form-urlencoded — and malformed JSON collapses to {}.
3103
3103
  bodyReader: (c) => parseFormOrJson(c),
3104
- // Frozen legacy /mcp/call surface: {name}/{params} alias keys; a body
3105
- // naming no tool answers 400 {ok:false, error:"invalid_arguments"}.
3106
- legacyMcp: {
3107
- aliases: true,
3108
- missingTool: () => ({ status: 400, body: slackError2("invalid_arguments") })
3109
- },
3110
3104
  // Frozen /_pome/health shape: exactly {ok, twin} — no extras.
3111
3105
  pomeHealth: () => ({}),
3112
3106
  state: ({ domain }) => domain.exportState(),
@@ -2,7 +2,7 @@ import './chunk-C4BVTUA3.js';
2
2
  import { defaultSeedState, parseSeed } from './chunk-HJX25USP.js';
3
3
  export { defaultSeedState, parseSeed, seedSchema } from './chunk-HJX25USP.js';
4
4
  import { routeInputDeclarer, integerInput, mountDeclaredRoute, UndeclaredInputError, MalformedBodyError } from './chunk-IZFM7W2V.js';
5
- import { loadMcpToolFixture, defineTwin, twinBuildInfo, deriveMcpToolTable, UnknownToolError, openTwinDatabase, createApp, typeDisagreements } from './chunk-E665XWYU.js';
5
+ import { loadMcpToolFixture, defineTwin, twinBuildInfo, deriveMcpToolTable, UnknownToolError, openTwinDatabase, createApp, typeDisagreements } from './chunk-VOHTQV4J.js';
6
6
  import './chunk-6KJC4BTO.js';
7
7
  import './chunk-SG6ZTIMT.js';
8
8
  import './chunk-CF6EIU2U.js';
@@ -3,7 +3,7 @@ import { gmailErrorEnvelope, gmailSeedSchema, parseSeed, defaultSeedState, notFo
3
3
  export { DEFAULT_GMAIL_AGENT_EMAIL, GmailError, SEARCH_MAILBOX_MESSAGE_BUDGET, agentPathInboxMailbox, defaultSeedState, gmailErrorEnvelope, gmailSeedSchema, loadSeedFromEnv, parseSearchQuery, parseSeed, validateSearchQuery } from './chunk-3T5XN64P.js';
4
4
  import './chunk-JWJYNAWI.js';
5
5
  import { routeInputDeclarer, integerInput, booleanInput, repeatedInput, mountDeclaredRoute, UndeclaredInputError, MalformedBodyError } from './chunk-IZFM7W2V.js';
6
- import { loadMcpToolFixture, deriveMcpToolTable, defineTwin, openTwinDatabase, createApp } from './chunk-E665XWYU.js';
6
+ import { loadMcpToolFixture, deriveMcpToolTable, defineTwin, openTwinDatabase, createApp } from './chunk-VOHTQV4J.js';
7
7
  import './chunk-6KJC4BTO.js';
8
8
  import './chunk-SG6ZTIMT.js';
9
9
  import './chunk-CF6EIU2U.js';
@@ -0,0 +1,6 @@
1
+ export { UnsupportedTwinError, bootTwin } from './chunk-T73VMABH.js';
2
+ export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-CNG6DQWX.js';
3
+ import './chunk-VOHTQV4J.js';
4
+ import './chunk-6KJC4BTO.js';
5
+ import './chunk-SG6ZTIMT.js';
6
+ import './chunk-CF6EIU2U.js';
@@ -1,7 +1,7 @@
1
- import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-SDBBGCE7.js';
1
+ import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-CNG6DQWX.js';
2
2
  import { writeFile } from 'node:fs/promises';
3
3
 
4
- async function generateSeedFile(twins) {
4
+ async function generateSeedFile(twins, opts = {}) {
5
5
  if (twins.length === 0) {
6
6
  throw new Error(`No twin specified. Pass at least one of: ${TWIN_NAMES.join(", ")}.`);
7
7
  }
@@ -19,7 +19,8 @@ async function generateSeedFile(twins) {
19
19
  const entry = TWIN_REGISTRY[twin];
20
20
  envelope[twin] = await entry.parseSeed(await entry.defaultSeed());
21
21
  }
22
- return `${JSON.stringify(envelope, null, 2)}
22
+ const body = opts.forTask && twins.length === 1 ? envelope[twins[0]] : envelope;
23
+ return `${JSON.stringify(body, null, 2)}
23
24
  `;
24
25
  }
25
26
  async function writeSeedFile(path, text) {
@@ -35,14 +36,17 @@ async function writeSeedFile(path, text) {
35
36
  }
36
37
  }
37
38
  async function runTwinSeedCommand(names, options = {}) {
38
- const text = await generateSeedFile(names);
39
+ const text = await generateSeedFile(names, { forTask: options.forTask });
39
40
  if (options.out === void 0) {
40
41
  process.stdout.write(text);
41
42
  return;
42
43
  }
43
44
  await writeSeedFile(options.out, text);
44
- console.error(`Wrote ${options.out} \u2014 the ${names.join(" + ")} starting seed.`);
45
- console.error(`Boot it: pome twin start ${names[0]} --seed ${options.out}`);
45
+ const what = options.forTask ? "task seed" : "starting seed";
46
+ console.error(`Wrote ${options.out} \u2014 the ${names.join(" + ")} ${what}.`);
47
+ console.error(
48
+ options.forTask ? `Put it next to a task whose \`## Config\` reads twins: [${names.join(", ")}], named <task>.seed.json.` : `Boot it: pome twin start ${names[0]} --seed ${options.out}`
49
+ );
46
50
  }
47
51
 
48
52
  export { generateSeedFile, runTwinSeedCommand, writeSeedFile };
@@ -1,7 +1,7 @@
1
- import { readSeedFileText, seedForTwin, parseSeedFileText, soleTwinOf, twinsNamedBy } from './chunk-IHKUFGYW.js';
2
- import { bootTwin } from './chunk-WJFRBXL5.js';
3
- import { TWIN_REGISTRY, isTwinName, TWIN_NAMES, defaultPortFor } from './chunk-SDBBGCE7.js';
4
- import './chunk-E665XWYU.js';
1
+ import { readSeedFileText, seedForTwin, parseSeedFileText, soleTwinOf, twinsNamedBy } from './chunk-DWOCTCSE.js';
2
+ import { bootTwin } from './chunk-T73VMABH.js';
3
+ import { TWIN_REGISTRY, isTwinName, TWIN_NAMES, defaultPortFor } from './chunk-CNG6DQWX.js';
4
+ import './chunk-VOHTQV4J.js';
5
5
  import './chunk-6KJC4BTO.js';
6
6
  import './chunk-SG6ZTIMT.js';
7
7
  import './chunk-CF6EIU2U.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/cli",
3
- "version": "0.31.0",
3
+ "version": "0.33.0",
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,6 +0,0 @@
1
- export { UnsupportedTwinError, bootTwin } from './chunk-WJFRBXL5.js';
2
- export { STRIPE_LOCAL_ACCOUNT_ID } from './chunk-SDBBGCE7.js';
3
- import './chunk-E665XWYU.js';
4
- import './chunk-6KJC4BTO.js';
5
- import './chunk-SG6ZTIMT.js';
6
- import './chunk-CF6EIU2U.js';