@pome-sh/cli 0.26.8 → 0.26.10
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-UOJUUVZB.js → checks-3LVRPHOK.js} +4 -4
- package/dist/{chunk-IDNSKKEC.js → chunk-2ZGVDTJC.js} +1 -1
- package/dist/{chunk-OFA4E6RJ.js → chunk-6IVXTU67.js} +4 -4
- package/dist/{chunk-JUESW6G4.js → chunk-6KJC4BTO.js} +5 -5
- package/dist/{chunk-7WPD3DTO.js → chunk-ANKO3RCB.js} +7 -7
- package/dist/{chunk-KSX2PAEI.js → chunk-BZO3YCJS.js} +27 -27
- package/dist/{chunk-WEKJIGUD.js → chunk-CFXEETE3.js} +4 -4
- package/dist/{chunk-U6MQ5KBT.js → chunk-CXGMLUZ4.js} +1 -1
- package/dist/{chunk-CKN743FJ.js → chunk-EIUCTFQV.js} +11 -11
- package/dist/{chunk-NUXVJ4E6.js → chunk-FQGR7KDT.js} +4 -4
- package/dist/{chunk-2Q3P45LK.js → chunk-IZFM7W2V.js} +1 -1
- package/dist/{chunk-5EE7YWA3.js → chunk-KIXYRPVY.js} +2 -2
- package/dist/{chunk-B22TYIEM.js → chunk-QXQAVKTE.js} +6 -6
- package/dist/{runDemo-MZPIXV6R.js → runDemo-XO5R5QTM.js} +8 -8
- package/dist/{runTrialGroup-INW4QLSL.js → runTrialGroup-CLJJOO4J.js} +11 -11
- package/dist/{server-TPAFPKLC.js → server-TK5YBK6E.js} +2 -2
- package/dist/src/cli/main.js +33 -33
- package/dist/{src-AAF7TZMO.js → src-FXRQSKBK.js} +31 -32
- package/dist/{src-2M54EY2P.js → src-GWA7QVQS.js} +9 -9
- package/dist/{src-UEO2KIBJ.js → src-JJNS46T6.js} +55 -55
- package/dist/{src-4E5WAGNJ.js → src-L6F5YXSP.js} +14 -14
- package/dist/{src-Q4MBHYC5.js → src-Q4JNJE5S.js} +14 -14
- package/dist/twinHarness-6NVAKIOB.js +5 -0
- package/dist/{twinStart-2VP545N6.js → twinStart-WIT4UVAC.js} +4 -4
- package/package.json +1 -1
- package/dist/twinHarness-OC6VQRXO.js +0 -5
package/dist/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "pome-sh",
|
|
3
|
-
"version": "0.26.
|
|
4
|
-
"git_sha": "
|
|
5
|
-
"build_time": "2026-08-
|
|
3
|
+
"version": "0.26.10",
|
|
4
|
+
"git_sha": "dc130eecd4b26498dee164b4ba3ad4750b4c9f39",
|
|
5
|
+
"build_time": "2026-08-23T18:53:01.788Z"
|
|
6
6
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { findManifestPath, readManifest } from './chunk-
|
|
1
|
+
import { findManifestPath, readManifest } from './chunk-CXGMLUZ4.js';
|
|
2
2
|
import { getAvailablePort } from './chunk-XDU6TD4O.js';
|
|
3
3
|
import { buildEgressAllowlist } from './chunk-CBFKZZBR.js';
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
4
|
+
import './chunk-BZO3YCJS.js';
|
|
5
|
+
import './chunk-6KJC4BTO.js';
|
|
6
6
|
import './chunk-SG6ZTIMT.js';
|
|
7
7
|
import { serve } from '@hono/node-server';
|
|
8
8
|
import { randomUUID, randomBytes } from 'node:crypto';
|
|
@@ -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-6NVAKIOB.js');
|
|
187
187
|
harness = await bootTwin({
|
|
188
188
|
twin: "github",
|
|
189
189
|
seedState: void 0,
|
|
@@ -179,7 +179,7 @@ var noReactionAdded = defineCheck({
|
|
|
179
179
|
polarity: () => "negative",
|
|
180
180
|
// The reaction name, because that is the literal this predicate compares
|
|
181
181
|
// against `reactions[].name` — the line below has said so since the check
|
|
182
|
-
// shipped, and this field said `null` anyway
|
|
182
|
+
// shipped, and this field said `null` anyway.
|
|
183
183
|
//
|
|
184
184
|
// It is the sharpest case in the vocabulary for why that mattered. A NEGATIVE
|
|
185
185
|
// criterion asserting a scanned literal is absent reads a redactor's work as
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { readManifest, normalizeManifestTwins } from './chunk-
|
|
2
|
-
import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-
|
|
3
|
-
import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema } from './chunk-
|
|
1
|
+
import { readManifest, normalizeManifestTwins } from './chunk-CXGMLUZ4.js';
|
|
2
|
+
import { createHostedClient, perTwinReturnedByCloud, parseTaskFile, runAgentCommand, writeRunArtifactsCore, toTwinHttpEvent, redactJsonl, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, evaluationCounts } from './chunk-ANKO3RCB.js';
|
|
3
|
+
import { MOUNTED_TWINS, HostedAuthError, HostedDiscardRefusedError, HostedQuotaError, HostedOrchError, HostedTrialError, agentResponseSchema } from './chunk-BZO3YCJS.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';
|
|
@@ -1118,7 +1118,7 @@ async function runTaskHosted(options) {
|
|
|
1118
1118
|
// back. For events.jsonl the conventional `team-<>/session-<>/events.jsonl`
|
|
1119
1119
|
// path matches what /result-upload-url signs, so omitting traceStorageKey
|
|
1120
1120
|
// still resolves correctly. For state blobs there is no conventional
|
|
1121
|
-
// fallback today
|
|
1121
|
+
// fallback today — omitting them means cloud's judge sees
|
|
1122
1122
|
// "{}", which we accept as best-effort degradation.
|
|
1123
1123
|
traceStorageKey: eventsJsonlUrl ?? void 0,
|
|
1124
1124
|
stateInitialStorageKey: stateKeys.initialKey ?? void 0,
|
|
@@ -18,7 +18,7 @@ var recorderEventObjectSchema = z.object({
|
|
|
18
18
|
// the correlator (dynamic grouping: "this event landed in Step stp_xyz").
|
|
19
19
|
// 90% of events use only one; both can coexist.
|
|
20
20
|
//
|
|
21
|
-
//
|
|
21
|
+
// Task vocab: `task_step_id` is canonical; `scenario_step_id` is
|
|
22
22
|
// the 0.3.0-era spelling. BOTH stay in the schema for the tolerant-reader
|
|
23
23
|
// window — this row shape is the frozen v1 trace format and its emitters
|
|
24
24
|
// (twin runtimes, shipped CLIs on vendored 0.3.0) still write the old key.
|
|
@@ -34,7 +34,7 @@ var recorderEventObjectSchema = z.object({
|
|
|
34
34
|
method: z.string().min(1),
|
|
35
35
|
path: z.string(),
|
|
36
36
|
request_body: z.unknown(),
|
|
37
|
-
//
|
|
37
|
+
// The request headers as received, keys lowercased by the runtime.
|
|
38
38
|
//
|
|
39
39
|
// Recorded WHOLESALE rather than through an allowlist. An allowlist is a
|
|
40
40
|
// narrowing no downstream consumer can lift and no task author can extend,
|
|
@@ -46,14 +46,14 @@ var recorderEventObjectSchema = z.object({
|
|
|
46
46
|
// by key. Asserted both ways in `packages/sdk/test/redaction.test.ts`: the
|
|
47
47
|
// bearer must not survive, and `x-payment` must.
|
|
48
48
|
//
|
|
49
|
-
// Optional, not nullable: ABSENT means this row predates
|
|
49
|
+
// Optional, not nullable: ABSENT means this row predates the field, and a
|
|
50
50
|
// present-but-empty map would erase that distinction. A required field here
|
|
51
51
|
// would be far worse than a missing one — `twinHttpEventSchema` is the only
|
|
52
52
|
// gate into the cloud's tape and a row that fails it is dropped SILENTLY, so
|
|
53
53
|
// every recording an older CLI wrote would arrive as an empty tape, which for
|
|
54
54
|
// a negative criterion is a free pass.
|
|
55
55
|
request_headers: z.record(z.string(), z.string()).optional(),
|
|
56
|
-
//
|
|
56
|
+
// The twin ACTION this call invoked, when the twin declares one for
|
|
57
57
|
// the surface that served it. This is the field that stops a tape check from
|
|
58
58
|
// reverse-engineering a tool name out of an MCP transport path.
|
|
59
59
|
//
|
|
@@ -335,7 +335,7 @@ var otelSpanEventObjectSchema = z.object({
|
|
|
335
335
|
// ── shared event-union base (mirrors `eventBaseShape` in recorder-events.ts) ─
|
|
336
336
|
ts: z.string().datetime(),
|
|
337
337
|
event_id: canonicalSpanIdSchema,
|
|
338
|
-
//
|
|
338
|
+
// `parent_event_id` replaces `parent_id`. For THIS kind the field is
|
|
339
339
|
// fully redundant with `parent_span_id` (the invariant below pins them
|
|
340
340
|
// equal), so the tolerant read needs no `parent_id` lookup at all: a row
|
|
341
341
|
// written under either spelling normalizes to the same value, derived from
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { criterionSchema, finalizeResponseSchema, HostedDiscardRefusedError, HostedOrchError, HostedAuthError, HostedQuotaError, submitResultResponseSchema, createEvalSessionResponseSchema, createSessionResponseSchema, sessionPublicSchema } from './chunk-
|
|
2
|
-
import { seedSchema, parseSeed, defaultSeedState as defaultSeedState$2 } from './chunk-
|
|
1
|
+
import { criterionSchema, finalizeResponseSchema, HostedDiscardRefusedError, HostedOrchError, HostedAuthError, HostedQuotaError, submitResultResponseSchema, createEvalSessionResponseSchema, createSessionResponseSchema, sessionPublicSchema } from './chunk-BZO3YCJS.js';
|
|
2
|
+
import { seedSchema, parseSeed, defaultSeedState as defaultSeedState$2 } from './chunk-QXQAVKTE.js';
|
|
3
3
|
import { gmailSeedSchema, defaultSeedState } from './chunk-NJ246QPJ.js';
|
|
4
4
|
import { linearSeedSchema, defaultSeedState as defaultSeedState$1 } from './chunk-IZIZC7ZW.js';
|
|
5
|
-
import { isTwinName, TWIN_REGISTRY } from './chunk-
|
|
6
|
-
import { toTwinHttpEventRow } from './chunk-
|
|
5
|
+
import { isTwinName, TWIN_REGISTRY } from './chunk-EIUCTFQV.js';
|
|
6
|
+
import { toTwinHttpEventRow } from './chunk-CFXEETE3.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';
|
|
@@ -191,7 +191,7 @@ var slackSeedStateSchema = z.object({
|
|
|
191
191
|
team: z.record(z.string(), z.unknown()).optional(),
|
|
192
192
|
users: z.array(z.record(z.string(), z.unknown())).default([]),
|
|
193
193
|
channels: z.array(z.record(z.string(), z.unknown())).default([]),
|
|
194
|
-
//
|
|
194
|
+
// Permissive like its siblings — the vendored `parseSeed` does the
|
|
195
195
|
// regex-level validation. It has to be listed at all because `.strict()`
|
|
196
196
|
// REJECTS an unlisted key: without this line a slack seed declaring `files`
|
|
197
197
|
// fails to parse rather than being stripped.
|
|
@@ -1177,7 +1177,7 @@ function createHostedClient(config) {
|
|
|
1177
1177
|
{
|
|
1178
1178
|
method: "DELETE",
|
|
1179
1179
|
// authHeaders, not a hardcoded x-api-key: demo teardown carries a
|
|
1180
|
-
// bearer demo_token (
|
|
1180
|
+
// bearer demo_token (a live-run finding — the hardcoded
|
|
1181
1181
|
// header made every demo DELETE an opaque 404, silently swallowed
|
|
1182
1182
|
// by best-effort).
|
|
1183
1183
|
headers: authHeaders,
|
|
@@ -1596,7 +1596,7 @@ var SAFE_PARENT_ENV = /* @__PURE__ */ new Set([
|
|
|
1596
1596
|
var DEFAULT_AGENT_ENV_ALLOWLIST = /* @__PURE__ */ new Set([
|
|
1597
1597
|
"AI_GATEWAY_API_KEY",
|
|
1598
1598
|
"ANTHROPIC_API_KEY",
|
|
1599
|
-
//
|
|
1599
|
+
// Claude subscription auth (`claude setup-token`). Without
|
|
1600
1600
|
// this the Claude Agent SDK inside the agent subprocess only sees an API
|
|
1601
1601
|
// key, and subscription-only users fail auth under `pome run` while the
|
|
1602
1602
|
// same agent works when launched by hand.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { twinIdSchema } from './chunk-
|
|
1
|
+
import { twinIdSchema } from './chunk-6KJC4BTO.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
var SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
@@ -138,7 +138,7 @@ var runObjectSchema = z.object({
|
|
|
138
138
|
// CLI-computed (BYOK Flavor #1)
|
|
139
139
|
criteria_results: z.array(criterionResultSchema),
|
|
140
140
|
trace_s3_key: z.string().nullable(),
|
|
141
|
-
// s3 key for events.jsonl (hosted only
|
|
141
|
+
// s3 key for events.jsonl (hosted only)
|
|
142
142
|
state_s3_key: z.string().nullable(),
|
|
143
143
|
// s3 key for state_final.json
|
|
144
144
|
meta_s3_key: z.string().nullable(),
|
|
@@ -149,7 +149,7 @@ var runObjectSchema = z.object({
|
|
|
149
149
|
// which model judged [model] criteria (free-form)
|
|
150
150
|
judge_tokens_in: z.number().int().min(0).nullable(),
|
|
151
151
|
judge_tokens_out: z.number().int().min(0).nullable(),
|
|
152
|
-
// ──
|
|
152
|
+
// ── Reconciled from pome-cloud /v1 wire truth (all additive with
|
|
153
153
|
// defaults so pre-existing Run constructors stay valid) ────────────────────
|
|
154
154
|
// Sim deep-telemetry — per-run agent telemetry rollup, computed at finalize
|
|
155
155
|
// from the agent's independently-correlated `gen_ai` span tree. Null = no
|
|
@@ -163,12 +163,12 @@ var runObjectSchema = z.object({
|
|
|
163
163
|
agent_telemetry_span_count: z.number().int().min(0).nullable().default(null),
|
|
164
164
|
// Which server-side correlator produced lanes/steps.
|
|
165
165
|
correlator_kind: correlatorKindSchema.default("heuristic"),
|
|
166
|
-
// M0.2
|
|
166
|
+
// M0.2 — which surface this run belongs to. 'simulation' =
|
|
167
167
|
// CLI/staging scenario run (default for every legacy row); 'production' = an
|
|
168
168
|
// ingested OTLP production trace (M2).
|
|
169
169
|
environment: z.enum(["production", "simulation"]).default("simulation"),
|
|
170
|
-
// M0.5
|
|
171
|
-
//
|
|
170
|
+
// M0.5 — replay loop linkage (prod-run → task → replay-run).
|
|
171
|
+
// Canonical key; 0.3.0 alias: promoted_scenario_id.
|
|
172
172
|
promoted_task_id: z.string().nullable().default(null),
|
|
173
173
|
replay_run_id: z.string().nullable().default(null),
|
|
174
174
|
// Storage key for the tar-and-upload state archive the replay engine seeds a
|
|
@@ -184,7 +184,7 @@ var runObjectSchema = z.object({
|
|
|
184
184
|
// LLM endpoint failure, or legacy pre-M4-1 runs.
|
|
185
185
|
fix_prompt: z.string().nullable().default(null),
|
|
186
186
|
// Storage KEY (path) of the raw events.jsonl blob — NOT a URL (dashboard mints
|
|
187
|
-
// a signed GET URL on read).
|
|
187
|
+
// a signed GET URL on read). Relaxed from `.url()` to match the
|
|
188
188
|
// pome-cloud shape, since persisted storage keys are not URLs. Null in
|
|
189
189
|
// self-host mode, on upload failure, --no-upload opt-out, or legacy runs.
|
|
190
190
|
events_jsonl_url: z.string().nullable().default(null),
|
|
@@ -415,7 +415,7 @@ var slackSeedStateSchema = z.object({
|
|
|
415
415
|
).default([])
|
|
416
416
|
})
|
|
417
417
|
).default([]),
|
|
418
|
-
//
|
|
418
|
+
// Same shape as `seedSchema.files` in `@pome-sh/twin-slack`. `user` and
|
|
419
419
|
// `channels` are seed HANDLES (a user/channel `name`) or ids.
|
|
420
420
|
files: z.array(
|
|
421
421
|
z.object({
|
|
@@ -708,7 +708,7 @@ var taskClassSchema = z.enum(["conformance", "restraint", "adversarial"]);
|
|
|
708
708
|
var taskConfigSchema = z.object({
|
|
709
709
|
twins: z.array(z.string()).default(["github"]),
|
|
710
710
|
class: taskClassSchema.optional(),
|
|
711
|
-
//
|
|
711
|
+
// conformance vs the exam half
|
|
712
712
|
timeout: z.number().int().positive().default(60),
|
|
713
713
|
// seconds
|
|
714
714
|
runs: z.number().int().positive().default(1),
|
|
@@ -766,7 +766,7 @@ var createSessionRequestObjectSchema = z.object({
|
|
|
766
766
|
// base64-encoded UTF-8 markdown; 0.3.0 alias: scenario_source
|
|
767
767
|
task_id: z.string().optional(),
|
|
768
768
|
// alternative: stored task; 0.3.0 alias: scenario_id
|
|
769
|
-
//
|
|
769
|
+
// ADR-015 (adopted from pome-cloud): the seed override
|
|
770
770
|
// is a PERMISSIVE, shape-blind boundary. The twin pod's own `parseSeed` is
|
|
771
771
|
// the sole authority on the seed's domain shape; the cloud forwards it
|
|
772
772
|
// verbatim. `z.record` keeps the one invariant that is the boundary's
|
|
@@ -780,14 +780,14 @@ var createSessionRequestObjectSchema = z.object({
|
|
|
780
780
|
// POST /v1/sessions. The dashboard generates one per Start-button click;
|
|
781
781
|
// legacy clients work without it.
|
|
782
782
|
idempotency_key: z.string().uuid().optional(),
|
|
783
|
-
//
|
|
783
|
+
// Client-minted trial-group identity — `pome run -n k`
|
|
784
784
|
// (and `pome demo`) stamp one id per invocation, shared by all k trial
|
|
785
785
|
// sessions. The cloud copies it onto sessions.group_id at mint and onto
|
|
786
786
|
// runs.group_id at finalize; the demo/eval mints already accept the same
|
|
787
787
|
// field. Format mirrors the cloud's GROUP_ID_RE. Legacy clients omit it.
|
|
788
788
|
group_id: z.string().regex(/^[A-Za-z0-9_-]{6,64}$/).optional(),
|
|
789
|
-
//
|
|
790
|
-
// an opaque user-declared label stamped onto the session/run rows
|
|
789
|
+
// Per the manifest format spec: per-run override of the manifest's agent.version —
|
|
790
|
+
// an opaque user-declared label stamped onto the session/run rows.
|
|
791
791
|
// Absent = the agent's registered version. Additive; older clients omit it
|
|
792
792
|
// and an older cloud strips it.
|
|
793
793
|
agent_version: z.string().optional()
|
|
@@ -897,9 +897,9 @@ var submitResultRequestObjectSchema = z.object({
|
|
|
897
897
|
lanes: z.array(laneSchema).default([]),
|
|
898
898
|
steps: z.array(stepSchema).default([]),
|
|
899
899
|
fix_prompt: z.string().nullable().default(null),
|
|
900
|
-
//
|
|
900
|
+
// Adopted from pome-cloud: storage key (NOT URL) returned
|
|
901
901
|
// by POST /v1/sessions/:id/result-upload-url. Null on upload failure
|
|
902
|
-
// (best-effort), --no-upload opt-out, or
|
|
902
|
+
// (best-effort), --no-upload opt-out, or a CLI that predates the key.
|
|
903
903
|
events_jsonl_url: z.string().nullable().default(null),
|
|
904
904
|
// Trace blobs — safe to upload (HTTP between agent and twin, not LLM prompts):
|
|
905
905
|
trace_jsonl_b64: z.string(),
|
|
@@ -924,7 +924,7 @@ var createEvalSessionResponseSchema = z.object({
|
|
|
924
924
|
var criterionDefSchema = z.object({
|
|
925
925
|
id: z.string().min(1),
|
|
926
926
|
text: z.string().min(1),
|
|
927
|
-
// Tolerant reader
|
|
927
|
+
// Tolerant reader: released CLIs still send the legacy "D"/"P"
|
|
928
928
|
// spellings; parsed output is always the canonical "code"/"model". Single
|
|
929
929
|
// source of truth for the rename is LEGACY_CRITERION_KIND_MAP.
|
|
930
930
|
kind: z.enum(["D", "P", "code", "model"]).transform(
|
|
@@ -934,7 +934,7 @@ var criterionDefSchema = z.object({
|
|
|
934
934
|
// attributes to. Absent = the session's primary twin (twins[0]). Additive —
|
|
935
935
|
// single-twin tasks omit it and score against the sole twin as before.
|
|
936
936
|
twin: z.string().min(1).optional(),
|
|
937
|
-
//
|
|
937
|
+
// Forwards the markdown `always-scored`
|
|
938
938
|
// keyword so the cloud's seed-exclusion rule
|
|
939
939
|
// (docs/grading/seed-exclusion.md, pome-cloud) knows this [code] criterion
|
|
940
940
|
// must be graded even when the seed already satisfies it. snake_case to
|
|
@@ -948,7 +948,7 @@ var criterionDefSchema = z.object({
|
|
|
948
948
|
});
|
|
949
949
|
z.object({
|
|
950
950
|
name: z.string().min(1),
|
|
951
|
-
// Manifest identity (
|
|
951
|
+
// Manifest identity (per the format spec): human-ish slug input — the server
|
|
952
952
|
// derives the canonical kebab slug with the same deriveAgentSlug exported
|
|
953
953
|
// from `./manifest.js`, then validates it against SLUG_RE. Cap mirrors the
|
|
954
954
|
// control-plane edge; shape is deliberately NOT enforced here.
|
|
@@ -957,7 +957,7 @@ z.object({
|
|
|
957
957
|
// User-declared version label from the manifest's agent.version — an opaque
|
|
958
958
|
// string, never auto-bumped, never semver-interpreted.
|
|
959
959
|
version: z.string().optional(),
|
|
960
|
-
// Open enum by design
|
|
960
|
+
// Open enum by design: unknown frameworks get a did-you-mean warning
|
|
961
961
|
// server-side, never a validation error.
|
|
962
962
|
framework: z.string().min(1).optional(),
|
|
963
963
|
// Multi-twin (M3): the twins this agent is allowed to exercise. Absent = the
|
|
@@ -971,18 +971,18 @@ var agentResponseSchema = z.object({
|
|
|
971
971
|
slug: z.string(),
|
|
972
972
|
display_name: z.string(),
|
|
973
973
|
judge_model: z.string(),
|
|
974
|
-
// Manifest identity
|
|
975
|
-
// agent.version, nullable where the server has nothing stored (
|
|
976
|
-
//
|
|
974
|
+
// Manifest identity: registered agent.framework / agent.description /
|
|
975
|
+
// agent.version, nullable where the server has nothing stored (unset,
|
|
976
|
+
// never a guessed default). Optional for a cloud that predates the resolver, which
|
|
977
977
|
// omits them.
|
|
978
978
|
framework: z.string().nullable().optional(),
|
|
979
979
|
description: z.string().nullable().optional(),
|
|
980
980
|
version: z.string().nullable().optional(),
|
|
981
|
-
//
|
|
981
|
+
// Resolver semantics: true when POST /v1/agents auto-registered a new
|
|
982
982
|
// agent for this slug, false when it resolved an existing one. Optional for
|
|
983
|
-
// the
|
|
983
|
+
// a cloud that predates the resolver; absence means "unknown", not "resolved".
|
|
984
984
|
created: z.boolean().optional(),
|
|
985
|
-
//
|
|
985
|
+
// Slug-rename hint (cloud-emitted since v0.4.18): how the resolver
|
|
986
986
|
// matched this slug. Known values today are "slug" (live match), "alias" (an
|
|
987
987
|
// old slug that was renamed; the returned `slug` is the new canonical), and
|
|
988
988
|
// "created" (fresh auto-register) — the CLI surfaces a rename notice only on
|
|
@@ -1168,7 +1168,7 @@ var HostedAuthError = class extends Error {
|
|
|
1168
1168
|
};
|
|
1169
1169
|
var HostedQuotaError = class extends Error {
|
|
1170
1170
|
/** `details` mirrors the cloud error envelope's machine-readable details
|
|
1171
|
-
* (e.g. `{ kind: "daily_judge_cap" }`) so `pome demo`
|
|
1171
|
+
* (e.g. `{ kind: "daily_judge_cap" }`) so `pome demo` can
|
|
1172
1172
|
* render honest labeled at-capacity states. Optional: older responses and
|
|
1173
1173
|
* the twin-pod 401 shape carry none. */
|
|
1174
1174
|
constructor(message, requestId, details) {
|
|
@@ -1183,7 +1183,7 @@ var HostedQuotaError = class extends Error {
|
|
|
1183
1183
|
var HostedOrchError = class extends Error {
|
|
1184
1184
|
/** `status` is the HTTP status that produced this error, when one exists
|
|
1185
1185
|
* (network/parse failures leave it undefined). `pome eval` uses it to
|
|
1186
|
-
* scope its reaped-session retry to 404/410 only
|
|
1186
|
+
* scope its reaped-session retry to 404/410 only. */
|
|
1187
1187
|
constructor(message, requestId, status, type) {
|
|
1188
1188
|
super(message);
|
|
1189
1189
|
this.requestId = requestId;
|
|
@@ -970,13 +970,13 @@ function buildEventCore(c, deps, fields) {
|
|
|
970
970
|
task_step_id: stepId,
|
|
971
971
|
scenario_step_id: stepId,
|
|
972
972
|
step_id: null,
|
|
973
|
-
//
|
|
973
|
+
// adapter-rich path — per-twin pin, see recorder.ts.
|
|
974
974
|
tool_call_id: deps.definition.stampToolCallId ? correlationHeader : null,
|
|
975
975
|
method: c.req.method,
|
|
976
976
|
path: new URL(c.req.url).pathname,
|
|
977
977
|
request_body: fields.requestBody,
|
|
978
978
|
request_headers: recordedRequestHeaders(c),
|
|
979
|
-
//
|
|
979
|
+
// The whole reason the field exists. This surface is where the
|
|
980
980
|
// tool name used to be reachable only by digging it out of `request_body`
|
|
981
981
|
// on a `/mcp` path; a check that had to do that was reverse-engineering
|
|
982
982
|
// transport, and getting it wrong false-passes a negative criterion.
|
|
@@ -1176,7 +1176,7 @@ function createRecorderHandle(options) {
|
|
|
1176
1176
|
task_step_id: stepId,
|
|
1177
1177
|
scenario_step_id: stepId,
|
|
1178
1178
|
step_id: null,
|
|
1179
|
-
//
|
|
1179
|
+
// adapter-rich path: only twins that pin `stampToolCallId`
|
|
1180
1180
|
// persist the header here (github); the default tape stamps null.
|
|
1181
1181
|
tool_call_id: options.stampToolCallId ? correlationHeader : null,
|
|
1182
1182
|
method: c.req.method,
|
|
@@ -1478,7 +1478,7 @@ function failureInjectionMiddleware(store, options) {
|
|
|
1478
1478
|
method,
|
|
1479
1479
|
path: rawPath,
|
|
1480
1480
|
request_body: requestBody,
|
|
1481
|
-
//
|
|
1481
|
+
// Same capture policy as the engine's emit(); an injected
|
|
1482
1482
|
// fault must not be the one row a header-reading check cannot see.
|
|
1483
1483
|
request_headers: recordedRequestHeaders(c),
|
|
1484
1484
|
// Injection is transport-level: it intercepts a (method, path) tuple,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HostedOrchError, manifestSchema, deriveAgentSlug, SLUG_RE } from './chunk-
|
|
1
|
+
import { HostedOrchError, manifestSchema, deriveAgentSlug, SLUG_RE } from './chunk-BZO3YCJS.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';
|
|
@@ -39,7 +39,7 @@ var TWIN_REGISTRY = {
|
|
|
39
39
|
defaultSeedState,
|
|
40
40
|
GitHubDomain,
|
|
41
41
|
openGitHubCloneDatabase
|
|
42
|
-
} = await import('./src-
|
|
42
|
+
} = await import('./src-JJNS46T6.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-L6F5YXSP.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-L6F5YXSP.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-FXRQSKBK.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-FXRQSKBK.js');
|
|
90
|
+
const { createApp } = await import('./server-TK5YBK6E.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-GWA7QVQS.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-GWA7QVQS.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-Q4JNJE5S.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-Q4JNJE5S.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-JJNS46T6.js');
|
|
177
177
|
return createGitHubCloneApp();
|
|
178
178
|
}
|
|
179
179
|
function defaultPortFor(twin, env = process.env) {
|
|
@@ -1,8 +1,8 @@
|
|
|
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-
|
|
5
|
-
import { eventSchema } from './chunk-
|
|
3
|
+
import { parseTaskFile, seedStateForTwin, runAgentCommand, writeRunArtifactsCore } from './chunk-ANKO3RCB.js';
|
|
4
|
+
import { createRecorder, bootTwin } from './chunk-KIXYRPVY.js';
|
|
5
|
+
import { eventSchema } from './chunk-6KJC4BTO.js';
|
|
6
6
|
import { redactSecrets, redactEvent } from './chunk-SG6ZTIMT.js';
|
|
7
7
|
import { serve } from '@hono/node-server';
|
|
8
8
|
import { randomUUID, randomBytes } from 'node:crypto';
|
|
@@ -320,7 +320,7 @@ async function runTask(options) {
|
|
|
320
320
|
authSecret
|
|
321
321
|
);
|
|
322
322
|
const proxyEnv = captureServer ? {
|
|
323
|
-
//
|
|
323
|
+
// Agent's outbound traffic flows through the capture-server.
|
|
324
324
|
// Twin traffic is localhost, NO_PROXY excludes it so it stays a
|
|
325
325
|
// TwinHttpEvent (recorded in-process) and isn't double-counted as a
|
|
326
326
|
// proxy-captured LlmCallEvent.
|
|
@@ -132,7 +132,7 @@ function declareRouteInputs(spec) {
|
|
|
132
132
|
function routeInputDeclarer(undeclared) {
|
|
133
133
|
return (spec) => {
|
|
134
134
|
if (spec.undeclared !== void 0) {
|
|
135
|
-
throw new Error(`route-inputs: ${spec.method} ${spec.path} sets undeclared: '${spec.undeclared}' on its own spec, but its twin already rules '${undeclared}' for every route \u2014 the disposition is one ruling per twin
|
|
135
|
+
throw new Error(`route-inputs: ${spec.method} ${spec.path} sets undeclared: '${spec.undeclared}' on its own spec, but its twin already rules '${undeclared}' for every route \u2014 the disposition is one ruling per twin`);
|
|
136
136
|
}
|
|
137
137
|
return declareRouteInputs({ ...spec, undeclared });
|
|
138
138
|
};
|
|
@@ -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-EIUCTFQV.js';
|
|
2
|
+
import { createFileBackedRecorderStore, createRecorderStore } from './chunk-CFXEETE3.js';
|
|
3
3
|
|
|
4
4
|
// src/recorder/recorder.ts
|
|
5
5
|
function createRecorder(options = {}) {
|
|
@@ -19,7 +19,7 @@ var seedSchema = z.object({
|
|
|
19
19
|
color: z.string().default("ededed"),
|
|
20
20
|
description: z.string().default("")
|
|
21
21
|
})).default([]),
|
|
22
|
-
//
|
|
22
|
+
// `renamed_from` is how a seed expresses a MOVE, and with it the
|
|
23
23
|
// `status: "renamed"` the row type has always declared and no world could
|
|
24
24
|
// reach. A seeded branch is created from the default branch and inherits
|
|
25
25
|
// every path, and a plain `files[]` entry can only add or overwrite, so
|
|
@@ -65,7 +65,7 @@ var seedSchema = z.object({
|
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
67
|
})).default([]),
|
|
68
|
-
//
|
|
68
|
+
// Milestones, tags and releases are repository-level entities the
|
|
69
69
|
// twin already SERVES (`GET /milestones`, `/tags`, `/releases`,
|
|
70
70
|
// `/releases/latest`, `/releases/tags/:tag`) and the seed could not
|
|
71
71
|
// express. Zod strips unknown keys, so a seed naming one reached the
|
|
@@ -111,7 +111,7 @@ var seedSchema = z.object({
|
|
|
111
111
|
labels: z.array(z.string().min(1)).default([]),
|
|
112
112
|
assignees: z.array(z.string().min(1)).default([]),
|
|
113
113
|
// The issue's conversation timeline, served at
|
|
114
|
-
// `GET /repos/:o/:r/issues/:n/comments
|
|
114
|
+
// `GET /repos/:o/:r/issues/:n/comments`. `author` is
|
|
115
115
|
// seeded honestly rather than taken from the write path, which
|
|
116
116
|
// stamps every comment `pome-agent`: a world in which the agent
|
|
117
117
|
// under test wrote every comment on the issue it is being asked to
|
|
@@ -144,9 +144,9 @@ var seedSchema = z.object({
|
|
|
144
144
|
state: z.enum(["error", "failure", "pending", "success"]).default("success"),
|
|
145
145
|
description: z.string().default("")
|
|
146
146
|
})).default([]),
|
|
147
|
-
//
|
|
147
|
+
// The PR's CONVERSATION timeline. Same table, same route
|
|
148
148
|
// and same number space as an issue's comments, because GitHub
|
|
149
|
-
// models a pull request as an issue
|
|
149
|
+
// models a pull request as an issue. This is the third
|
|
150
150
|
// thing a reader could call "a comment on the PR" and the seed
|
|
151
151
|
// keeps all three apart: `reviews[].body` is the prose on a review
|
|
152
152
|
// verdict, `review_comments[]` below is anchored to a file and
|
|
@@ -155,7 +155,7 @@ var seedSchema = z.object({
|
|
|
155
155
|
body: z.string().min(1),
|
|
156
156
|
author: z.string().min(1).optional()
|
|
157
157
|
})).default([]),
|
|
158
|
-
//
|
|
158
|
+
// Inline review comments, served at
|
|
159
159
|
// `GET /repos/:o/:r/pulls/:n/comments`. Seeded through the domain's
|
|
160
160
|
// own write path, so `path` must name a file the PR changes and
|
|
161
161
|
// `line` must exist in it: a seeded review comment is one
|
|
@@ -1,18 +1,18 @@
|
|
|
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-FQGR7KDT.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-ANKO3RCB.js';
|
|
7
7
|
import './chunk-NW7HGA2K.js';
|
|
8
|
-
import { HostedQuotaError, HostedOrchError } from './chunk-
|
|
9
|
-
import './chunk-
|
|
8
|
+
import { HostedQuotaError, HostedOrchError } from './chunk-BZO3YCJS.js';
|
|
9
|
+
import './chunk-QXQAVKTE.js';
|
|
10
10
|
import './chunk-NJ246QPJ.js';
|
|
11
11
|
import './chunk-IZIZC7ZW.js';
|
|
12
|
-
import { bootTwin } from './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
12
|
+
import { bootTwin } from './chunk-KIXYRPVY.js';
|
|
13
|
+
import './chunk-EIUCTFQV.js';
|
|
14
|
+
import './chunk-CFXEETE3.js';
|
|
15
|
+
import './chunk-6KJC4BTO.js';
|
|
16
16
|
import './chunk-SG6ZTIMT.js';
|
|
17
17
|
import { readFile } from 'node:fs/promises';
|
|
18
18
|
import { join } from 'node:path';
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { newGroupId, criterionPhrase } from './chunk-RGZBC7NF.js';
|
|
2
|
-
import { runTaskHosted, resolveRunAgentIdentity } from './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-
|
|
2
|
+
import { runTaskHosted, resolveRunAgentIdentity } from './chunk-6IVXTU67.js';
|
|
3
|
+
import './chunk-CXGMLUZ4.js';
|
|
4
|
+
import { createHostedClient, parseTaskFile, outcomeOf } from './chunk-ANKO3RCB.js';
|
|
5
5
|
import './chunk-NW7HGA2K.js';
|
|
6
|
-
import { HostedQuotaError, HostedTrialError } from './chunk-
|
|
7
|
-
import './chunk-
|
|
6
|
+
import { HostedQuotaError, HostedTrialError } from './chunk-BZO3YCJS.js';
|
|
7
|
+
import './chunk-QXQAVKTE.js';
|
|
8
8
|
import './chunk-NJ246QPJ.js';
|
|
9
9
|
import './chunk-IZIZC7ZW.js';
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
10
|
+
import './chunk-EIUCTFQV.js';
|
|
11
|
+
import './chunk-CFXEETE3.js';
|
|
12
|
+
import './chunk-6KJC4BTO.js';
|
|
13
13
|
import './chunk-SG6ZTIMT.js';
|
|
14
14
|
import { randomUUID } from 'node:crypto';
|
|
15
15
|
import { readFile } from 'node:fs/promises';
|
|
@@ -155,7 +155,7 @@ async function runTrialGroup(options) {
|
|
|
155
155
|
}
|
|
156
156
|
} catch (err) {
|
|
157
157
|
await Promise.all(
|
|
158
|
-
//
|
|
158
|
+
// These sessions were minted and never launched, so there is no
|
|
159
159
|
// tape to lose — an explicit discard is honest here.
|
|
160
160
|
sessions.map(
|
|
161
161
|
(s) => client.deleteSession(s.session_id, true, { discard: true }).catch(
|
|
@@ -206,7 +206,7 @@ async function runTrialGroup(options) {
|
|
|
206
206
|
agentModel: options.agentModel,
|
|
207
207
|
premintedSession: session,
|
|
208
208
|
abandonOnFailure: true,
|
|
209
|
-
//
|
|
209
|
+
// Stamped into the trial's verdict.json so fix-prompt
|
|
210
210
|
// can reassemble this run set from local artifacts.
|
|
211
211
|
groupId
|
|
212
212
|
});
|
|
@@ -217,7 +217,7 @@ async function runTrialGroup(options) {
|
|
|
217
217
|
row = {
|
|
218
218
|
kind: "completed",
|
|
219
219
|
score: result.score.satisfaction,
|
|
220
|
-
//
|
|
220
|
+
// The trial's own verdict, carried out of the run rather than
|
|
221
221
|
// re-derived here. It was `result.exitCode === 0`, which cannot express
|
|
222
222
|
// the third state (1 means both "failed" and "could not be graded"), so
|
|
223
223
|
// a 100/100 trial with 3 of 4 criteria skipped counted as a clean pass.
|
|
@@ -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-
|
|
2
|
-
import './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-CFXEETE3.js';
|
|
2
|
+
import './chunk-6KJC4BTO.js';
|
|
3
3
|
export { redactEvent, redactSecrets } from './chunk-SG6ZTIMT.js';
|