@pome-sh/cli 0.21.7 → 0.21.9
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-4GJB73YX.js → checks-ZWCORWK4.js} +1 -1
- package/dist/{chunk-M3X6OT4N.js → chunk-2CMCN5PW.js} +2 -2
- package/dist/{chunk-LZIPGCQJ.js → chunk-35TG2GHS.js} +2 -0
- package/dist/{chunk-XS66ZRBJ.js → chunk-3QVSXFJI.js} +1 -1
- package/dist/{chunk-4ILBTPO4.js → chunk-5TEVH6RY.js} +2 -2
- package/dist/{chunk-A3IDZXJY.js → chunk-BK7HSHRA.js} +13 -13
- package/dist/{chunk-5ETJZJR6.js → chunk-EU6SGN7A.js} +17 -17
- package/dist/{chunk-JULH5ECU.js → chunk-F7YLHTCM.js} +1 -1
- package/dist/{chunk-IY6G5NWT.js → chunk-LH4EGGQW.js} +6 -7
- package/dist/{chunk-WR7KP3LE.js → chunk-PRCZLT4W.js} +2 -2
- package/dist/{runDemo-BCB6EDDN.js → runDemo-7NYX7S5T.js} +5 -5
- package/dist/{runTrialGroup-YCSGW56C.js → runTrialGroup-BYUY5WJ7.js} +4 -4
- package/dist/{server-Y52EIWDP.js → server-NJBWJIS3.js} +1 -1
- package/dist/src/cli/main.js +27 -27
- package/dist/{src-GGRWNJTK.js → src-4ZLCEPCN.js} +2 -2
- package/dist/{src-K3KTJTMG.js → src-CI5W335G.js} +2 -2
- package/dist/{src-4SVLX7UK.js → src-PJGE6SSY.js} +1 -1
- package/dist/{src-FLTYWM6P.js → src-TKGHXPEM.js} +2 -2
- package/dist/{src-RVUEXCKN.js → src-WQE3MFBD.js} +1 -1
- package/dist/twinHarness-CJX3IXR3.js +5 -0
- package/dist/{twinStart-4OGP2GBY.js → twinStart-5ZWCVBPZ.js} +3 -3
- package/package.json +2 -2
- package/dist/twinHarness-KFZ2ZNAX.js +0 -5
package/dist/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "pome-sh",
|
|
3
|
-
"version": "0.21.
|
|
4
|
-
"git_sha": "
|
|
5
|
-
"build_time": "2026-08-
|
|
3
|
+
"version": "0.21.9",
|
|
4
|
+
"git_sha": "452daee9323032a6875be318ed440521e2a6e1c8",
|
|
5
|
+
"build_time": "2026-08-06T10:42:27.896Z"
|
|
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-CJX3IXR3.js');
|
|
187
187
|
harness = await bootTwin({
|
|
188
188
|
twin: "github",
|
|
189
189
|
seedState: void 0,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-
|
|
2
|
-
import { createFileBackedRecorderStore, createRecorderStore } from './chunk-
|
|
1
|
+
import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-BK7HSHRA.js';
|
|
2
|
+
import { createFileBackedRecorderStore, createRecorderStore } from './chunk-35TG2GHS.js';
|
|
3
3
|
|
|
4
4
|
// src/recorder/recorder.ts
|
|
5
5
|
function createRecorder(options = {}) {
|
|
@@ -1177,6 +1177,8 @@ function createFailureInjectionStore() {
|
|
|
1177
1177
|
}
|
|
1178
1178
|
};
|
|
1179
1179
|
}
|
|
1180
|
+
|
|
1181
|
+
// ../packages/sdk/dist/failure-injection.js
|
|
1180
1182
|
function failureInjectionMiddleware(store, options) {
|
|
1181
1183
|
return async (c, next) => {
|
|
1182
1184
|
const session = c.get("session");
|
|
@@ -292,7 +292,7 @@ var issueThreadedReply = defineCheck({
|
|
|
292
292
|
// ../packages/twin-linear/dist/src/check-issues.js
|
|
293
293
|
var issueExists = defineCheck({
|
|
294
294
|
id: "linear.issue-exists",
|
|
295
|
-
description: "Asserts an unarchived issue with this exact title exists in the named team. Declared and unused by the shipped corpus on purpose: `linear.issue-state` FAILS on a missing issue and therefore subsumes this one, so task
|
|
295
|
+
description: "Asserts an unarchived issue with this exact title exists in the named team. Declared and unused by the shipped corpus on purpose: `linear.issue-state` FAILS on a missing issue and therefore subsumes this one, so a task carries the state criterion alone \u2014 twin-github ships the same pair for the same reason. A vocabulary is what an author may pick from, not what the corpus happens to exercise. Title matching is EXACT and archived issues do not count, so an examinee that renames or archives the issue fails this.",
|
|
296
296
|
template: 'An issue titled "{title}" exists in `{team}`',
|
|
297
297
|
params: { title: issueTitle, team: teamKey },
|
|
298
298
|
substrate: "final",
|
|
@@ -2,8 +2,8 @@ import { criterionSchema, finalizeResponseSchema, HostedDiscardRefusedError, Hos
|
|
|
2
2
|
import { seedSchema, parseSeed, defaultSeedState as defaultSeedState$2 } from './chunk-SGDUD7KK.js';
|
|
3
3
|
import { gmailSeedSchema, defaultSeedState } from './chunk-NJ246QPJ.js';
|
|
4
4
|
import { linearSeedSchema, defaultSeedState as defaultSeedState$1 } from './chunk-ZKID2HS3.js';
|
|
5
|
-
import { isTwinName, TWIN_REGISTRY } from './chunk-
|
|
6
|
-
import { toTwinHttpEventRow } from './chunk-
|
|
5
|
+
import { isTwinName, TWIN_REGISTRY } from './chunk-BK7HSHRA.js';
|
|
6
|
+
import { toTwinHttpEventRow } from './chunk-35TG2GHS.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';
|
|
@@ -4,11 +4,11 @@ var package_default = {
|
|
|
4
4
|
|
|
5
5
|
// ../packages/twin-slack/package.json
|
|
6
6
|
var package_default2 = {
|
|
7
|
-
version: "0.3.
|
|
7
|
+
version: "0.3.4"};
|
|
8
8
|
|
|
9
9
|
// ../packages/twin-stripe/package.json
|
|
10
10
|
var package_default3 = {
|
|
11
|
-
version: "0.4.
|
|
11
|
+
version: "0.4.5"};
|
|
12
12
|
|
|
13
13
|
// ../packages/twin-gmail/package.json
|
|
14
14
|
var package_default4 = {
|
|
@@ -39,7 +39,7 @@ var TWIN_REGISTRY = {
|
|
|
39
39
|
defaultSeedState,
|
|
40
40
|
GitHubDomain,
|
|
41
41
|
openGitHubCloneDatabase
|
|
42
|
-
} = await import('./src-
|
|
42
|
+
} = await import('./src-WQE3MFBD.js');
|
|
43
43
|
const db = openGitHubCloneDatabase();
|
|
44
44
|
const domain = new GitHubDomain(db);
|
|
45
45
|
domain.seed(seedState === void 0 ? defaultSeedState() : seedState);
|
|
@@ -59,9 +59,9 @@ var TWIN_REGISTRY = {
|
|
|
59
59
|
envName: "SLACK",
|
|
60
60
|
defaultPort: 3333,
|
|
61
61
|
version: package_default2.version,
|
|
62
|
-
defaultSeed: async () => (await import('./src-
|
|
62
|
+
defaultSeed: async () => (await import('./src-4ZLCEPCN.js')).defaultSeedState(),
|
|
63
63
|
async boot({ seedState, runId, recorder }) {
|
|
64
|
-
const { createSlackTwinApp, openSlackTwinDatabase, SlackDomain } = await import('./src-
|
|
64
|
+
const { createSlackTwinApp, openSlackTwinDatabase, SlackDomain } = await import('./src-4ZLCEPCN.js');
|
|
65
65
|
const db = openSlackTwinDatabase(":memory:");
|
|
66
66
|
const domain = new SlackDomain(db);
|
|
67
67
|
domain.applySeed(seedState);
|
|
@@ -84,10 +84,10 @@ var TWIN_REGISTRY = {
|
|
|
84
84
|
envName: "STRIPE",
|
|
85
85
|
defaultPort: 3333,
|
|
86
86
|
version: package_default3.version,
|
|
87
|
-
defaultSeed: async () => (await import('./src-
|
|
87
|
+
defaultSeed: async () => (await import('./src-PJGE6SSY.js')).defaultSeed(),
|
|
88
88
|
async boot({ seedState, runId, recorder, twinBaseUrl }) {
|
|
89
|
-
const stripeTwin = await import('./src-
|
|
90
|
-
const { createApp } = await import('./server-
|
|
89
|
+
const stripeTwin = await import('./src-PJGE6SSY.js');
|
|
90
|
+
const { createApp } = await import('./server-NJBWJIS3.js');
|
|
91
91
|
const {
|
|
92
92
|
applySeed: applyStripeSeed,
|
|
93
93
|
createTwinStripeApp,
|
|
@@ -128,9 +128,9 @@ var TWIN_REGISTRY = {
|
|
|
128
128
|
portEnvName: "GMAIL_TWIN_PORT",
|
|
129
129
|
tokenEnvName: "POME_GMAIL_TOKEN",
|
|
130
130
|
version: package_default4.version,
|
|
131
|
-
defaultSeed: async () => (await import('./src-
|
|
131
|
+
defaultSeed: async () => (await import('./src-TKGHXPEM.js')).defaultSeedState(),
|
|
132
132
|
async boot({ seedState, runId, recorder }) {
|
|
133
|
-
const { createGmailTwinApp, GmailDomain, openGmailTwinDatabase, parseSeed } = await import('./src-
|
|
133
|
+
const { createGmailTwinApp, GmailDomain, openGmailTwinDatabase, parseSeed } = await import('./src-TKGHXPEM.js');
|
|
134
134
|
const db = openGmailTwinDatabase(":memory:");
|
|
135
135
|
const seed = parseSeed(seedState);
|
|
136
136
|
const domain = new GmailDomain(db);
|
|
@@ -149,7 +149,7 @@ var TWIN_REGISTRY = {
|
|
|
149
149
|
portEnvName: "LINEAR_TWIN_PORT",
|
|
150
150
|
tokenEnvName: "POME_LINEAR_TOKEN",
|
|
151
151
|
version: package_default5.version,
|
|
152
|
-
defaultSeed: async () => (await import('./src-
|
|
152
|
+
defaultSeed: async () => (await import('./src-CI5W335G.js')).defaultSeedState(),
|
|
153
153
|
async boot({ seedState, runId, recorder }) {
|
|
154
154
|
const {
|
|
155
155
|
createLinearTwinApp,
|
|
@@ -157,7 +157,7 @@ var TWIN_REGISTRY = {
|
|
|
157
157
|
LinearDomain,
|
|
158
158
|
openLinearTwinDatabase,
|
|
159
159
|
parseSeed
|
|
160
|
-
} = await import('./src-
|
|
160
|
+
} = await import('./src-CI5W335G.js');
|
|
161
161
|
const db = openLinearTwinDatabase(":memory:");
|
|
162
162
|
const seed = parseSeed(seedState);
|
|
163
163
|
const domain = new LinearDomain(db);
|
|
@@ -173,7 +173,7 @@ var TWIN_REGISTRY = {
|
|
|
173
173
|
}
|
|
174
174
|
};
|
|
175
175
|
async function createGitHubSmokeApp() {
|
|
176
|
-
const { createGitHubCloneApp } = await import('./src-
|
|
176
|
+
const { createGitHubCloneApp } = await import('./src-WQE3MFBD.js');
|
|
177
177
|
return createGitHubCloneApp();
|
|
178
178
|
}
|
|
179
179
|
function defaultPortFor(twin, env = process.env) {
|
|
@@ -193,20 +193,19 @@ var draftAddressedTo2 = defineCheck({
|
|
|
193
193
|
template: "A draft addressed to {email} exists",
|
|
194
194
|
params: { email: emailAddress },
|
|
195
195
|
substrate: "final",
|
|
196
|
-
// An achievement:
|
|
197
|
-
// examinee that does nothing does not satisfy this.
|
|
196
|
+
// An achievement: the seeded mailbox already contains a draft with a
|
|
197
|
+
// recipient, so an examinee that does nothing does not satisfy this.
|
|
198
198
|
polarity: () => "positive",
|
|
199
199
|
//
|
|
200
200
|
// THE LOAD-BEARING DECLARATION ON THIS CHECK.
|
|
201
201
|
//
|
|
202
|
-
//
|
|
203
|
-
//
|
|
204
|
-
//
|
|
205
|
-
//
|
|
206
|
-
//
|
|
207
|
-
//
|
|
208
|
-
//
|
|
209
|
-
// instead — and the count of unguarded hazards must stay at zero.
|
|
202
|
+
// `subject` names the value the assertion is actually about, and on this check
|
|
203
|
+
// that value is an email address — squarely inside what a redaction config may
|
|
204
|
+
// legitimately destroy before an evaluator ever sees the state. Declaring it
|
|
205
|
+
// is what lets a consumer detect that the comparison has become impossible and
|
|
206
|
+
// record an honest skip. Without it there is nothing to detect: the address is
|
|
207
|
+
// simply absent, the comparison silently cannot match, and the criterion
|
|
208
|
+
// reports a vacuous verdict that reads like a real one.
|
|
210
209
|
subject: ({ email }) => email,
|
|
211
210
|
// The address is the scanned literal, so the mutant points at it. It stays
|
|
212
211
|
// email-shaped so it re-binds to this same check: a mutant that stops matching
|
|
@@ -236,7 +235,7 @@ var draftAddressedTo2 = defineCheck({
|
|
|
236
235
|
// address. A reader following this pointer lands on the thing the
|
|
237
236
|
// sentence is about — "a draft addressed to X" — and the join to the
|
|
238
237
|
// message is an implementation detail of how the twin exports, not the
|
|
239
|
-
// claim
|
|
238
|
+
// claim.
|
|
240
239
|
evidenceStatePaths: [childStatePath(DRAFTS_PATH, index)]
|
|
241
240
|
};
|
|
242
241
|
}
|
|
@@ -270,8 +269,9 @@ var draftCountAtLeast = defineCheck({
|
|
|
270
269
|
// is nothing to resolve: it is compared directly against a cardinality the
|
|
271
270
|
// predicate computes, so falsifying it moves the verdict THROUGH the
|
|
272
271
|
// assertion. That is the same argument `stripe.payment-intent-amount` makes,
|
|
273
|
-
// and it is why
|
|
274
|
-
//
|
|
272
|
+
// and it is why a numeric sentinel is admissible on this check and on very few
|
|
273
|
+
// others: an evaluator that allowlists the numeric sentinel per check should
|
|
274
|
+
// expect these two.
|
|
275
275
|
vacuityMutant: (args) => ({ ...args, count: String(VACUITY_SENTINEL_NUMBER) }),
|
|
276
276
|
discriminatingWorlds: ({ count }) => {
|
|
277
277
|
const wanted = parseCount(count) ?? 1;
|
|
@@ -316,7 +316,7 @@ var labelExists = defineCheck({
|
|
|
316
316
|
template: "A label named {label} exists",
|
|
317
317
|
params: { label: labelName },
|
|
318
318
|
substrate: "final",
|
|
319
|
-
// An achievement —
|
|
319
|
+
// An achievement — the seed defines no `Parity Complete`, so the
|
|
320
320
|
// examinee has to create it.
|
|
321
321
|
polarity: () => "positive",
|
|
322
322
|
// The name is a caller-supplied literal compared against state.
|
|
@@ -339,7 +339,7 @@ var labelExists = defineCheck({
|
|
|
339
339
|
reason: `no label named "${label}" exists`,
|
|
340
340
|
// The label COLLECTION — the honest citation for a lookup that found
|
|
341
341
|
// nothing, and the arm a reader most wants to open: see for yourself
|
|
342
|
-
// that the name is not in it
|
|
342
|
+
// that the name is not in it.
|
|
343
343
|
...found.searched === void 0 ? {} : { evidenceStatePaths: [found.searched] }
|
|
344
344
|
};
|
|
345
345
|
}
|
|
@@ -393,7 +393,7 @@ var messageHasLabel = defineCheck({
|
|
|
393
393
|
// places: the message row it resolved by id, and the join table it then
|
|
394
394
|
// questioned. Labels are not nested under their message in this export —
|
|
395
395
|
// that is the whole reason `messageCarriesLabel` exists — so one pointer
|
|
396
|
-
// could not say where this verdict came from
|
|
396
|
+
// could not say where this verdict came from.
|
|
397
397
|
evidenceStatePaths: [found.path, carried.path]
|
|
398
398
|
};
|
|
399
399
|
}
|
|
@@ -513,7 +513,7 @@ var oneMessagePerRecipient = defineCheck({
|
|
|
513
513
|
// ../packages/twin-gmail/dist/src/check-tape.js
|
|
514
514
|
var noUnsupportedEndpoint = defineCheck({
|
|
515
515
|
id: "gmail.no-unsupported-endpoint",
|
|
516
|
-
description: 'Scans the recorded call tape for any request the twin answered with fidelity "unsupported" \u2014 a route it does not implement, answered 501. It asserts nothing about whether the run SUCCEEDED, and nothing about calls that were merely rejected: a 404 or a 422 from a route the twin does implement is a semantic answer and passes this check. The tape is scoped to this twin by the engine before the check sees it, so an unsupported call to a DIFFERENT twin in a multi-twin session cannot fail it \u2014 which matters here, because task
|
|
516
|
+
description: 'Scans the recorded call tape for any request the twin answered with fidelity "unsupported" \u2014 a route it does not implement, answered 501. It asserts nothing about whether the run SUCCEEDED, and nothing about calls that were merely rejected: a 404 or a 422 from a route the twin does implement is a semantic answer and passes this check. The tape is scoped to this twin by the engine before the check sees it, so an unsupported call to a DIFFERENT twin in a multi-twin session cannot fail it \u2014 which matters here, because a single task may run gmail and github together.',
|
|
517
517
|
// No slots, and no twin word. The legacy cloud rule accepted "No unsupported
|
|
518
518
|
// Gmail endpoint was called" alongside the bare form, plus plural and `were`
|
|
519
519
|
// variants, because an author typed English. Under position 2 an author PICKS
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readManifest, normalizeManifestTwins } from './chunk-KUVTL4NZ.js';
|
|
2
|
-
import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus } from './chunk-
|
|
2
|
+
import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus } from './chunk-5TEVH6RY.js';
|
|
3
3
|
import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema } from './chunk-PQYIAA6K.js';
|
|
4
4
|
import { redactSecrets, redactEvent } from './chunk-SG6ZTIMT.js';
|
|
5
5
|
import { existsSync } from 'node:fs';
|
|
@@ -98,7 +98,7 @@ var noMessageContaining = defineCheck({
|
|
|
98
98
|
params: { needle: messageNeedle, scope: messageScope },
|
|
99
99
|
substrate: "final",
|
|
100
100
|
polarity: () => "negative",
|
|
101
|
-
// The quoted needle IS the subject
|
|
101
|
+
// The quoted needle IS the subject.
|
|
102
102
|
subject: ({ needle }) => needle,
|
|
103
103
|
// The needle is SCANNED, so falsifying it is a real trigger. The scope only
|
|
104
104
|
// narrows the candidate set, so a closed set costs nothing here.
|
|
@@ -127,7 +127,7 @@ var noMessageContaining = defineCheck({
|
|
|
127
127
|
passed: !hit,
|
|
128
128
|
reason: hit ? `${publicOnly ? "public " : ""}channel "${hit.name}" has a message containing "${needle}"` : `no ${publicOnly ? "public channel" : "channel"} has a message containing "${needle}" (${candidates.length} channel(s) scanned)`,
|
|
129
129
|
// The workspace's channel list, on BOTH arms and under both scopes
|
|
130
|
-
//
|
|
130
|
+
// Not the hitting channel on a fail and the list on a pass:
|
|
131
131
|
// a citation whose PRECISION moves with the verdict is fine, but one whose
|
|
132
132
|
// PRESENCE does is not, and once both arms must cite, the list is the
|
|
133
133
|
// honest answer under `any public channel` too — the public set is
|
|
@@ -144,11 +144,10 @@ var noMessagePosted = defineCheck({
|
|
|
144
144
|
substrate: "final",
|
|
145
145
|
polarity: () => "negative",
|
|
146
146
|
// No subject, and NOT merely because a channel name is a selector no redactor
|
|
147
|
-
// can eat.
|
|
148
|
-
//
|
|
149
|
-
//
|
|
150
|
-
// subject here would
|
|
151
|
-
// forgot-`subject` regression arm with nothing to test.
|
|
147
|
+
// can eat. This check is the canonical example of a predicate that compares a
|
|
148
|
+
// literal and deliberately declares no subject, so it is the one a consumer's
|
|
149
|
+
// own test suite is likely to reach for when exercising that case. Declaring a
|
|
150
|
+
// subject here would change which category it demonstrates.
|
|
152
151
|
subject: () => null,
|
|
153
152
|
// No falsifiable trigger. The channel is the only literal and it only
|
|
154
153
|
// RESOLVES: a sentinel channel is `channel_not_found`, which skips, so the
|
|
@@ -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-
|
|
4
|
-
import { createRecorder, bootTwin } from './chunk-
|
|
3
|
+
import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-5TEVH6RY.js';
|
|
4
|
+
import { createRecorder, bootTwin } from './chunk-2CMCN5PW.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,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-
|
|
3
|
+
import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-PRCZLT4W.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-
|
|
6
|
+
import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, outcomeOf } from './chunk-5TEVH6RY.js';
|
|
7
7
|
import './chunk-NW7HGA2K.js';
|
|
8
8
|
import { HostedQuotaError, HostedOrchError } from './chunk-PQYIAA6K.js';
|
|
9
9
|
import './chunk-SGDUD7KK.js';
|
|
10
10
|
import './chunk-NJ246QPJ.js';
|
|
11
11
|
import './chunk-ZKID2HS3.js';
|
|
12
|
-
import { bootTwin } from './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
12
|
+
import { bootTwin } from './chunk-2CMCN5PW.js';
|
|
13
|
+
import './chunk-BK7HSHRA.js';
|
|
14
|
+
import './chunk-35TG2GHS.js';
|
|
15
15
|
import './chunk-VBATFCWR.js';
|
|
16
16
|
import './chunk-SG6ZTIMT.js';
|
|
17
17
|
import { readFile } from 'node:fs/promises';
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { newGroupId, criterionPhrase } from './chunk-RGZBC7NF.js';
|
|
2
|
-
import { runTaskHosted, resolveRunAgentIdentity } from './chunk-
|
|
2
|
+
import { runTaskHosted, resolveRunAgentIdentity } from './chunk-F7YLHTCM.js';
|
|
3
3
|
import './chunk-KUVTL4NZ.js';
|
|
4
|
-
import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-
|
|
4
|
+
import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-5TEVH6RY.js';
|
|
5
5
|
import './chunk-NW7HGA2K.js';
|
|
6
6
|
import { HostedQuotaError, HostedTrialError } from './chunk-PQYIAA6K.js';
|
|
7
7
|
import './chunk-SGDUD7KK.js';
|
|
8
8
|
import './chunk-NJ246QPJ.js';
|
|
9
9
|
import './chunk-ZKID2HS3.js';
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
10
|
+
import './chunk-BK7HSHRA.js';
|
|
11
|
+
import './chunk-35TG2GHS.js';
|
|
12
12
|
import './chunk-VBATFCWR.js';
|
|
13
13
|
import './chunk-SG6ZTIMT.js';
|
|
14
14
|
import { randomUUID } from 'node:crypto';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { FAILURE_INJECTION_OVERRIDE_KEY, POME_RECORDER_EVENTS_PATH, PROVIDER_SHAPED_TEAM_ID, TwinBootError, TwinError, UnknownToolError, bearerAuth, createAdminGate, createApp, createFailureInjectionStore, createFileBackedRecorderStore, createRecorderHandle, createRecorderStore, created, ensureTwinAuthSecret, failureInjectionMiddleware, failureInjectionRuleSchema, formTokenResolver, isLoopbackHost, mintProviderToken, ok, queryTokenResolver, recordedRequestHeaders, requireAdminAuth, resolveAuthSecret, resolveRecorderStore, serve, setClientIp, setRecordedTool, toTwinHttpEventRow, twinBuildInfo, verifyProviderToken } from './chunk-
|
|
1
|
+
export { FAILURE_INJECTION_OVERRIDE_KEY, POME_RECORDER_EVENTS_PATH, PROVIDER_SHAPED_TEAM_ID, TwinBootError, TwinError, UnknownToolError, bearerAuth, createAdminGate, createApp, createFailureInjectionStore, createFileBackedRecorderStore, createRecorderHandle, createRecorderStore, created, ensureTwinAuthSecret, failureInjectionMiddleware, failureInjectionRuleSchema, formTokenResolver, isLoopbackHost, mintProviderToken, ok, queryTokenResolver, recordedRequestHeaders, requireAdminAuth, resolveAuthSecret, resolveRecorderStore, serve, setClientIp, setRecordedTool, toTwinHttpEventRow, twinBuildInfo, verifyProviderToken } from './chunk-35TG2GHS.js';
|
|
2
2
|
import './chunk-VBATFCWR.js';
|
|
3
3
|
export { redactEvent, redactSecrets } from './chunk-SG6ZTIMT.js';
|
package/dist/src/cli/main.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
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-
|
|
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-F7YLHTCM.js';
|
|
3
3
|
import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-KUVTL4NZ.js';
|
|
4
|
-
import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-
|
|
4
|
+
import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-PRCZLT4W.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-
|
|
7
|
+
import { parseTaskFile, scoreStatus, runScoreLine, readLatestRun, readMetaSummary, readConfigTwins, scoreCountsSummary, markerFor, outcomeOf, criterionMarkerLabel, twinSkipSuffix, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs } from '../../chunk-5TEVH6RY.js';
|
|
8
8
|
import '../../chunk-NW7HGA2K.js';
|
|
9
9
|
import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-PQYIAA6K.js';
|
|
10
10
|
import { TAPE_ASSERTABLE_TOOLS } from '../../chunk-FKZZWWYC.js';
|
|
11
11
|
import { seedSchema } from '../../chunk-SGDUD7KK.js';
|
|
12
|
-
import { SLACK_CHECKS } from '../../chunk-
|
|
13
|
-
import { GMAIL_CHECKS } from '../../chunk-
|
|
12
|
+
import { SLACK_CHECKS } from '../../chunk-LH4EGGQW.js';
|
|
13
|
+
import { GMAIL_CHECKS } from '../../chunk-EU6SGN7A.js';
|
|
14
14
|
import '../../chunk-NJ246QPJ.js';
|
|
15
|
-
import { LINEAR_CHECKS } from '../../chunk-
|
|
15
|
+
import { LINEAR_CHECKS } from '../../chunk-3QVSXFJI.js';
|
|
16
16
|
import '../../chunk-ZKID2HS3.js';
|
|
17
17
|
import { oneOf, defineCheck, repoRef, VACUITY_SENTINEL_NUMBER, childStatePath, VACUITY_SENTINEL, statePath, templateSlots, renderCheck, checksDigest, checkPattern, checkNearMissPattern } from '../../chunk-NY55QTVQ.js';
|
|
18
|
-
import '../../chunk-
|
|
19
|
-
import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-
|
|
20
|
-
import '../../chunk-
|
|
18
|
+
import '../../chunk-2CMCN5PW.js';
|
|
19
|
+
import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-BK7HSHRA.js';
|
|
20
|
+
import '../../chunk-35TG2GHS.js';
|
|
21
21
|
import { isLegacyEventRow, eventSchema } from '../../chunk-VBATFCWR.js';
|
|
22
22
|
import { redactEvent, redactSecrets } from '../../chunk-SG6ZTIMT.js';
|
|
23
23
|
import { Command } from 'commander';
|
|
@@ -850,7 +850,7 @@ async function throwForStatus(res) {
|
|
|
850
850
|
|
|
851
851
|
// src/task/seed-verifier.ts
|
|
852
852
|
async function verifySeedWithTwin(seed) {
|
|
853
|
-
const { GitHubDomain, openGitHubCloneDatabase } = await import('../../src-
|
|
853
|
+
const { GitHubDomain, openGitHubCloneDatabase } = await import('../../src-WQE3MFBD.js');
|
|
854
854
|
const db = openGitHubCloneDatabase(":memory:");
|
|
855
855
|
try {
|
|
856
856
|
new GitHubDomain(db).seed(seed);
|
|
@@ -1589,7 +1589,7 @@ var issueStateCheck = defineCheck({
|
|
|
1589
1589
|
template: "Issue #{issue} in `{repo}` is in state {state}",
|
|
1590
1590
|
params: { issue: issueNumber, repo: repoRef, state: issueState },
|
|
1591
1591
|
substrate: "final",
|
|
1592
|
-
// Per-arg. "is closed" asks the examinee to close it; "is open" is
|
|
1592
|
+
// Per-arg. "is closed" asks the examinee to close it; "is open" is the twin's
|
|
1593
1593
|
// "the agent did not close issue #1" — a prohibition wearing a state word.
|
|
1594
1594
|
polarity: ({ state }) => state === "open" ? "negative" : "positive",
|
|
1595
1595
|
subject: () => null,
|
|
@@ -1619,7 +1619,7 @@ var issueStateCheck = defineCheck({
|
|
|
1619
1619
|
// The ROW, not `…/state` — the field this branch exists for is the one
|
|
1620
1620
|
// that is absent, and a pointer at it would not resolve. Pointing at the
|
|
1621
1621
|
// row is what lets a reader see the gap for themselves instead of taking
|
|
1622
|
-
// the reason's word for it
|
|
1622
|
+
// the reason's word for it.
|
|
1623
1623
|
evidenceStatePaths: [found.path]
|
|
1624
1624
|
};
|
|
1625
1625
|
}
|
|
@@ -1639,7 +1639,7 @@ var issueHasLabel = defineCheck({
|
|
|
1639
1639
|
substrate: "final",
|
|
1640
1640
|
polarity: () => "positive",
|
|
1641
1641
|
// The label is a caller-supplied literal compared against the state tree, so
|
|
1642
|
-
// a redactor that destroys it makes this check unable to fire
|
|
1642
|
+
// a redactor that destroys it makes this check unable to fire.
|
|
1643
1643
|
subject: ({ label }) => label,
|
|
1644
1644
|
// The label is what the scan ranges over; the issue number only resolves.
|
|
1645
1645
|
vacuityMutant: (args) => ({ ...args, label: VACUITY_SENTINEL }),
|
|
@@ -1769,7 +1769,7 @@ var pullRequestStateCheck = defineCheck({
|
|
|
1769
1769
|
template: "Pull request #{pr} in `{repo}` is {state}",
|
|
1770
1770
|
params: { pr: prNumber, repo: repoRef, state: pullRequestState },
|
|
1771
1771
|
substrate: "final",
|
|
1772
|
-
// Per-arg, and the reason polarity takes the args at all: task
|
|
1772
|
+
// Per-arg, and the reason polarity takes the args at all: one shipped task asserts
|
|
1773
1773
|
// "PR #1 is merged" and "PR #2 is not merged" through this one template.
|
|
1774
1774
|
// "open" is the same prohibition as the issue check's.
|
|
1775
1775
|
polarity: ({ state }) => state === "not merged" || state === "open" ? "negative" : "positive",
|
|
@@ -1809,7 +1809,7 @@ var pullRequestStateCheck = defineCheck({
|
|
|
1809
1809
|
status: "skipped",
|
|
1810
1810
|
reason: `pull request #${pr} has no ${onMergeFlag ? "merged" : "state"} field in state_final (state_incomplete)`,
|
|
1811
1811
|
// The ROW: the field this branch exists for is the absent one, so a
|
|
1812
|
-
// pointer at it would resolve to nothing
|
|
1812
|
+
// pointer at it would resolve to nothing.
|
|
1813
1813
|
evidenceStatePaths: [found.path]
|
|
1814
1814
|
};
|
|
1815
1815
|
}
|
|
@@ -1924,7 +1924,7 @@ var pullRequestReviewExists = defineCheck({
|
|
|
1924
1924
|
// ../packages/twin-github/dist/src/check-repos.js
|
|
1925
1925
|
var noNewLabels = defineCheck({
|
|
1926
1926
|
id: "github.no-new-labels",
|
|
1927
|
-
//
|
|
1927
|
+
// The same explanation the comment below carries, in the one place
|
|
1928
1928
|
// an author can actually reach it.
|
|
1929
1929
|
description: "Compares the repository's label DEFINITIONS in the seed against the final state. Applying an ALREADY-DEFINED label to an issue PASSES this check \u2014 only creating a label the repo did not already define fails it. `addIssueLabels` rejects an undefined label, so an examinee cannot apply a new one without creating it first, which is what makes this tight. Needs the seed: it is a delta, not a state assertion.",
|
|
1930
1930
|
// The repo is named on purpose. Without it the sentence reads as an
|
|
@@ -2110,7 +2110,7 @@ var noUnsupportedEndpoint = defineCheck({
|
|
|
2110
2110
|
// and under position 2 an author PICKS the check rather than typing it — so
|
|
2111
2111
|
// the legacy regex's optional twin word ("No unsupported GitHub endpoint was
|
|
2112
2112
|
// called") and its plural/`were` variants are retired rather than ported,
|
|
2113
|
-
// exactly as
|
|
2113
|
+
// exactly as the generic `issue-has-label` phrasing was retired.
|
|
2114
2114
|
template: "No unsupported endpoint was called",
|
|
2115
2115
|
params: {},
|
|
2116
2116
|
substrate: "tape",
|
|
@@ -2124,7 +2124,7 @@ var noUnsupportedEndpoint = defineCheck({
|
|
|
2124
2124
|
// trigger is "a call with fidelity=unsupported exists", which lives on the
|
|
2125
2125
|
// tape and not in the sentence. Reported as `no_trigger`, never as clean.
|
|
2126
2126
|
vacuityMutant: () => null,
|
|
2127
|
-
//
|
|
2127
|
+
// Both of these already shipped as tests; this is the same pair,
|
|
2128
2128
|
// promoted to the declaration.
|
|
2129
2129
|
discriminatingWorlds: () => ({
|
|
2130
2130
|
passing: tapeWorld([
|
|
@@ -2439,7 +2439,7 @@ var paymentIntentAmount = defineCheck({
|
|
|
2439
2439
|
return {
|
|
2440
2440
|
passed: found,
|
|
2441
2441
|
reason: found ? `a PaymentIntent exists with amount ${wanted}` : `no PaymentIntent has amount ${wanted} (amounts: [${pis.map((pi) => pi.amount ?? "?").join(", ")}])`,
|
|
2442
|
-
// The COLLECTION, not the matching row
|
|
2442
|
+
// The COLLECTION, not the matching row. Every check in this file
|
|
2443
2443
|
// scans a whole collection and answers a question about the set — "does
|
|
2444
2444
|
// one exist with…" — so the set is what was read. Citing the hit on a pass
|
|
2445
2445
|
// and the collection on a fail would make the pointer's shape track the
|
|
@@ -2567,7 +2567,7 @@ var eventEmitted = defineCheck({
|
|
|
2567
2567
|
id: "stripe.event-emitted",
|
|
2568
2568
|
description: "Asserts the account's event log contains at least one event of this type. The twin delivers no webhooks in v1 \u2014 an examinee observes events by polling `GET /v1/events` \u2014 so this reads the log the twin appended, not anything the examinee received. It asserts nothing about WHICH resource the event names: `payment_intent.succeeded` is emitted by both the card confirm path and the x402 crypto-deposit settlement, and this check deliberately does not distinguish them, because the criterion asking for it is about the outcome rather than the rail. An absent `events` key is a SKIP.",
|
|
2569
2569
|
// No quotes, and that is load-bearing: the corpus already says
|
|
2570
|
-
// `payment_intent.succeeded is emitted`, so this template re-renders task
|
|
2570
|
+
// `payment_intent.succeeded is emitted`, so this template re-renders that task's
|
|
2571
2571
|
// existing criterion byte-identically and the migration rewrites it not at
|
|
2572
2572
|
// all. The dot lives inside the closed set's members, which `oneOf` escapes,
|
|
2573
2573
|
// so it matches a dot rather than any character.
|
|
@@ -2629,7 +2629,7 @@ var refundExists = defineCheck({
|
|
|
2629
2629
|
return {
|
|
2630
2630
|
passed: rows.found.length > 0,
|
|
2631
2631
|
reason: rows.found.length > 0 ? `charge "${args.charge}" has ${rows.found.length} refund row(s)` : `charge "${args.charge}" has no refund rows`,
|
|
2632
|
-
// The refund COLLECTION
|
|
2632
|
+
// The refund COLLECTION. Rows are not nested under their charge —
|
|
2633
2633
|
// they carry a `charge` wire field — so the per-charge list this counted
|
|
2634
2634
|
// exists nowhere in the tree, and on the zero side there is no row to point
|
|
2635
2635
|
// at at all, which is precisely the arm a reader wants to open.
|
|
@@ -4490,7 +4490,7 @@ var DEFAULT_AGENT_FILE = "examples/agents/scripted-triage-agent.ts";
|
|
|
4490
4490
|
var DEFAULT_AGENT_COMMAND = `node ${DEFAULT_AGENT_FILE}`;
|
|
4491
4491
|
var MANIFEST_SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
|
|
4492
4492
|
function readPackageVersion() {
|
|
4493
|
-
if ("0.21.
|
|
4493
|
+
if ("0.21.9".length > 0) return "0.21.9";
|
|
4494
4494
|
try {
|
|
4495
4495
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
4496
4496
|
const candidates = [
|
|
@@ -4945,7 +4945,7 @@ function createProgram() {
|
|
|
4945
4945
|
return;
|
|
4946
4946
|
}
|
|
4947
4947
|
{
|
|
4948
|
-
const { runDoctorChecks } = await import('../../checks-
|
|
4948
|
+
const { runDoctorChecks } = await import('../../checks-ZWCORWK4.js');
|
|
4949
4949
|
const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
|
|
4950
4950
|
const doctorReport = await runDoctorChecks({ mode: useLocal ? "full" : "hosted" });
|
|
4951
4951
|
if (!doctorReport.ok) {
|
|
@@ -4983,7 +4983,7 @@ function createProgram() {
|
|
|
4983
4983
|
taskForRuns.config.runs
|
|
4984
4984
|
);
|
|
4985
4985
|
if (k > 1) {
|
|
4986
|
-
const { runTrialGroup } = await import('../../runTrialGroup-
|
|
4986
|
+
const { runTrialGroup } = await import('../../runTrialGroup-BYUY5WJ7.js');
|
|
4987
4987
|
const fileForRerun = relative(process.cwd(), file);
|
|
4988
4988
|
const rerunCommand = defaultTask ? options.trials !== void 0 ? `pome run -n ${k}` : "pome run" : `pome run ${fileForRerun && !fileForRerun.startsWith("..") ? fileForRerun : file} -n ${k}`;
|
|
4989
4989
|
const groupResult = await runTrialGroup({
|
|
@@ -5077,7 +5077,7 @@ function createProgram() {
|
|
|
5077
5077
|
process.exitCode = 5;
|
|
5078
5078
|
return;
|
|
5079
5079
|
}
|
|
5080
|
-
const { runDemo } = await import('../../runDemo-
|
|
5080
|
+
const { runDemo } = await import('../../runDemo-7NYX7S5T.js');
|
|
5081
5081
|
const result = await runDemo({
|
|
5082
5082
|
apiBase: opts.apiUrl.replace(/\/$/, ""),
|
|
5083
5083
|
dashboardBase: process.env.POME_DASHBOARD_URL ?? DEFAULT_DASHBOARD_URL,
|
|
@@ -5095,7 +5095,7 @@ function createProgram() {
|
|
|
5095
5095
|
program.command("doctor").description(
|
|
5096
5096
|
"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."
|
|
5097
5097
|
).action(async () => {
|
|
5098
|
-
const { runDoctorChecks } = await import('../../checks-
|
|
5098
|
+
const { runDoctorChecks } = await import('../../checks-ZWCORWK4.js');
|
|
5099
5099
|
const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
|
|
5100
5100
|
const report = await runDoctorChecks();
|
|
5101
5101
|
for (const line of renderDoctorReport(report, { passNote: true })) console.error(line);
|
|
@@ -5227,7 +5227,7 @@ function createProgram() {
|
|
|
5227
5227
|
).description(
|
|
5228
5228
|
"Start a standalone twin as a long-lived foreground server (Ctrl-C to stop)"
|
|
5229
5229
|
).action(async (name, options) => {
|
|
5230
|
-
const { runTwinStartCommand } = await import('../../twinStart-
|
|
5230
|
+
const { runTwinStartCommand } = await import('../../twinStart-5ZWCVBPZ.js');
|
|
5231
5231
|
await runTwinStartCommand(name, options);
|
|
5232
5232
|
});
|
|
5233
5233
|
twin.command("reset").argument("[name]", "Twin name (default: github)", "github").description("Reset standalone twin state").action(async (name) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { SLACK_CHECKS } from './chunk-
|
|
1
|
+
export { SLACK_CHECKS } from './chunk-LH4EGGQW.js';
|
|
2
2
|
import './chunk-NY55QTVQ.js';
|
|
3
|
-
import { defineTwin, queryTokenResolver, formTokenResolver, UnknownToolError, openTwinDatabase, createApp } from './chunk-
|
|
3
|
+
import { defineTwin, queryTokenResolver, formTokenResolver, UnknownToolError, openTwinDatabase, createApp } from './chunk-35TG2GHS.js';
|
|
4
4
|
import './chunk-VBATFCWR.js';
|
|
5
5
|
import './chunk-SG6ZTIMT.js';
|
|
6
6
|
import { z, ZodError } from 'zod';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { LINEAR_CHECKS } from './chunk-
|
|
1
|
+
export { LINEAR_CHECKS } from './chunk-3QVSXFJI.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, 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-ZKID2HS3.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-ZKID2HS3.js';
|
|
4
4
|
import './chunk-NY55QTVQ.js';
|
|
5
|
-
import { openTwinDatabase, defineTwin, createApp } from './chunk-
|
|
5
|
+
import { openTwinDatabase, defineTwin, createApp } from './chunk-35TG2GHS.js';
|
|
6
6
|
import './chunk-VBATFCWR.js';
|
|
7
7
|
import './chunk-SG6ZTIMT.js';
|
|
8
8
|
import { createHmac, timingSafeEqual, createHash, randomBytes } from 'node:crypto';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { failureInjectionRuleSchema, openTwinDatabase, createFailureInjectionStore, defineTwin, twinBuildInfo, failureInjectionMiddleware, createApp, FAILURE_INJECTION_OVERRIDE_KEY, recordedRequestHeaders, UnknownToolError } from './chunk-
|
|
1
|
+
import { failureInjectionRuleSchema, openTwinDatabase, createFailureInjectionStore, defineTwin, twinBuildInfo, failureInjectionMiddleware, createApp, FAILURE_INJECTION_OVERRIDE_KEY, recordedRequestHeaders, UnknownToolError } from './chunk-35TG2GHS.js';
|
|
2
2
|
import './chunk-VBATFCWR.js';
|
|
3
3
|
import './chunk-SG6ZTIMT.js';
|
|
4
4
|
import { z, ZodError } from 'zod';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { GMAIL_CHECKS } from './chunk-
|
|
1
|
+
export { GMAIL_CHECKS } from './chunk-EU6SGN7A.js';
|
|
2
2
|
import { gmailErrorEnvelope, gmailSeedSchema, parseSeed, defaultSeedState, notFound, invalidArgument, checkFault, unsupported, validateSearchQuery, SEARCH_MAILBOX_MESSAGE_BUDGET, GmailError, parseSearchQuery, CATEGORY_LABELS, parseDate, parseSize, KNOWN_FIELDS, parseDuration, assertHasOperator } from './chunk-NJ246QPJ.js';
|
|
3
3
|
export { DEFAULT_GMAIL_AGENT_EMAIL, GmailError, SEARCH_MAILBOX_MESSAGE_BUDGET, agentPathInboxMailbox, defaultSeedState, gmailErrorEnvelope, gmailSeedSchema, loadSeedFromEnv, parseSearchQuery, parseSeed, validateSearchQuery } from './chunk-NJ246QPJ.js';
|
|
4
4
|
import './chunk-NY55QTVQ.js';
|
|
5
|
-
import { defineTwin, openTwinDatabase, createApp } from './chunk-
|
|
5
|
+
import { defineTwin, openTwinDatabase, createApp } from './chunk-35TG2GHS.js';
|
|
6
6
|
import './chunk-VBATFCWR.js';
|
|
7
7
|
import './chunk-SG6ZTIMT.js';
|
|
8
8
|
import { createHash, createHmac, timingSafeEqual, randomBytes } from 'node:crypto';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import './chunk-FKZZWWYC.js';
|
|
2
2
|
import { defaultSeedState, parseSeed } from './chunk-SGDUD7KK.js';
|
|
3
3
|
export { defaultSeedState, parseSeed, seedSchema } from './chunk-SGDUD7KK.js';
|
|
4
|
-
import { defineTwin, twinBuildInfo, UnknownToolError, openTwinDatabase, createApp } from './chunk-
|
|
4
|
+
import { defineTwin, twinBuildInfo, UnknownToolError, openTwinDatabase, createApp } from './chunk-35TG2GHS.js';
|
|
5
5
|
import './chunk-VBATFCWR.js';
|
|
6
6
|
import './chunk-SG6ZTIMT.js';
|
|
7
7
|
import { z, ZodError } from 'zod';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { bootTwin } from './chunk-
|
|
2
|
-
import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
import { bootTwin } from './chunk-2CMCN5PW.js';
|
|
2
|
+
import { isTwinName, TWIN_NAMES, defaultPortFor, TWIN_REGISTRY } from './chunk-BK7HSHRA.js';
|
|
3
|
+
import './chunk-35TG2GHS.js';
|
|
4
4
|
import './chunk-VBATFCWR.js';
|
|
5
5
|
import './chunk-SG6ZTIMT.js';
|
|
6
6
|
import { randomBytes } from 'node:crypto';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pome-sh/cli",
|
|
3
|
-
"version": "0.21.
|
|
4
|
-
"description": "Digital-twin testing for AI agents
|
|
3
|
+
"version": "0.21.9",
|
|
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",
|
|
7
7
|
"agents",
|