@pome-sh/cli 0.29.1 → 0.30.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.
- package/dist/build-info.json +3 -3
- package/dist/{checks-BZ5L2YNC.js → checks-P272TU4C.js} +2 -2
- package/dist/{chunk-ZYQK4PNC.js → chunk-3DHWCIT2.js} +2 -2
- package/dist/{chunk-B7PA7UDX.js → chunk-IHKUFGYW.js} +1 -1
- package/dist/{chunk-EFX32JE3.js → chunk-KLVIYURL.js} +3 -6
- package/dist/{chunk-VORBQXJN.js → chunk-LSS7PZGW.js} +1 -9
- package/dist/{chunk-SRG22BIH.js → chunk-SDBBGCE7.js} +1 -1
- package/dist/{chunk-XBT6ZLBG.js → chunk-TSOSDKXP.js} +2 -2
- package/dist/{chunk-S6JLWI4S.js → chunk-WJFRBXL5.js} +1 -1
- package/dist/{runDemo-NKSDEHRR.js → runDemo-7AVS4AML.js} +4 -4
- package/dist/{runTrialGroup-IFRZWVRB.js → runTrialGroup-DWFSBMQ2.js} +4 -4
- package/dist/src/cli/main.js +28 -78
- package/dist/{src-5YCI6VIR.js → src-FK536BIR.js} +1 -1
- package/dist/twinHarness-TSAQYDC5.js +6 -0
- package/dist/{twinSeed-MOQXJDEG.js → twinSeed-XIKTIHX2.js} +1 -1
- package/dist/{twinStart-ZDWFU6M4.js → twinStart-VUCN4CFY.js} +3 -3
- package/package.json +1 -1
- package/dist/install-4OATBKG3.js +0 -22
- package/dist/twinHarness-CUVRO5IV.js +0 -6
package/dist/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "pome-sh",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"git_sha": "
|
|
5
|
-
"build_time": "2026-08-
|
|
3
|
+
"version": "0.30.0",
|
|
4
|
+
"git_sha": "179ee2254d787d6197d4928eb55efa88790b102d",
|
|
5
|
+
"build_time": "2026-08-27T09:02:39.186Z"
|
|
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-
|
|
186
|
+
const { bootTwin } = await import('./twinHarness-TSAQYDC5.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
|
|
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 coach skills (`npx skills add pome-sh/digital-twins --skill '*'`)."
|
|
257
257
|
].join("\n")
|
|
258
258
|
};
|
|
259
259
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-
|
|
2
|
-
import { createRecorder, bootTwin } from './chunk-
|
|
1
|
+
import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-LSS7PZGW.js';
|
|
2
|
+
import { createRecorder, bootTwin } from './chunk-WJFRBXL5.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 { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-
|
|
2
|
-
import { readSeedFileText, parseSeedFileText, soleTwinOf, seedsForTwins } from './chunk-
|
|
1
|
+
import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-LSS7PZGW.js';
|
|
2
|
+
import { readSeedFileText, parseSeedFileText, soleTwinOf, seedsForTwins } from './chunk-IHKUFGYW.js';
|
|
3
3
|
import { readManifest, normalizeManifestTwins } from './chunk-XWGZ5C7Y.js';
|
|
4
4
|
import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema, isMultiTwinSeedEnvelope } from './chunk-OTFDQT3H.js';
|
|
5
5
|
import { redactSecrets, redactEvent } from './chunk-SG6ZTIMT.js';
|
|
@@ -79,7 +79,7 @@ function looksLikeVerdictArtifactBase(parsed) {
|
|
|
79
79
|
if (v.source !== "cloud-finalize") return false;
|
|
80
80
|
if (typeof v.session_id !== "string") return false;
|
|
81
81
|
if (typeof v.task_name !== "string") return false;
|
|
82
|
-
if (typeof v.task_path !== "string"
|
|
82
|
+
if (typeof v.task_path !== "string") return false;
|
|
83
83
|
if (v.group_id !== null && typeof v.group_id !== "string") return false;
|
|
84
84
|
if (typeof v.finalized_at !== "string") return false;
|
|
85
85
|
if (typeof v.passed !== "boolean") return false;
|
|
@@ -770,9 +770,6 @@ async function runSessionCreate(opts) {
|
|
|
770
770
|
if (!printedAny) {
|
|
771
771
|
console.error(`Twin URL: ${session.twin_url}`);
|
|
772
772
|
}
|
|
773
|
-
if (opts.showSecrets) {
|
|
774
|
-
console.error("--show-secrets no longer prints secrets. Use --secrets-file <path>.");
|
|
775
|
-
}
|
|
776
773
|
console.error("Secrets redacted.");
|
|
777
774
|
console.error(`Dashboard: ${DEFAULT_DASHBOARD_URL}/twins/${session.session_id}`);
|
|
778
775
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
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-
|
|
3
|
+
import { isTwinName, TWIN_REGISTRY } from './chunk-SDBBGCE7.js';
|
|
4
4
|
import { criterionSchema, normalizeTaskConfigKeys, finalizeResponseSchema, HostedDiscardRefusedError, HostedOrchError, HostedAuthError, HostedQuotaError, submitResultResponseSchema, createEvalSessionResponseSchema, createSessionResponseSchema, sessionPublicSchema } from './chunk-OTFDQT3H.js';
|
|
5
5
|
import { seedSchema, parseSeed, defaultSeedState as defaultSeedState$2 } from './chunk-HJX25USP.js';
|
|
6
6
|
import { toTwinHttpEventRow } from './chunk-E665XWYU.js';
|
|
@@ -421,7 +421,6 @@ function splitSections(markdown) {
|
|
|
421
421
|
return sections;
|
|
422
422
|
}
|
|
423
423
|
var CRITERION_LINE_RE = /^[-*]\s+\[(code|model)(?::([a-z][a-z0-9_-]*))?(\s+always-scored)?\]\s+(.+)$/;
|
|
424
|
-
var LEGACY_CRITERION_LINE_RE = /^[-*]\s+\[([DP])(?::([a-z][a-z0-9_-]*))?\]\s+(.+)$/;
|
|
425
424
|
var NEAR_MISS_CRITERION_LINE_RE = /^[-*]\s*\[\s*(code|model)\b[^\]]*\]/;
|
|
426
425
|
function nearMissCriterionMessage(line) {
|
|
427
426
|
return `Criterion line "${line}" reaches for a [code]/[model] marker but does not match the criterion grammar ${CRITERION_LINE_RE.source} \u2014 fix the marker (e.g. "[code]", "[code:slack]", "[code:slack always-scored]"); a line this close to a criterion is refused rather than silently dropped as prose.`;
|
|
@@ -433,13 +432,6 @@ function parseCriteria(input, twins) {
|
|
|
433
432
|
const criteria = [];
|
|
434
433
|
for (const rawLine of input.split("\n")) {
|
|
435
434
|
const line = rawLine.trim();
|
|
436
|
-
const legacy = line.match(LEGACY_CRITERION_LINE_RE);
|
|
437
|
-
if (legacy) {
|
|
438
|
-
const legacyMarker = `[${legacy[1]}${legacy[2] ? `:${legacy[2]}` : ""}]`;
|
|
439
|
-
throw new Error(
|
|
440
|
-
`Criterion "${legacyMarker} ${legacy[3].trim()}" uses a retired marker \u2014 markers were renamed [D]\u2192[code] and [P]\u2192[model] (tags carry over: [D:github]\u2192[code:github]).`
|
|
441
|
-
);
|
|
442
|
-
}
|
|
443
435
|
const match = line.match(CRITERION_LINE_RE);
|
|
444
436
|
if (!match) {
|
|
445
437
|
if (NEAR_MISS_CRITERION_LINE_RE.test(line)) {
|
|
@@ -165,7 +165,7 @@ var TWIN_REGISTRY = {
|
|
|
165
165
|
LinearDomain,
|
|
166
166
|
openLinearTwinDatabase,
|
|
167
167
|
parseSeed
|
|
168
|
-
} = await import('./src-
|
|
168
|
+
} = await import('./src-FK536BIR.js');
|
|
169
169
|
const db = openLinearTwinDatabase(":memory:");
|
|
170
170
|
const seed = parseSeed(seedState);
|
|
171
171
|
const domain = new LinearDomain(db);
|
|
@@ -363,7 +363,7 @@ var issueState = defineCheck({
|
|
|
363
363
|
});
|
|
364
364
|
var issueHasLabel = defineCheck({
|
|
365
365
|
id: "linear.issue-has-label",
|
|
366
|
-
description: "Resolves the issue, joins its `labelIds` to the workspace label catalog, and asserts the named label is among them
|
|
366
|
+
description: "Resolves the issue, joins its `labelIds` to the workspace label catalog, and asserts the named label is among them, case-insensitively. The join is the point: this export carries label IDS where the seed writes names and twin-github writes objects, so one concept has three shapes and only this one is exported. A label id with no catalog row is a partial export and SKIPS rather than failing.",
|
|
367
367
|
template: 'Issue "{title}" in `{team}` has label "{label}"',
|
|
368
368
|
params: { title: issueTitle, team: teamKey, label: labelName },
|
|
369
369
|
substrate: "final",
|
|
@@ -429,7 +429,7 @@ var issueEstimate = defineCheck({
|
|
|
429
429
|
});
|
|
430
430
|
var issueAssignee = defineCheck({
|
|
431
431
|
id: "linear.issue-assignee",
|
|
432
|
-
description: "Resolves the issue, then its assignee, and matches the given reference against that user's email, name OR displayName
|
|
432
|
+
description: "Resolves the issue, then its assignee, and matches the given reference against that user's email, name OR displayName. An UNASSIGNED issue is a real FAIL. Declared with no shipped corpus user. This is the check whose `subject` earns its keep: an email reference is destroyed by a team's `PII_PATTERNS`, which the twin's own redactor has no equivalent of, so without the declaration the criterion would silently be unable to fire.",
|
|
433
433
|
template: 'Issue "{title}" in `{team}` is assigned to `{user}`',
|
|
434
434
|
params: { title: issueTitle, team: teamKey, user: userRef },
|
|
435
435
|
substrate: "final",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-
|
|
1
|
+
import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-SDBBGCE7.js';
|
|
2
2
|
import { createFileBackedRecorderStore, createRecorderStore } from './chunk-E665XWYU.js';
|
|
3
3
|
|
|
4
4
|
// src/recorder/recorder.ts
|
|
@@ -1,12 +1,12 @@
|
|
|
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-
|
|
4
|
-
import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-
|
|
3
|
+
import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-3DHWCIT2.js';
|
|
4
|
+
import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-LSS7PZGW.js';
|
|
5
5
|
import './chunk-NW7HGA2K.js';
|
|
6
6
|
import './chunk-3T5XN64P.js';
|
|
7
7
|
import './chunk-Q5NBPR57.js';
|
|
8
|
-
import { bootTwin } from './chunk-
|
|
9
|
-
import './chunk-
|
|
8
|
+
import { bootTwin } from './chunk-WJFRBXL5.js';
|
|
9
|
+
import './chunk-SDBBGCE7.js';
|
|
10
10
|
import { getAvailablePort } from './chunk-XDU6TD4O.js';
|
|
11
11
|
import { HostedQuotaError, HostedOrchError } from './chunk-OTFDQT3H.js';
|
|
12
12
|
import './chunk-CBFKZZBR.js';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { newGroupId, criterionPhrase } from './chunk-RGZBC7NF.js';
|
|
2
|
-
import { runTaskHosted, resolveRunAgentIdentity } from './chunk-
|
|
3
|
-
import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-
|
|
4
|
-
import './chunk-
|
|
2
|
+
import { runTaskHosted, resolveRunAgentIdentity } from './chunk-KLVIYURL.js';
|
|
3
|
+
import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-LSS7PZGW.js';
|
|
4
|
+
import './chunk-IHKUFGYW.js';
|
|
5
5
|
import './chunk-NW7HGA2K.js';
|
|
6
6
|
import './chunk-3T5XN64P.js';
|
|
7
7
|
import './chunk-Q5NBPR57.js';
|
|
8
|
-
import './chunk-
|
|
8
|
+
import './chunk-SDBBGCE7.js';
|
|
9
9
|
import './chunk-XWGZ5C7Y.js';
|
|
10
10
|
import { HostedQuotaError, HostedTrialError } from './chunk-OTFDQT3H.js';
|
|
11
11
|
import './chunk-HJX25USP.js';
|
package/dist/src/cli/main.js
CHANGED
|
@@ -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-
|
|
3
|
-
import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-
|
|
4
|
-
import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
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-KLVIYURL.js';
|
|
3
|
+
import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-3DHWCIT2.js';
|
|
4
|
+
import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-LSS7PZGW.js';
|
|
5
|
+
import '../../chunk-IHKUFGYW.js';
|
|
6
6
|
import '../../chunk-NW7HGA2K.js';
|
|
7
7
|
import { GMAIL_CHECKS } from '../../chunk-JM6VS62R.js';
|
|
8
8
|
import '../../chunk-3T5XN64P.js';
|
|
9
|
-
import { LINEAR_CHECKS } from '../../chunk-
|
|
9
|
+
import { LINEAR_CHECKS } from '../../chunk-TSOSDKXP.js';
|
|
10
10
|
import '../../chunk-Q5NBPR57.js';
|
|
11
|
-
import '../../chunk-
|
|
12
|
-
import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-
|
|
11
|
+
import '../../chunk-WJFRBXL5.js';
|
|
12
|
+
import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-SDBBGCE7.js';
|
|
13
13
|
import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-XWGZ5C7Y.js';
|
|
14
14
|
import '../../chunk-XDU6TD4O.js';
|
|
15
15
|
import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-OTFDQT3H.js';
|
|
@@ -19,7 +19,7 @@ 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
21
|
import '../../chunk-E665XWYU.js';
|
|
22
|
-
import {
|
|
22
|
+
import { eventSchema, isLegacyEventRow } from '../../chunk-6KJC4BTO.js';
|
|
23
23
|
import { redactEvent, redactSecrets } from '../../chunk-SG6ZTIMT.js';
|
|
24
24
|
import '../../chunk-CF6EIU2U.js';
|
|
25
25
|
import { Command } from 'commander';
|
|
@@ -35,7 +35,6 @@ import { z } from 'zod';
|
|
|
35
35
|
import Anthropic from '@anthropic-ai/sdk';
|
|
36
36
|
import { zodOutputFormat } from '@anthropic-ai/sdk/helpers/zod';
|
|
37
37
|
|
|
38
|
-
var LEGACY_EVENTS_MESSAGE = "this run was produced by an older CLI version (pre-M0); rerun against current CLI to view";
|
|
39
38
|
async function readEventsJsonl(runDir) {
|
|
40
39
|
let raw;
|
|
41
40
|
try {
|
|
@@ -47,9 +46,6 @@ async function readEventsJsonl(runDir) {
|
|
|
47
46
|
throw err;
|
|
48
47
|
}
|
|
49
48
|
const rows = raw.split("\n").map((line) => line.trim()).filter((line) => line.length > 0).map((line) => JSON.parse(line));
|
|
50
|
-
if (rows.some(isLegacyEventRow)) {
|
|
51
|
-
return { kind: "legacy" };
|
|
52
|
-
}
|
|
53
49
|
const events = rows.map((row) => eventSchema.parse(row));
|
|
54
50
|
return { kind: "events", events };
|
|
55
51
|
}
|
|
@@ -409,7 +405,7 @@ var DOCS_TOPICS = [
|
|
|
409
405
|
{
|
|
410
406
|
id: "getting-started",
|
|
411
407
|
title: "Quickstart",
|
|
412
|
-
path: "/
|
|
408
|
+
path: "/quickstart/claude-code",
|
|
413
409
|
keywords: ["install", "quickstart", "setup", "begin"]
|
|
414
410
|
},
|
|
415
411
|
{
|
|
@@ -424,9 +420,6 @@ var DOCS_TOPICS = [
|
|
|
424
420
|
"register",
|
|
425
421
|
"pome.json",
|
|
426
422
|
"connect",
|
|
427
|
-
// Migrated from the retired skills-setup topic: wiring your own
|
|
428
|
-
// agent is now the "bring your own agent" path. ("pome-setup" / "setup"
|
|
429
|
-
// already resolve to getting-started via its "setup" keyword.)
|
|
430
423
|
"wire"
|
|
431
424
|
]
|
|
432
425
|
},
|
|
@@ -436,14 +429,6 @@ var DOCS_TOPICS = [
|
|
|
436
429
|
path: "/docs/how-pome-works",
|
|
437
430
|
keywords: ["twins", "scenarios", "runs", "scoring", "artifacts", "loop"]
|
|
438
431
|
},
|
|
439
|
-
// The Gen-1 /setup and /test-with-pome skill pages were dropped from the docs
|
|
440
|
-
// nav, and the CLI commands that pointed at them are gone. The two
|
|
441
|
-
// topic entries are gone, but their still-live keywords are MIGRATED onto the
|
|
442
|
-
// surviving replacement topics so `pome docs <kw>` keeps routing:
|
|
443
|
-
// wire → existing-agent; test-with-pome / pome-test → cli-run;
|
|
444
|
-
// eval → cli (the CLI reference index — no dedicated eval page exists).
|
|
445
|
-
// (setup / pome-setup / register / run scenarios / /setup all already
|
|
446
|
-
// resolve via existing substrings — see the tests.)
|
|
447
432
|
{
|
|
448
433
|
id: "dashboard",
|
|
449
434
|
title: "Pome Dashboard",
|
|
@@ -453,7 +438,7 @@ var DOCS_TOPICS = [
|
|
|
453
438
|
{
|
|
454
439
|
id: "twins",
|
|
455
440
|
title: "Twins overview",
|
|
456
|
-
path: "/docs/twins/
|
|
441
|
+
path: "/docs/twins/coverage",
|
|
457
442
|
keywords: ["sandbox", "digital twin", "hosted"]
|
|
458
443
|
},
|
|
459
444
|
{
|
|
@@ -484,10 +469,8 @@ var DOCS_TOPICS = [
|
|
|
484
469
|
id: "cli",
|
|
485
470
|
title: "Command Line Interface",
|
|
486
471
|
path: "/docs/cli",
|
|
487
|
-
//
|
|
488
|
-
//
|
|
489
|
-
// `pome inspect`, so it routes to the CLI reference index that documents
|
|
490
|
-
// every command rather than to a sibling command's page.
|
|
472
|
+
// No dedicated `pome eval` page exists, and eval is a distinct workflow
|
|
473
|
+
// from `pome inspect`, so "eval" routes to the reference index.
|
|
491
474
|
keywords: ["commands", "flags", "pome run", "reference", "eval"]
|
|
492
475
|
},
|
|
493
476
|
{
|
|
@@ -502,26 +485,18 @@ var DOCS_TOPICS = [
|
|
|
502
485
|
"artifacts",
|
|
503
486
|
"default",
|
|
504
487
|
"demo task",
|
|
505
|
-
"run yours"
|
|
506
|
-
// Migrated from the retired skills-test topic: running tasks is
|
|
507
|
-
// how you test an agent with pome.
|
|
508
|
-
"test-with-pome",
|
|
509
|
-
"pome-test"
|
|
488
|
+
"run yours"
|
|
510
489
|
]
|
|
511
490
|
},
|
|
512
491
|
{
|
|
513
|
-
id: "cli-
|
|
514
|
-
title: "pome
|
|
515
|
-
path: "/docs/cli/
|
|
516
|
-
keywords: ["
|
|
492
|
+
id: "cli-sandbox",
|
|
493
|
+
title: "pome sandbox",
|
|
494
|
+
path: "/docs/cli/sandbox",
|
|
495
|
+
keywords: ["sandbox", "hosted", "twin"]
|
|
517
496
|
},
|
|
518
497
|
{
|
|
519
498
|
id: "cli-tasks",
|
|
520
499
|
title: "pome tasks",
|
|
521
|
-
// The M4 docs door renamed the docs.pome.sh page from
|
|
522
|
-
// /docs/cli/scenarios to /docs/cli/tasks (a redirect keeps the old URL
|
|
523
|
-
// alive), so `path` now points at the new route. The "scenarios" keyword
|
|
524
|
-
// stays so `pome docs scenarios` still resolves to this topic.
|
|
525
500
|
path: "/docs/cli/tasks",
|
|
526
501
|
keywords: ["tasks", "scenarios", "catalog", "copy", "library", "twin"]
|
|
527
502
|
},
|
|
@@ -548,12 +523,6 @@ var DOCS_TOPICS = [
|
|
|
548
523
|
title: "Troubleshooting",
|
|
549
524
|
path: "/docs/troubleshooting",
|
|
550
525
|
keywords: ["errors", "help", "fix", "debug"]
|
|
551
|
-
},
|
|
552
|
-
{
|
|
553
|
-
id: "changelog",
|
|
554
|
-
title: "Changelog",
|
|
555
|
-
path: "/changelog",
|
|
556
|
-
keywords: ["release", "version", "news"]
|
|
557
526
|
}
|
|
558
527
|
];
|
|
559
528
|
|
|
@@ -4653,7 +4622,7 @@ var DEFAULT_AGENT_COMMAND = `node ${DEFAULT_AGENT_FILE}`;
|
|
|
4653
4622
|
var MANIFEST_SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
|
|
4654
4623
|
var MAX_UNREADABLE_PATHS_SHOWN = 5;
|
|
4655
4624
|
function readPackageVersion() {
|
|
4656
|
-
if ("0.
|
|
4625
|
+
if ("0.30.0".length > 0) return "0.30.0";
|
|
4657
4626
|
try {
|
|
4658
4627
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
4659
4628
|
const candidates = [
|
|
@@ -4751,12 +4720,6 @@ function createProgram() {
|
|
|
4751
4720
|
}
|
|
4752
4721
|
console.error(postInitMessage);
|
|
4753
4722
|
});
|
|
4754
|
-
program.command("install").allowUnknownOption().allowExcessArguments().description(
|
|
4755
|
-
"Retired. 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."
|
|
4756
|
-
).action(async () => {
|
|
4757
|
-
const { runInstall } = await import('../../install-4OATBKG3.js');
|
|
4758
|
-
runInstall();
|
|
4759
|
-
});
|
|
4760
4723
|
program.command("login").description("Sign in with Clerk and store a hosted team API key (macOS Keychain or ~/.pome/credentials.json)").option(
|
|
4761
4724
|
"--api-url <url>",
|
|
4762
4725
|
"Control-plane base URL.",
|
|
@@ -4786,7 +4749,7 @@ function createProgram() {
|
|
|
4786
4749
|
"Override docs site origin (default https://docs.pome.sh)"
|
|
4787
4750
|
).option(
|
|
4788
4751
|
"--url",
|
|
4789
|
-
"Print
|
|
4752
|
+
"Print the URL instead of opening the interactive topic picker.",
|
|
4790
4753
|
false
|
|
4791
4754
|
).description(
|
|
4792
4755
|
"Navigate canonical narrative docs on docs.pome.sh"
|
|
@@ -4920,7 +4883,7 @@ function createProgram() {
|
|
|
4920
4883
|
"--api-url <url>",
|
|
4921
4884
|
"Control-plane URL",
|
|
4922
4885
|
process.env.POME_API_URL ?? DEFAULT_CONTROL_PLANE_URL
|
|
4923
|
-
).option(
|
|
4886
|
+
).option(
|
|
4924
4887
|
"--secrets-file <path>",
|
|
4925
4888
|
"Write shell exports containing session secrets to a local file with mode 0600"
|
|
4926
4889
|
).option(
|
|
@@ -4939,7 +4902,6 @@ function createProgram() {
|
|
|
4939
4902
|
await runSessionCreate({
|
|
4940
4903
|
apiBaseUrl: opts.apiUrl,
|
|
4941
4904
|
twins: opts.twin ?? [],
|
|
4942
|
-
showSecrets: opts.showSecrets,
|
|
4943
4905
|
format,
|
|
4944
4906
|
secretsFile: opts.secretsFile,
|
|
4945
4907
|
seedPath: opts.seed
|
|
@@ -5016,7 +4978,7 @@ function createProgram() {
|
|
|
5016
4978
|
).option("--agent <command>", "Agent command to run").option(
|
|
5017
4979
|
"-n, --trials <count>",
|
|
5018
4980
|
"Run <count> isolated trials of the task as ONE trial group (integer 1-20; hosted only). Default is the task config's `runs` field (capped at 20). k>1 mints sessions with a shared group id up to your plan's concurrent-twin quota (remaining trials reuse slots as earlier trials finish), runs trials at that concurrency, prints the per-trial verdict table (numeric cloud-judge scores), and exits 0 iff at least one trial completed and every completed trial passed (1: a completed trial failed; 2: nothing completed). k=1 keeps today's single-run behavior exactly."
|
|
5019
|
-
).option("--artifacts-dir <dir>", "Directory for run artifacts", "runs").option(
|
|
4981
|
+
).option("--artifacts-dir <dir>", "Directory for run artifacts", "runs").option(
|
|
5020
4982
|
"--api-url <url>",
|
|
5021
4983
|
"Control-plane base URL.",
|
|
5022
4984
|
process.env.POME_API_URL ?? DEFAULT_CONTROL_PLANE_URL
|
|
@@ -5099,13 +5061,6 @@ function createProgram() {
|
|
|
5099
5061
|
const agentCommand = resolvedCommand ?? DEFAULT_AGENT_COMMAND;
|
|
5100
5062
|
let worstExit = 0;
|
|
5101
5063
|
const useLocal = options.local === true || process.env.POME_LOCAL === "1";
|
|
5102
|
-
if (options.hosted && useLocal) {
|
|
5103
|
-
console.error(
|
|
5104
|
-
"Warning: --hosted is a no-op; running against a local twin (--local / POME_LOCAL=1). Drop it to record runs to the cloud."
|
|
5105
|
-
);
|
|
5106
|
-
} else if (options.hosted) {
|
|
5107
|
-
console.error("Note: --hosted is now the default; the flag is a deprecated no-op and will be removed in a future release.");
|
|
5108
|
-
}
|
|
5109
5064
|
if (trialsFlag !== void 0 && useLocal) {
|
|
5110
5065
|
console.error(
|
|
5111
5066
|
"-n/--trials needs the hosted path (verdicts come from the cloud judge); --local runs capture a single trace. Drop --local or -n."
|
|
@@ -5114,7 +5069,7 @@ function createProgram() {
|
|
|
5114
5069
|
return;
|
|
5115
5070
|
}
|
|
5116
5071
|
{
|
|
5117
|
-
const { runDoctorChecks } = await import('../../checks-
|
|
5072
|
+
const { runDoctorChecks } = await import('../../checks-P272TU4C.js');
|
|
5118
5073
|
const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
|
|
5119
5074
|
const doctorReport = await runDoctorChecks({ mode: useLocal ? "full" : "hosted" });
|
|
5120
5075
|
if (!doctorReport.ok) {
|
|
@@ -5152,7 +5107,7 @@ function createProgram() {
|
|
|
5152
5107
|
taskForRuns.config.runs
|
|
5153
5108
|
);
|
|
5154
5109
|
if (k > 1) {
|
|
5155
|
-
const { runTrialGroup } = await import('../../runTrialGroup-
|
|
5110
|
+
const { runTrialGroup } = await import('../../runTrialGroup-DWFSBMQ2.js');
|
|
5156
5111
|
const fileForRerun = relative(process.cwd(), file);
|
|
5157
5112
|
const rerunCommand = defaultTask ? options.trials !== void 0 ? `pome run -n ${k}` : "pome run" : `pome run ${fileForRerun && !fileForRerun.startsWith("..") ? fileForRerun : file} -n ${k}`;
|
|
5158
5113
|
const groupResult = await runTrialGroup({
|
|
@@ -5246,7 +5201,7 @@ function createProgram() {
|
|
|
5246
5201
|
process.exitCode = 5;
|
|
5247
5202
|
return;
|
|
5248
5203
|
}
|
|
5249
|
-
const { runDemo } = await import('../../runDemo-
|
|
5204
|
+
const { runDemo } = await import('../../runDemo-7AVS4AML.js');
|
|
5250
5205
|
const result = await runDemo({
|
|
5251
5206
|
apiBase: opts.apiUrl.replace(/\/$/, ""),
|
|
5252
5207
|
dashboardBase: process.env.POME_DASHBOARD_URL ?? DEFAULT_DASHBOARD_URL,
|
|
@@ -5264,7 +5219,7 @@ function createProgram() {
|
|
|
5264
5219
|
program.command("doctor").description(
|
|
5265
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."
|
|
5266
5221
|
).action(async () => {
|
|
5267
|
-
const { runDoctorChecks } = await import('../../checks-
|
|
5222
|
+
const { runDoctorChecks } = await import('../../checks-P272TU4C.js');
|
|
5268
5223
|
const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
|
|
5269
5224
|
const report = await runDoctorChecks();
|
|
5270
5225
|
for (const line of renderDoctorReport(report, { passNote: true })) console.error(line);
|
|
@@ -5298,11 +5253,6 @@ function createProgram() {
|
|
|
5298
5253
|
const latest = run === "latest" ? await readLatestRun(options.artifactsDir) : void 0;
|
|
5299
5254
|
const runDir = latest?.run_dir ?? resolve(run);
|
|
5300
5255
|
const eventsResult = await readEventsJsonl(runDir);
|
|
5301
|
-
if (eventsResult.kind === "legacy") {
|
|
5302
|
-
console.error(LEGACY_EVENTS_MESSAGE);
|
|
5303
|
-
process.exitCode = 2;
|
|
5304
|
-
return;
|
|
5305
|
-
}
|
|
5306
5256
|
const meta = await readMetaSummary(runDir);
|
|
5307
5257
|
console.log(`Run: ${latest?.run_id ?? run}`);
|
|
5308
5258
|
console.log(`Directory: ${runDir}`);
|
|
@@ -5324,7 +5274,7 @@ function createProgram() {
|
|
|
5324
5274
|
"[task]",
|
|
5325
5275
|
"Path to the task .md file (only with an events.jsonl target)"
|
|
5326
5276
|
).description(
|
|
5327
|
-
"Assemble a paste-into-IDE fix prompt (no LLM call, no network). With no args, reads the latest FAILED run set under ./runs: the persisted cloud verdicts (verdict.json) become grouped failure signatures over the raw traces, in one prompt. Point it at a trial run dir to target that set, or
|
|
5277
|
+
"Assemble a paste-into-IDE fix prompt (no LLM call, no network). With no args, reads the latest FAILED run set under ./runs: the persisted cloud verdicts (verdict.json) become grouped failure signatures over the raw traces, in one prompt. Point it at a trial run dir to target that set, or point it at an `events.jsonl` with its task file for a single trace."
|
|
5328
5278
|
).action(async (target, taskArg) => {
|
|
5329
5279
|
if (target !== void 0 && target.endsWith(".jsonl")) {
|
|
5330
5280
|
if (!taskArg) {
|
|
@@ -5446,13 +5396,13 @@ function createProgram() {
|
|
|
5446
5396
|
).description(
|
|
5447
5397
|
"Start a standalone twin as a long-lived foreground server (Ctrl-C to stop)"
|
|
5448
5398
|
).action(async (name, options) => {
|
|
5449
|
-
const { runTwinStartCommand } = await import('../../twinStart-
|
|
5399
|
+
const { runTwinStartCommand } = await import('../../twinStart-VUCN4CFY.js');
|
|
5450
5400
|
await runTwinStartCommand(name, options);
|
|
5451
5401
|
});
|
|
5452
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(
|
|
5453
5403
|
"Print a starter seed file for a twin, generated from the twin's own starting state"
|
|
5454
5404
|
).action(async (names, options) => {
|
|
5455
|
-
const { runTwinSeedCommand } = await import('../../twinSeed-
|
|
5405
|
+
const { runTwinSeedCommand } = await import('../../twinSeed-XIKTIHX2.js');
|
|
5456
5406
|
await runTwinSeedCommand(names, options);
|
|
5457
5407
|
});
|
|
5458
5408
|
twin.command("reset").argument("[name]", "Twin name (default: github)", "github").description("Reset standalone twin state").action(async (name) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { LINEAR_CHECKS } from './chunk-
|
|
1
|
+
export { LINEAR_CHECKS } from './chunk-TSOSDKXP.js';
|
|
2
2
|
import { MCP_PAGE_MAX, defaultSeedState, linearSeedSchema, notFound, badUserInput, MCP_PAGE_DEFAULT, DEFAULT_LINEAR_EMAIL, RELAY_PAGE_MAX, RELAY_PAGE_DEFAULT, STATE_EXPORT_CAP, parseSeed, DEFAULT_LINEAR_CLOCK, LINEAR_PROVIDER_TOKEN_PREFIX, DEFAULT_LINEAR_SID, DEFAULT_SCOPES, linearErrorEnvelope, unauthorizedEnvelope, unsupportedEnvelope, forbiddenEnvelope, assertWebhookUrl, ACCESS_TOKEN_TTL_SECONDS, OAUTH_CODE_TTL_SECONDS, TITLE_MAX_BYTES, BODY_MAX_BYTES, LinearTwinError, GRAPHQL_QUERY_MAX_BYTES, GRAPHQL_SELECTION_DEPTH_MAX } from './chunk-Q5NBPR57.js';
|
|
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';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { readSeedFileText, seedForTwin, parseSeedFileText, soleTwinOf, twinsNamedBy } from './chunk-
|
|
2
|
-
import { bootTwin } from './chunk-
|
|
3
|
-
import { TWIN_REGISTRY, isTwinName, TWIN_NAMES, defaultPortFor } from './chunk-
|
|
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
4
|
import './chunk-E665XWYU.js';
|
|
5
5
|
import './chunk-6KJC4BTO.js';
|
|
6
6
|
import './chunk-SG6ZTIMT.js';
|
package/package.json
CHANGED
package/dist/install-4OATBKG3.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// src/cli/install.ts
|
|
2
|
-
var GEN2_REDIRECT = [
|
|
3
|
-
"pome install (Gen-1 agent-driven wiring) is retired.",
|
|
4
|
-
"",
|
|
5
|
-
"Wire your own agent to pome the Gen-2 way:",
|
|
6
|
-
" 1. claude mcp add --transport http pome https://mcp.pome.sh/mcp",
|
|
7
|
-
" # connect the pome control MCP",
|
|
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)",
|
|
12
|
-
" 3. run the pome-intake skill to register the examinee and check twin",
|
|
13
|
-
" coverage (self-hosted REST agent: use the coach's REST-launch preflight).",
|
|
14
|
-
"",
|
|
15
|
-
"Already have pome.json? `pome register agent <name>` and `pome doctor` still apply.",
|
|
16
|
-
"See `pome docs getting-started`."
|
|
17
|
-
];
|
|
18
|
-
function runInstall() {
|
|
19
|
-
for (const line of GEN2_REDIRECT) console.error(line);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export { runInstall };
|