@pome-sh/cli 0.27.0 → 0.28.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-QM7QOJ6U.js → checks-XPLJ2MKP.js} +2 -2
- package/dist/{chunk-CTA54N4K.js → chunk-CWNRE2OU.js} +21 -4
- package/dist/{chunk-BZO3YCJS.js → chunk-D5PXUPG4.js} +33 -1
- package/dist/{chunk-MQE6DKIK.js → chunk-JW3DHRNX.js} +3 -3
- package/dist/{chunk-N74LP4QH.js → chunk-MOZU3NOM.js} +1 -1
- package/dist/{chunk-CXGMLUZ4.js → chunk-QOMNBXMQ.js} +1 -1
- package/dist/{runDemo-O67ASC54.js → runDemo-YY5F6FP2.js} +3 -3
- package/dist/{runTrialGroup-V3HB57YI.js → runTrialGroup-TPDWP2LN.js} +4 -4
- package/dist/src/cli/main.js +10 -10
- package/package.json +1 -1
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.28.0",
|
|
4
|
+
"git_sha": "fe45f413881e8c19ab370dd63e03fbf118ac8edb",
|
|
5
|
+
"build_time": "2026-08-26T19:10:23.010Z"
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { findManifestPath, readManifest } from './chunk-
|
|
1
|
+
import { findManifestPath, readManifest } from './chunk-QOMNBXMQ.js';
|
|
2
2
|
import { getAvailablePort } from './chunk-XDU6TD4O.js';
|
|
3
|
-
import './chunk-
|
|
3
|
+
import './chunk-D5PXUPG4.js';
|
|
4
4
|
import { buildEgressAllowlist } from './chunk-CBFKZZBR.js';
|
|
5
5
|
import './chunk-6KJC4BTO.js';
|
|
6
6
|
import './chunk-SG6ZTIMT.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { gmailSeedSchema, defaultSeedState } from './chunk-3T5XN64P.js';
|
|
2
2
|
import { linearSeedSchema, defaultSeedState as defaultSeedState$1 } from './chunk-G6GOCYIT.js';
|
|
3
3
|
import { isTwinName, TWIN_REGISTRY } from './chunk-JE4H5ODK.js';
|
|
4
|
-
import { criterionSchema, finalizeResponseSchema, HostedDiscardRefusedError, HostedOrchError, HostedAuthError, HostedQuotaError, submitResultResponseSchema, createEvalSessionResponseSchema, createSessionResponseSchema, sessionPublicSchema } from './chunk-
|
|
4
|
+
import { criterionSchema, finalizeResponseSchema, HostedDiscardRefusedError, HostedOrchError, HostedAuthError, HostedQuotaError, submitResultResponseSchema, createEvalSessionResponseSchema, createSessionResponseSchema, sessionPublicSchema } from './chunk-D5PXUPG4.js';
|
|
5
5
|
import { seedSchema, parseSeed, defaultSeedState as defaultSeedState$2 } from './chunk-HJX25USP.js';
|
|
6
6
|
import { toTwinHttpEventRow } from './chunk-E665XWYU.js';
|
|
7
7
|
import { redactEvent, redactSecrets } from './chunk-SG6ZTIMT.js';
|
|
@@ -1255,6 +1255,8 @@ function normalizeAgentSdk(value) {
|
|
|
1255
1255
|
|
|
1256
1256
|
// ../packages/wire/dist/run-completeness.js
|
|
1257
1257
|
var PRE_SATISFIED_REASON = "already_true_in_seed";
|
|
1258
|
+
var ADVISORY_SCORE_STATE = "advisory";
|
|
1259
|
+
var ABSTAINED_SCORE_STATE = "abstained";
|
|
1258
1260
|
|
|
1259
1261
|
// src/hosted/evalResultView.ts
|
|
1260
1262
|
function outcomeOf(result) {
|
|
@@ -1265,6 +1267,9 @@ function outcomeOf(result) {
|
|
|
1265
1267
|
function isPreSatisfied(result) {
|
|
1266
1268
|
return result.skipped && result.reason === PRE_SATISFIED_REASON;
|
|
1267
1269
|
}
|
|
1270
|
+
function isNarrated(result) {
|
|
1271
|
+
return result.skipped && (result.score_state === ADVISORY_SCORE_STATE || result.score_state === ABSTAINED_SCORE_STATE);
|
|
1272
|
+
}
|
|
1268
1273
|
function scoreStatus(score, passThreshold) {
|
|
1269
1274
|
if (!score.evaluated || !score.can_pass) return "incomplete";
|
|
1270
1275
|
return score.satisfaction >= passThreshold ? "pass" : "fail";
|
|
@@ -1296,12 +1301,16 @@ function criteriaWord(n) {
|
|
|
1296
1301
|
}
|
|
1297
1302
|
function evaluationCounts(score) {
|
|
1298
1303
|
const evaluated = score.total_required;
|
|
1299
|
-
const
|
|
1304
|
+
const exempt = score.preSatisfied + score.advisory + score.abstained;
|
|
1305
|
+
const notEvaluated = score.skipped + score.errored - exempt;
|
|
1300
1306
|
return {
|
|
1301
1307
|
evaluated,
|
|
1302
1308
|
notEvaluated,
|
|
1303
1309
|
preSatisfied: score.preSatisfied,
|
|
1304
|
-
total
|
|
1310
|
+
// `total` counts every exemption, not just `preSatisfied`, so it still
|
|
1311
|
+
// names every criterion the run recorded — the reason `outcomeOf` keeps
|
|
1312
|
+
// narrator rows inside `skipped` rather than returning their state raw.
|
|
1313
|
+
total: evaluated + notEvaluated + exempt
|
|
1305
1314
|
};
|
|
1306
1315
|
}
|
|
1307
1316
|
function scoreCountsSummary(score) {
|
|
@@ -1486,8 +1495,14 @@ function scoreFromFinalizeResponse(finalized) {
|
|
|
1486
1495
|
const preSatisfied = results.filter(
|
|
1487
1496
|
(r) => outcomeOf(r) === "skipped" && isPreSatisfied(r)
|
|
1488
1497
|
).length;
|
|
1498
|
+
const advisory = results.filter(
|
|
1499
|
+
(r) => isNarrated(r) && !isPreSatisfied(r) && r.score_state === ADVISORY_SCORE_STATE
|
|
1500
|
+
).length;
|
|
1501
|
+
const abstained = results.filter(
|
|
1502
|
+
(r) => isNarrated(r) && !isPreSatisfied(r) && r.score_state === ABSTAINED_SCORE_STATE
|
|
1503
|
+
).length;
|
|
1489
1504
|
const totalRequired = passed + failed;
|
|
1490
|
-
const unresolvedAbstentions = skipped - preSatisfied + errored;
|
|
1505
|
+
const unresolvedAbstentions = skipped - preSatisfied - advisory - abstained + errored;
|
|
1491
1506
|
return {
|
|
1492
1507
|
satisfaction: finalized.score,
|
|
1493
1508
|
passed,
|
|
@@ -1495,6 +1510,8 @@ function scoreFromFinalizeResponse(finalized) {
|
|
|
1495
1510
|
skipped,
|
|
1496
1511
|
errored,
|
|
1497
1512
|
preSatisfied,
|
|
1513
|
+
advisory,
|
|
1514
|
+
abstained,
|
|
1498
1515
|
total_required: totalRequired,
|
|
1499
1516
|
evaluated: hasCriteriaResults ? totalRequired > 0 : true,
|
|
1500
1517
|
can_pass: hasCriteriaResults ? totalRequired > 0 && unresolvedAbstentions === 0 : true,
|
|
@@ -91,8 +91,40 @@ var baseCriterionResultSchema = z.object({
|
|
|
91
91
|
passed: z.boolean(),
|
|
92
92
|
skipped: z.boolean(),
|
|
93
93
|
// true if [code] fell back to [model] but the judge was unreachable, etc.
|
|
94
|
-
reason: z.string()
|
|
94
|
+
reason: z.string(),
|
|
95
95
|
// human-readable evidence
|
|
96
|
+
// Why this row is out of the denominator, when `skipped` alone is too coarse.
|
|
97
|
+
// The two values that carry meaning here are `ADVISORY_SCORE_STATE` and
|
|
98
|
+
// `ABSTAINED_SCORE_STATE` (`@pome-sh/wire/run-completeness`), which the
|
|
99
|
+
// narrator stamps on a `[model]` row it read but had no authority to score.
|
|
100
|
+
//
|
|
101
|
+
// NOT NAMED `outcome`: `hosted/evalResultView.ts`'s display model has
|
|
102
|
+
// reserved that key on this same object for a disjoint vocabulary
|
|
103
|
+
// (`passed | failed | skipped | errored`) since long before the narrator, and
|
|
104
|
+
// reserved it for the CLOUD to fill. A cloud writing `advisory` into it would
|
|
105
|
+
// hand `outcomeOf` a value outside its own union and render an advisory row
|
|
106
|
+
// with the skipped glyph.
|
|
107
|
+
//
|
|
108
|
+
// ON THE BASE AND NOT ON ONE ARM, for the mirror image of the reason the arm
|
|
109
|
+
// order below is what it is: an advisory row carries no `confidence` /
|
|
110
|
+
// `judge_model`, so it fails the probabilistic arm and lands on the
|
|
111
|
+
// DETERMINISTIC one — whose `.extend({})` is a plain `z.object` and would
|
|
112
|
+
// strip an unknown key. Declared on one arm, the state would be discarded
|
|
113
|
+
// before any consumer could read it, and the run would keep reading
|
|
114
|
+
// INCOMPLETE with the exemption sitting there correct and dead.
|
|
115
|
+
//
|
|
116
|
+
// `z.string()` AND NOT THE CLOSED ENUM pome-cloud declares for the same
|
|
117
|
+
// field, because the two sides of it have opposite jobs. pome-cloud PRODUCES
|
|
118
|
+
// it and validates what it serves; the CLI CONSUMES it, and
|
|
119
|
+
// `finalizeResponseSchema` is deliberately a tolerant reader (its own comment
|
|
120
|
+
// says so: cloud may emit additive keys "that older/newer CLIs strip rather
|
|
121
|
+
// than reject"). A closed enum here would turn a cloud that adds a third
|
|
122
|
+
// score state into a hard parse failure of the ENTIRE /finalize response —
|
|
123
|
+
// an unreadable run instead of an unrecognised field. The closed vocabulary
|
|
124
|
+
// is applied by the PREDICATE that reads it (`isNarrated`), exactly as
|
|
125
|
+
// `reason` is a plain string and `PRE_SATISFIED_REASON` is a comparison, so
|
|
126
|
+
// an unrecognised spelling is not exempted from anything.
|
|
127
|
+
score_state: z.string().optional()
|
|
96
128
|
});
|
|
97
129
|
var deterministicCriterionResultSchema = baseCriterionResultSchema.extend({
|
|
98
130
|
// [code] adds nothing further; criterion.type === "code" identifies it.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-
|
|
2
|
-
import { readManifest, normalizeManifestTwins } from './chunk-
|
|
3
|
-
import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema } from './chunk-
|
|
1
|
+
import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-CWNRE2OU.js';
|
|
2
|
+
import { readManifest, normalizeManifestTwins } from './chunk-QOMNBXMQ.js';
|
|
3
|
+
import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema } from './chunk-D5PXUPG4.js';
|
|
4
4
|
import { redactSecrets, redactEvent } from './chunk-SG6ZTIMT.js';
|
|
5
5
|
import { randomUUID, createHash } from 'node:crypto';
|
|
6
6
|
import { rm, readFile, stat, mkdir, writeFile, chmod, mkdtemp, readdir, rename } from 'node:fs/promises';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-
|
|
1
|
+
import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-CWNRE2OU.js';
|
|
2
2
|
import { createRecorder, bootTwin } from './chunk-IK2F7ZA3.js';
|
|
3
3
|
import { getAvailablePort } from './chunk-XDU6TD4O.js';
|
|
4
4
|
import { buildEgressAllowlist, readBlockedEgress } from './chunk-CBFKZZBR.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HostedOrchError, manifestSchema, deriveAgentSlug, SLUG_RE } from './chunk-
|
|
1
|
+
import { HostedOrchError, manifestSchema, deriveAgentSlug, SLUG_RE } from './chunk-D5PXUPG4.js';
|
|
2
2
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { resolve, join, dirname } from 'node:path';
|
|
4
4
|
import { stringify, parse } from 'yaml';
|
|
@@ -1,14 +1,14 @@
|
|
|
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-MOZU3NOM.js';
|
|
4
|
+
import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-CWNRE2OU.js';
|
|
5
5
|
import './chunk-NW7HGA2K.js';
|
|
6
6
|
import './chunk-3T5XN64P.js';
|
|
7
7
|
import './chunk-G6GOCYIT.js';
|
|
8
8
|
import { bootTwin } from './chunk-IK2F7ZA3.js';
|
|
9
9
|
import './chunk-JE4H5ODK.js';
|
|
10
10
|
import { getAvailablePort } from './chunk-XDU6TD4O.js';
|
|
11
|
-
import { HostedQuotaError, HostedOrchError } from './chunk-
|
|
11
|
+
import { HostedQuotaError, HostedOrchError } from './chunk-D5PXUPG4.js';
|
|
12
12
|
import './chunk-CBFKZZBR.js';
|
|
13
13
|
import './chunk-HJX25USP.js';
|
|
14
14
|
import './chunk-E665XWYU.js';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { newGroupId, criterionPhrase } from './chunk-RGZBC7NF.js';
|
|
2
|
-
import { runTaskHosted, resolveRunAgentIdentity } from './chunk-
|
|
3
|
-
import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-
|
|
2
|
+
import { runTaskHosted, resolveRunAgentIdentity } from './chunk-JW3DHRNX.js';
|
|
3
|
+
import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-CWNRE2OU.js';
|
|
4
4
|
import './chunk-NW7HGA2K.js';
|
|
5
5
|
import './chunk-3T5XN64P.js';
|
|
6
6
|
import './chunk-G6GOCYIT.js';
|
|
7
7
|
import './chunk-JE4H5ODK.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import { HostedQuotaError, HostedTrialError } from './chunk-
|
|
8
|
+
import './chunk-QOMNBXMQ.js';
|
|
9
|
+
import { HostedQuotaError, HostedTrialError } from './chunk-D5PXUPG4.js';
|
|
10
10
|
import './chunk-HJX25USP.js';
|
|
11
11
|
import './chunk-E665XWYU.js';
|
|
12
12
|
import './chunk-6KJC4BTO.js';
|
package/dist/src/cli/main.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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-
|
|
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-JW3DHRNX.js';
|
|
3
|
+
import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-MOZU3NOM.js';
|
|
4
|
+
import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, markerFor, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-CWNRE2OU.js';
|
|
5
5
|
import '../../chunk-NW7HGA2K.js';
|
|
6
6
|
import { GMAIL_CHECKS } from '../../chunk-JM6VS62R.js';
|
|
7
7
|
import '../../chunk-3T5XN64P.js';
|
|
@@ -9,9 +9,9 @@ import { LINEAR_CHECKS } from '../../chunk-XBT6ZLBG.js';
|
|
|
9
9
|
import '../../chunk-G6GOCYIT.js';
|
|
10
10
|
import '../../chunk-IK2F7ZA3.js';
|
|
11
11
|
import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-JE4H5ODK.js';
|
|
12
|
-
import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-
|
|
12
|
+
import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-QOMNBXMQ.js';
|
|
13
13
|
import '../../chunk-XDU6TD4O.js';
|
|
14
|
-
import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-
|
|
14
|
+
import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-D5PXUPG4.js';
|
|
15
15
|
import '../../chunk-CBFKZZBR.js';
|
|
16
16
|
import { TAPE_ASSERTABLE_TOOLS } from '../../chunk-C4BVTUA3.js';
|
|
17
17
|
import { seedSchema } from '../../chunk-HJX25USP.js';
|
|
@@ -4652,7 +4652,7 @@ var DEFAULT_AGENT_COMMAND = `node ${DEFAULT_AGENT_FILE}`;
|
|
|
4652
4652
|
var MANIFEST_SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
|
|
4653
4653
|
var MAX_UNREADABLE_PATHS_SHOWN = 5;
|
|
4654
4654
|
function readPackageVersion() {
|
|
4655
|
-
if ("0.
|
|
4655
|
+
if ("0.28.0".length > 0) return "0.28.0";
|
|
4656
4656
|
try {
|
|
4657
4657
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
4658
4658
|
const candidates = [
|
|
@@ -5103,7 +5103,7 @@ function createProgram() {
|
|
|
5103
5103
|
return;
|
|
5104
5104
|
}
|
|
5105
5105
|
{
|
|
5106
|
-
const { runDoctorChecks } = await import('../../checks-
|
|
5106
|
+
const { runDoctorChecks } = await import('../../checks-XPLJ2MKP.js');
|
|
5107
5107
|
const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
|
|
5108
5108
|
const doctorReport = await runDoctorChecks({ mode: useLocal ? "full" : "hosted" });
|
|
5109
5109
|
if (!doctorReport.ok) {
|
|
@@ -5141,7 +5141,7 @@ function createProgram() {
|
|
|
5141
5141
|
taskForRuns.config.runs
|
|
5142
5142
|
);
|
|
5143
5143
|
if (k > 1) {
|
|
5144
|
-
const { runTrialGroup } = await import('../../runTrialGroup-
|
|
5144
|
+
const { runTrialGroup } = await import('../../runTrialGroup-TPDWP2LN.js');
|
|
5145
5145
|
const fileForRerun = relative(process.cwd(), file);
|
|
5146
5146
|
const rerunCommand = defaultTask ? options.trials !== void 0 ? `pome run -n ${k}` : "pome run" : `pome run ${fileForRerun && !fileForRerun.startsWith("..") ? fileForRerun : file} -n ${k}`;
|
|
5147
5147
|
const groupResult = await runTrialGroup({
|
|
@@ -5235,7 +5235,7 @@ function createProgram() {
|
|
|
5235
5235
|
process.exitCode = 5;
|
|
5236
5236
|
return;
|
|
5237
5237
|
}
|
|
5238
|
-
const { runDemo } = await import('../../runDemo-
|
|
5238
|
+
const { runDemo } = await import('../../runDemo-YY5F6FP2.js');
|
|
5239
5239
|
const result = await runDemo({
|
|
5240
5240
|
apiBase: opts.apiUrl.replace(/\/$/, ""),
|
|
5241
5241
|
dashboardBase: process.env.POME_DASHBOARD_URL ?? DEFAULT_DASHBOARD_URL,
|
|
@@ -5253,7 +5253,7 @@ function createProgram() {
|
|
|
5253
5253
|
program.command("doctor").description(
|
|
5254
5254
|
"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."
|
|
5255
5255
|
).action(async () => {
|
|
5256
|
-
const { runDoctorChecks } = await import('../../checks-
|
|
5256
|
+
const { runDoctorChecks } = await import('../../checks-XPLJ2MKP.js');
|
|
5257
5257
|
const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
|
|
5258
5258
|
const report = await runDoctorChecks();
|
|
5259
5259
|
for (const line of renderDoctorReport(report, { passNote: true })) console.error(line);
|
package/package.json
CHANGED