@kitman-sh/cli 0.10.70 → 0.10.71

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.
@@ -37,10 +37,10 @@ import {
37
37
  AgentHarnessIds,
38
38
  sha2562,
39
39
  runCommand2
40
- } from "./chunk-x7g0rzqj.js";
40
+ } from "./chunk-9e452fhe.js";
41
41
  import {
42
42
  NpmRegistry
43
- } from "./chunk-pq9bkyj6.js";
43
+ } from "./chunk-hr9vd6dj.js";
44
44
 
45
45
  // packages/agent-runtime/src/config-convergence.ts
46
46
  var writeAgentEnvironmentConfigFile2 = fnUntraced(function* (file, content, keep = {}) {
@@ -19,13 +19,13 @@ import {
19
19
  RunnerReplicaRpcs,
20
20
  RunnerRunFileRpcs,
21
21
  ProgramRpcs
22
- } from "./chunk-x7g0rzqj.js";
22
+ } from "./chunk-9e452fhe.js";
23
23
  import {
24
24
  layerJson,
25
25
  make4,
26
26
  withHeaders,
27
27
  layerProtocolSocket
28
- } from "./chunk-fgecj3t0.js";
28
+ } from "./chunk-cmatdpfy.js";
29
29
 
30
30
  // packages/live/src/rpc/runner-client.ts
31
31
  var proxiedWebSocket = (proxy) => succeed5(WebSocketConstructor)((target) => {
@@ -5942,6 +5942,8 @@ var RunEvidence = Struct({
5942
5942
  durationMs: Int.check(isGreaterThanOrEqualTo(0)),
5943
5943
  outputTail: String4,
5944
5944
  fileIds: optionalKey(ArraySchema(String4)),
5945
+ skippedSinceBaseline: optionalKey(ArraySchema(String4)),
5946
+ newNotRun: optionalKey(ArraySchema(String4)),
5945
5947
  recordedAt: Timestamp
5946
5948
  });
5947
5949
  var ApprovedVerification = Struct({
@@ -6493,6 +6495,74 @@ var NetworkHostQuery = Struct({
6493
6495
  repoBindingId: optionalKey(Id)
6494
6496
  });
6495
6497
 
6498
+ // packages/core/src/test-report.ts
6499
+ var isTestReportName = (name) => /junit.*\.xml$/iu.test(name);
6500
+ var maxSkippedTests = 1e4;
6501
+ var maxRanDigests = 1e5;
6502
+ var TestId = String4.check(isMinLength(1), isMaxLength(1000));
6503
+ var CheckTests = Struct({
6504
+ reports: Int.check(isGreaterThanOrEqualTo(0)),
6505
+ passed: Int.check(isGreaterThanOrEqualTo(0)),
6506
+ failed: Int.check(isGreaterThanOrEqualTo(0)),
6507
+ skipped: Int.check(isGreaterThanOrEqualTo(0)),
6508
+ skippedTests: ArraySchema(TestId).check(isMaxLength(maxSkippedTests)),
6509
+ ranDigests: ArraySchema(String4.check(isMaxLength(16))).check(isMaxLength(maxRanDigests))
6510
+ });
6511
+ var entities = new Map([
6512
+ ["amp", "&"],
6513
+ ["lt", "<"],
6514
+ ["gt", ">"],
6515
+ ["quot", '"'],
6516
+ ["apos", "'"]
6517
+ ]);
6518
+ var codePoint = (whole, value) => value <= 1114111 ? String.fromCodePoint(value) : whole;
6519
+ var decoded = (text) => text.replaceAll(/&(#x[\da-f]+|#\d+|\w+);/giu, (whole, entity) => {
6520
+ if (entity.startsWith("#x") || entity.startsWith("#X"))
6521
+ return codePoint(whole, Number.parseInt(entity.slice(2), 16));
6522
+ if (entity.startsWith("#"))
6523
+ return codePoint(whole, Number(entity.slice(1)));
6524
+ return entities.get(entity) ?? whole;
6525
+ });
6526
+ var attribute = (attributes, name) => {
6527
+ const found = new RegExp(`(?:^|\\s)${name}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`, "u").exec(attributes);
6528
+ return found === null ? undefined : decoded(found[1] ?? found[2] ?? "");
6529
+ };
6530
+ var junitTestCases = (xml) => [...xml.matchAll(/<testcase\b([^>]*?)(?:\/>|>([\s\S]*?)<\/testcase>)/gu)].map(([, attributes = "", body = ""]) => {
6531
+ const id = [attribute(attributes, "file"), attribute(attributes, "classname"), attribute(attributes, "name")].filter((part) => part !== undefined && part !== "").join(" > ");
6532
+ return {
6533
+ id: id.slice(0, 1000) || "(unnamed test)",
6534
+ status: /<(?:failure|error)\b/u.test(body) ? "failed" : /<skipped\b/u.test(body) ? "skipped" : "passed"
6535
+ };
6536
+ });
6537
+ var fnv1a = (text, seed) => {
6538
+ let hash = seed;
6539
+ for (let index = 0;index < text.length; index++) {
6540
+ hash ^= text.charCodeAt(index);
6541
+ hash = Math.imul(hash, 16777619) >>> 0;
6542
+ }
6543
+ return hash.toString(16).padStart(8, "0");
6544
+ };
6545
+ var testDigest = (id) => `${fnv1a(id, 2166136261)}${fnv1a(id, 84696351)}`;
6546
+ var checkTests = (reports) => {
6547
+ const rank = { passed: 0, skipped: 1, failed: 2 };
6548
+ const tests = new Map;
6549
+ for (const found of reports.flatMap(junitTestCases)) {
6550
+ const before = tests.get(found.id);
6551
+ if (before === undefined || rank[found.status] > rank[before])
6552
+ tests.set(found.id, found.status);
6553
+ }
6554
+ const of = (status) => [...tests].flatMap(([id, is]) => is === status ? [id] : []);
6555
+ const skipped = of("skipped").sort();
6556
+ return {
6557
+ reports: reports.length,
6558
+ passed: of("passed").length,
6559
+ failed: of("failed").length,
6560
+ skipped: skipped.length,
6561
+ skippedTests: skipped.slice(0, maxSkippedTests),
6562
+ ranDigests: [...of("passed"), ...of("failed")].map(testDigest).sort().slice(0, maxRanDigests)
6563
+ };
6564
+ };
6565
+
6496
6566
  // packages/core/src/work-unit.ts
6497
6567
  var WorkUnitLease = Struct({
6498
6568
  leaseOwnerId: Id,
@@ -6677,7 +6747,8 @@ var CheckEvidence = Struct({
6677
6747
  exitCode: optionalKey(Int),
6678
6748
  durationMs: Int.check(isGreaterThanOrEqualTo(0)),
6679
6749
  outputTail: String4.check(isMaxLength(8000)),
6680
- fileIds: optionalKey(ArraySchema(String4).check(isMaxLength(51)))
6750
+ fileIds: optionalKey(ArraySchema(String4).check(isMaxLength(51))),
6751
+ tests: optionalKey(CheckTests)
6681
6752
  });
6682
6753
  var TreeEvidence = Struct({
6683
6754
  revision: String4.check(isMinLength(1), isMaxLength(240)),
@@ -15480,4 +15551,4 @@ function checkServices(declaration) {
15480
15551
  return isSome(decoded) ? [...new Set(decoded.value.services)] : undefined;
15481
15552
  }
15482
15553
 
15483
- export { Clock, currentTimeMillis, WebCrypto, SecureRandom, layerWebCrypto, makeUnsafe, formatIso, empty, fromInput, merge, runMain, layer, layer2, Stdio, Terminal, layer3, error, log, toDate, parseDate, toIso, currentDate, wallClockMillis, waitingOnWords, queueWords, scanDurableSurface, redactResponseSurface, redactCredentials, redactedOutputTail, SafeJson, AgentHarnessIds, AgentSkillRequirement, AgentMcpServerRequirement, AgentEnvironmentFragment, findForbiddenAgentEnvironmentSecretPath, RepoBindingProviders, RepoBindingCredentialProviderTypes, findForbiddenRepoBindingSecretPath, AgentSandboxNetwork, runnerAgentSandboxPolicy, agentNetworkAllowlist, verificationNetworkAllowlist, programNetworkHosts, ContextPackModes, DefaultContextPackMode, ProposalStatuses, ProposalTargetTypes, canonicalJson, canonicalSha256, AgentEfforts, AgentCapabilities, LoopDataSchemaRef, RunDisplayStates, LoopVersion, ProgramLoop, AgentFallback, ProgramWorkUnit, MeasureSample, MeasureEvidence, catchUpPathLimit, CatchUp, RunnerOwnership, defaultRunnerCapabilities, MemoryStatuses, MemoryScopes, MaxMemoryListLimit, DecisionStatuses, Session, SessionEnd, SessionUpdate, SessionUpdateCreate, FixFlowRecoveryActions, KitmanAgentCapabilityNames, sha2562, isRunFileRefusalReason, runFileRefusalWords, RunFileRefused, runFileContentType, repositoryKey, createId, digestSha256, digestSha512, digestWith, sha256Hasher, AgentEvent, raw, make5, get, put, setHeaders, bodyUint8Array, schemaBodyJson, filterStatusOk, HttpClient, execute, get2, Fetch, layer4, Socket, SocketReadError, SocketError, WebSocketConstructor, layerWebSocketConstructorGlobal, layerWebSocket, runDisplayLabels, listedSummary, KitName, KitDigest, defaultKitName, KitSetup, SetupArchive, kitMcpSecretNames, kitmanMcpServer, KitmanClientError, KitmanEffectClient, CliError, DefaultApiUrl, resolveConfig, apiUrlFromEnv, stepCredentialFromEnv, stepWorkspaceFromEnv, stepSkillsDirFromEnv, stepFittingSkillsFromEnv, stepOutputOnlyFromEnv, mcpCredentialNameFromEnv, userConfigPath, userAuthPath, userHarnessSyncPath, kitSetupCacheDir, bundleCacheDir, localConfigPath, readUserConfig, writeUserConfig, sessionForApi, readAuthStore, storeSession, removeSession, removeAllSessions, agentCredentialForApi, storeAgentCredential, removeAgentCredential, normalizeApiUrl, isStoredAgentCredential, isStreamSchema, getStreamSchemas, make6, exitSchema, ParseOptions, RpcClientDefect, RpcClientError, make7, Service, RunnerHeaders, RunnerRpcProtocolVersion, RunnerRpcError, RunSettled, UpdateAvailable, RunnerReplicaRpcs, RunnerRunFileRpcs, ProgramRpcs, parseCallbackUrl, revokeToken, toStoredSession, browserLogin, openBrowser, shouldRefresh, createSdkClient, refreshSession, AgentAuthClientError, executeAgentCapability, createAgentAuthBearerToken, McpPlatformLive, runMcpEffect, createAgentAuthSignedFetch, setupMcpAgentCredential, generateAgentKeyPair, HERDR_CORE_GENERATION2, HERDR_CORE_INSTALL_COMMAND2, HerdrCoreMissing2, HerdrCoreIncompatible2, HerdrCoreConnectionLost2, HerdrCoreRpcError2, HerdrCoreUpdateFailed2, HerdrCore2, herdrCoreLayer2, herdrCoreTransportLayer2, updateHerdrCore2, CommandFailed2, runCommand2, withoutPreloads2, shellOutputTailChars2, runProcess2, CommandRunner2, runShell2, detectHarnesses2, kitHarnesses, isKitHarness, instructionsStart, instructionsEnd, harnessNames, renderMcpServer, materializeKitSetup, tomlInline, herdrExecutionExtension2, herdrNativeExtensionIds2, herdrRunnerCapabilitiesForRepoBinding2, herdrRunnerCapabilities2, assertHerdrRunnerCapability2, declaredChecks, installCommand, checkServicesFile, checkServices };
15554
+ export { Clock, currentTimeMillis, WebCrypto, SecureRandom, layerWebCrypto, makeUnsafe, formatIso, empty, fromInput, merge, runMain, layer, layer2, Stdio, Terminal, layer3, error, log, toDate, parseDate, toIso, currentDate, wallClockMillis, waitingOnWords, queueWords, scanDurableSurface, redactResponseSurface, redactCredentials, redactedOutputTail, SafeJson, AgentHarnessIds, AgentSkillRequirement, AgentMcpServerRequirement, AgentEnvironmentFragment, findForbiddenAgentEnvironmentSecretPath, RepoBindingProviders, RepoBindingCredentialProviderTypes, findForbiddenRepoBindingSecretPath, AgentSandboxNetwork, runnerAgentSandboxPolicy, agentNetworkAllowlist, verificationNetworkAllowlist, programNetworkHosts, ContextPackModes, DefaultContextPackMode, ProposalStatuses, ProposalTargetTypes, canonicalJson, canonicalSha256, AgentEfforts, AgentCapabilities, LoopDataSchemaRef, RunDisplayStates, LoopVersion, ProgramLoop, AgentFallback, isTestReportName, checkTests, ProgramWorkUnit, MeasureSample, MeasureEvidence, catchUpPathLimit, CatchUp, RunnerOwnership, defaultRunnerCapabilities, MemoryStatuses, MemoryScopes, MaxMemoryListLimit, DecisionStatuses, Session, SessionEnd, SessionUpdate, SessionUpdateCreate, FixFlowRecoveryActions, KitmanAgentCapabilityNames, sha2562, isRunFileRefusalReason, runFileRefusalWords, RunFileRefused, runFileContentType, repositoryKey, createId, digestSha256, digestSha512, digestWith, sha256Hasher, AgentEvent, raw, make5, get, put, setHeaders, bodyUint8Array, schemaBodyJson, filterStatusOk, HttpClient, execute, get2, Fetch, layer4, Socket, SocketReadError, SocketError, WebSocketConstructor, layerWebSocketConstructorGlobal, layerWebSocket, runDisplayLabels, listedSummary, KitName, KitDigest, defaultKitName, KitSetup, SetupArchive, kitMcpSecretNames, kitmanMcpServer, KitmanClientError, KitmanEffectClient, CliError, DefaultApiUrl, resolveConfig, apiUrlFromEnv, stepCredentialFromEnv, stepWorkspaceFromEnv, stepSkillsDirFromEnv, stepFittingSkillsFromEnv, stepOutputOnlyFromEnv, mcpCredentialNameFromEnv, userConfigPath, userAuthPath, userHarnessSyncPath, kitSetupCacheDir, bundleCacheDir, localConfigPath, readUserConfig, writeUserConfig, sessionForApi, readAuthStore, storeSession, removeSession, removeAllSessions, agentCredentialForApi, storeAgentCredential, removeAgentCredential, normalizeApiUrl, isStoredAgentCredential, isStreamSchema, getStreamSchemas, make6, exitSchema, ParseOptions, RpcClientDefect, RpcClientError, make7, Service, RunnerHeaders, RunnerRpcProtocolVersion, RunnerRpcError, RunSettled, UpdateAvailable, RunnerReplicaRpcs, RunnerRunFileRpcs, ProgramRpcs, parseCallbackUrl, revokeToken, toStoredSession, browserLogin, openBrowser, shouldRefresh, createSdkClient, refreshSession, AgentAuthClientError, executeAgentCapability, createAgentAuthBearerToken, McpPlatformLive, runMcpEffect, createAgentAuthSignedFetch, setupMcpAgentCredential, generateAgentKeyPair, HERDR_CORE_GENERATION2, HERDR_CORE_INSTALL_COMMAND2, HerdrCoreMissing2, HerdrCoreIncompatible2, HerdrCoreConnectionLost2, HerdrCoreRpcError2, HerdrCoreUpdateFailed2, HerdrCore2, herdrCoreLayer2, herdrCoreTransportLayer2, updateHerdrCore2, CommandFailed2, runCommand2, withoutPreloads2, shellOutputTailChars2, runProcess2, CommandRunner2, runShell2, detectHarnesses2, kitHarnesses, isKitHarness, instructionsStart, instructionsEnd, harnessNames, renderMcpServer, materializeKitSetup, tomlInline, herdrExecutionExtension2, herdrNativeExtensionIds2, herdrRunnerCapabilitiesForRepoBinding2, herdrRunnerCapabilities2, assertHerdrRunnerCapability2, declaredChecks, installCommand, checkServicesFile, checkServices };
@@ -123,7 +123,7 @@ import {
123
123
  ParseOptions,
124
124
  RpcClientDefect,
125
125
  RpcClientError
126
- } from "./chunk-x7g0rzqj.js";
126
+ } from "./chunk-9e452fhe.js";
127
127
 
128
128
  // node_modules/.bun/effect@4.1.2/node_modules/effect/dist/workers/Transferable.js
129
129
  class Collector extends (/* @__PURE__ */ Service2()("effect/workers/Transferable/Collector")) {
@@ -182,6 +182,8 @@ import {
182
182
  verificationNetworkAllowlist,
183
183
  programNetworkHosts,
184
184
  canonicalSha256,
185
+ isTestReportName,
186
+ checkTests,
185
187
  MeasureSample,
186
188
  catchUpPathLimit,
187
189
  createId,
@@ -225,7 +227,7 @@ import {
225
227
  installCommand,
226
228
  checkServicesFile,
227
229
  checkServices
228
- } from "./chunk-x7g0rzqj.js";
230
+ } from "./chunk-9e452fhe.js";
229
231
  import {
230
232
  join,
231
233
  interrupt,
@@ -281,8 +283,8 @@ import {
281
283
  applyAgentEnvironmentMaterialization2,
282
284
  isPathWithin2,
283
285
  skillIdentity2
284
- } from "./chunk-2wkdq54x.js";
285
- import"./chunk-pq9bkyj6.js";
286
+ } from "./chunk-4wqjxfbv.js";
287
+ import"./chunk-hr9vd6dj.js";
286
288
  import {
287
289
  sliceBytes2,
288
290
  maxLineBytes2,
@@ -302,8 +304,8 @@ import {
302
304
  rpcRunFiles,
303
305
  programHostsEnv,
304
306
  undeclaredHostsEnv
305
- } from "./chunk-1j1jh211.js";
306
- import"./chunk-h0sw8tks.js";
307
+ } from "./chunk-x1zqfxve.js";
308
+ import"./chunk-5n121vsj.js";
307
309
  import {
308
310
  nextInt
309
311
  } from "./chunk-q3c7vmby.js";
@@ -311,7 +313,7 @@ import {
311
313
  ChildProcessSpawner,
312
314
  make3
313
315
  } from "./chunk-1rry0tsn.js";
314
- import"./chunk-fgecj3t0.js";
316
+ import"./chunk-cmatdpfy.js";
315
317
 
316
318
  // packages/core/src/sync-kit.ts
317
319
  import { createHash } from "crypto";
@@ -6363,6 +6365,13 @@ var checkFileKeeper = (work, runFiles, storage) => {
6363
6365
  return kept.flat();
6364
6366
  }).pipe(catch_((error) => as(logWarning("check_run_files_not_kept", `${input.check}: ${error.message}`), [])));
6365
6367
  };
6368
+ var reportedTests = (filesDir) => gen(function* () {
6369
+ const fs = yield* FileSystem;
6370
+ const path = yield* Path;
6371
+ const names = (yield* regularFiles(filesDir)).filter(isTestReportName);
6372
+ const reports = yield* forEach(names, (name) => fs.readFileString(path.join(filesDir, name)).pipe(map8((text) => [text]), orElseSucceed(() => [])));
6373
+ return checkTests(reports.flat());
6374
+ }).pipe(orElseSucceed(() => checkTests([])));
6366
6375
 
6367
6376
  class ServicesUnavailable extends TaggedError("ServicesUnavailable") {
6368
6377
  get message() {
@@ -6577,6 +6586,7 @@ var runChecks = (worktree, checks, tree, known, run, keeper, services) => gen(fu
6577
6586
  ...sink === undefined ? undefined : { onOutput: (chunk) => sink.writeAll(chunk) }
6578
6587
  });
6579
6588
  const durationMs = (yield* currentTimeMillis) - startedAt;
6589
+ const tests = yield* reportedTests(filesDir);
6580
6590
  const fileIds = keeper === undefined ? undefined : yield* keeper.keep({ check: check.name, prefix: keeper.prefix, output, filesDir });
6581
6591
  return {
6582
6592
  name: check.name,
@@ -6585,7 +6595,8 @@ var runChecks = (worktree, checks, tree, known, run, keeper, services) => gen(fu
6585
6595
  ...ran.exitCode === undefined ? undefined : { exitCode: ran.exitCode },
6586
6596
  durationMs,
6587
6597
  outputTail: redactedOutputTail(ran.output),
6588
- ...fileIds === undefined ? undefined : { fileIds }
6598
+ ...fileIds === undefined ? undefined : { fileIds },
6599
+ tests
6589
6600
  };
6590
6601
  }).pipe(scoped));
6591
6602
  });
@@ -4,9 +4,9 @@ import {
4
4
  runnerRpcUrl2,
5
5
  makeRunnerRpcClient2,
6
6
  makeProgramRpcClient2
7
- } from "./chunk-h0sw8tks.js";
8
- import"./chunk-fgecj3t0.js";
9
- import"./chunk-x7g0rzqj.js";
7
+ } from "./chunk-5n121vsj.js";
8
+ import"./chunk-cmatdpfy.js";
9
+ import"./chunk-9e452fhe.js";
10
10
  import"./chunk-rrnee9mk.js";
11
11
  import"./chunk-v01c0k6j.js";
12
12
  import"./chunk-dk0ftqwg.js";
@@ -26,15 +26,15 @@ import {
26
26
  tomlKeyPath2,
27
27
  kitmanSkillEntry,
28
28
  isPathWithin2
29
- } from "./chunk-2wkdq54x.js";
29
+ } from "./chunk-4wqjxfbv.js";
30
30
  import {
31
31
  instructionsStart,
32
32
  instructionsEnd,
33
33
  renderMcpServer,
34
34
  materializeKitSetup,
35
35
  tomlInline
36
- } from "./chunk-x7g0rzqj.js";
37
- import"./chunk-pq9bkyj6.js";
36
+ } from "./chunk-9e452fhe.js";
37
+ import"./chunk-hr9vd6dj.js";
38
38
  import"./chunk-1rry0tsn.js";
39
39
 
40
40
  // packages/agent-runtime/src/kit-setup-sync.ts
@@ -38,7 +38,7 @@ import {
38
38
  get2,
39
39
  layer4,
40
40
  KitDigest
41
- } from "./chunk-x7g0rzqj.js";
41
+ } from "./chunk-9e452fhe.js";
42
42
 
43
43
  // packages/core/src/npm-registry.ts
44
44
  var KitManifest = Struct({
@@ -12,7 +12,7 @@ import {
12
12
  herdrCoreLayer2,
13
13
  herdrCoreTransportLayer2,
14
14
  updateHerdrCore2
15
- } from "./chunk-x7g0rzqj.js";
15
+ } from "./chunk-9e452fhe.js";
16
16
  import"./chunk-dk0ftqwg.js";
17
17
  import"./chunk-d3ksv8y1.js";
18
18
  export {
@@ -35,14 +35,6 @@ import {
35
35
  } from "./chunk-d3ksv8y1.js";
36
36
  import"./chunk-rrnee9mk.js";
37
37
  import"./chunk-v01c0k6j.js";
38
- import {
39
- decodeText,
40
- mkString,
41
- FileSystem,
42
- Path,
43
- withDefault,
44
- String2
45
- } from "./chunk-dk0ftqwg.js";
46
38
  import {
47
39
  SecureRandom,
48
40
  layerWebCrypto,
@@ -54,23 +46,31 @@ import {
54
46
  layer4,
55
47
  kitmanMcpServer,
56
48
  RunnerRpcProtocolVersion
57
- } from "./chunk-x7g0rzqj.js";
49
+ } from "./chunk-9e452fhe.js";
50
+ import {
51
+ decodeText,
52
+ mkString,
53
+ FileSystem,
54
+ Path,
55
+ withDefault,
56
+ String2
57
+ } from "./chunk-dk0ftqwg.js";
58
58
  import {
59
59
  Packument,
60
60
  tarballMatches
61
- } from "./chunk-pq9bkyj6.js";
62
- import"./chunk-h0sw8tks.js";
61
+ } from "./chunk-hr9vd6dj.js";
62
+ import"./chunk-5n121vsj.js";
63
63
  import {
64
64
  AgentDeclaration,
65
65
  KitDeclarations,
66
66
  describeFlag,
67
67
  Described
68
- } from "./chunk-1j1jh211.js";
68
+ } from "./chunk-x1zqfxve.js";
69
69
  import {
70
70
  ChildProcessSpawner,
71
71
  make3
72
72
  } from "./chunk-1rry0tsn.js";
73
- import"./chunk-fgecj3t0.js";
73
+ import"./chunk-cmatdpfy.js";
74
74
 
75
75
  // packages/sdk/src/build/index.ts
76
76
  class DependencyInstallFailed extends TaggedError2()("DependencyInstallFailed", {
@@ -105,7 +105,7 @@ import {
105
105
  KitDigest,
106
106
  KitSetup,
107
107
  RunnerRpcError
108
- } from "./chunk-x7g0rzqj.js";
108
+ } from "./chunk-9e452fhe.js";
109
109
  import {
110
110
  runForEach,
111
111
  FileSystem
@@ -493,7 +493,9 @@ var EvidenceCheck = Struct({
493
493
  durationMs: Finite,
494
494
  evidenceId: String4,
495
495
  outputTail: optionalKey(String4),
496
- suggested: optionalKey(Boolean2)
496
+ suggested: optionalKey(Boolean2),
497
+ skippedSinceBaseline: optionalKey(ArraySchema(String4)),
498
+ newNotRun: optionalKey(ArraySchema(String4))
497
499
  });
498
500
  var VerifyResult = Struct({
499
501
  revision: String4,
@@ -197,7 +197,7 @@ import {
197
197
  harnessNames,
198
198
  herdrRunnerCapabilities2,
199
199
  declaredChecks
200
- } from "./chunk-x7g0rzqj.js";
200
+ } from "./chunk-9e452fhe.js";
201
201
  import {
202
202
  Id
203
203
  } from "./chunk-rrnee9mk.js";
@@ -504,10 +504,10 @@ var checkDockerImageSetting = pinnedImage;
504
504
  var checkRegistryImageSetting = pinnedImage;
505
505
  var herdrCoreSession = (runnerId, personal) => personal ? undefined : `kitman-${sha2562(runnerId).slice(0, 16)}`;
506
506
  var OpenHerdrCore = Reference("kitman/cli/OpenHerdrCore", {
507
- defaultValue: () => (options) => flatMap3(promise(() => import("./chunk-8w7d269h.js")), ({ HerdrCore, herdrCoreLayer }) => provide3(service(HerdrCore), herdrCoreLayer(options)))
507
+ defaultValue: () => (options) => flatMap3(promise(() => import("./chunk-tkmp48ha.js")), ({ HerdrCore, herdrCoreLayer }) => provide3(service(HerdrCore), herdrCoreLayer(options)))
508
508
  });
509
509
  var UpdateHerdrCore = Reference("kitman/cli/UpdateHerdrCore", {
510
- defaultValue: () => (options) => flatMap3(promise(() => import("./chunk-8w7d269h.js")), (module) => module.updateHerdrCore(options))
510
+ defaultValue: () => (options) => flatMap3(promise(() => import("./chunk-tkmp48ha.js")), (module) => module.updateHerdrCore(options))
511
511
  });
512
512
  var herdrCoreMissing = (error) => {
513
513
  if (isTagged(error, "HerdrCoreMissing"))
@@ -733,7 +733,7 @@ var syncTargets = (harness) => gen(function* () {
733
733
  });
734
734
  var syncKits = (input) => gen(function* () {
735
735
  const fs = yield* FileSystem;
736
- const { syncKitSetup } = yield* promise(() => import("./chunk-f8qqmcgy.js"));
736
+ const { syncKitSetup } = yield* promise(() => import("./chunk-h89p59p6.js"));
737
737
  const harnesses = yield* syncTargets(input.harness);
738
738
  const chain = yield* input.client.getKitChain(input.workspaceId);
739
739
  for (const { name, problem } of chain.skipped)
@@ -1651,7 +1651,7 @@ var package_default = {
1651
1651
  };
1652
1652
 
1653
1653
  // apps/cli/src/scaffold.ts
1654
- var cliVersion = "0.10.70";
1654
+ var cliVersion = "0.10.71";
1655
1655
  var packageJson = (name, scaffold) => `${JSON.stringify({
1656
1656
  name,
1657
1657
  private: true,
@@ -1901,7 +1901,7 @@ var Usage = [
1901
1901
  "Every run, loop, agent, verify, constraint, secret, claim, deploy, dev and kit command takes --json."
1902
1902
  ].join(`
1903
1903
  `);
1904
- var agentRuntime = promise(() => import("./chunk-e5dq8dbz.js"));
1904
+ var agentRuntime = promise(() => import("./chunk-g4xsa9ks.js"));
1905
1905
  var TuiLauncher = Reference("kitman/cli/TuiLauncher", {
1906
1906
  defaultValue: () => gen(function* () {
1907
1907
  const tui = yield* tryPromise({
@@ -2756,7 +2756,7 @@ var SandboxHostProbe = Reference("kitman/cli/SandboxHostProbe", {
2756
2756
  });
2757
2757
  var OpenRunnerRpc = Reference("kitman/cli/OpenRunnerRpc", {
2758
2758
  defaultValue: () => (options) => gen(function* () {
2759
- const { makeRunnerRpcClient, runnerRpcUrl, runnerWebSocketProtocol } = yield* promise(() => import("./chunk-9hr71e7c.js"));
2759
+ const { makeRunnerRpcClient, runnerRpcUrl, runnerWebSocketProtocol } = yield* promise(() => import("./chunk-gxnpdpjz.js"));
2760
2760
  return yield* makeRunnerRpcClient({
2761
2761
  runnerId: options.runnerId,
2762
2762
  bearer: options.bearer,
@@ -3140,7 +3140,7 @@ function mcpCommand(args) {
3140
3140
  if (command.action === "run") {
3141
3141
  if (command.args.length > 0)
3142
3142
  return yield* new CliError({ message: `Unknown command: ${args.join(" ")}` });
3143
- const { runMcpServerCommand } = yield* promise(() => import("./chunk-8ttdzwa3.js"));
3143
+ const { runMcpServerCommand } = yield* promise(() => import("./chunk-zwec6t49.js"));
3144
3144
  return yield* runMcpServerCommand({ flags: command.flags });
3145
3145
  }
3146
3146
  if (command.action !== "setup")
@@ -3728,7 +3728,16 @@ var answerInTerminal = (client, runId, questions) => forEach(questions, (questio
3728
3728
  yield* client.answerRun(runId, { value: reply.answer, question: question.id, idempotencyKey: key }).pipe(andThen2(log(`Answered ${question.stepKey}: ${reply.answer}`)), catchIf((error) => error instanceof KitmanClientError && error.code === "question_not_open", (error) => log(`Not answered: ${question.stepKey} was settled while it waited here. ${error.responseMessage ?? error.message}`)));
3729
3729
  }), { discard: true });
3730
3730
  var claimLines = (step) => step.output === undefined ? [] : isJsonObject(toJsonValue(step.output)) ? Object.entries(toJsonObject(step.output)).map(([field, value]) => ` Claim ${field}: ${isString(value) ? value : encodeJsonStringSync(value)}`) : [` Claim: ${encodeJsonStringSync(toJsonValue(step.output))}`];
3731
- var evidenceLines = (evidence) => evidence.map((entry) => `Evidence ${entry.step} ${entry.name}: ${entry.status}${entry.preExisting ? " (pre-existing)" : ""} at tree ${entry.tree} (${entry.revision}, ${entry.durationMs}ms)`);
3731
+ var evidenceLines = (evidence) => evidence.flatMap((entry) => {
3732
+ const neverRan = [
3733
+ ...(entry.newNotRun ?? []).map((test) => ` Never ran: ${test} (new)`),
3734
+ ...(entry.skippedSinceBaseline ?? []).map((test) => ` Never ran: ${test} (ran on the base branch)`)
3735
+ ];
3736
+ return [
3737
+ `Evidence ${entry.step} ${entry.name}: ${entry.status}${entry.preExisting ? " (pre-existing)" : ""}${neverRan.length === 0 ? "" : `, ${neverRan.length} test${neverRan.length === 1 ? "" : "s"} never ran`} at tree ${entry.tree} (${entry.revision}, ${entry.durationMs}ms)`,
3738
+ ...neverRan
3739
+ ];
3740
+ });
3732
3741
  var steerOutcome = (client, runId, sent) => gen(function* () {
3733
3742
  for (let tries = 0;tries < 20; tries++) {
3734
3743
  const steer = (yield* client.showRun(runId)).steers.find((entry) => entry.id === sent.id);
@@ -4342,9 +4351,9 @@ function claimCommand(args) {
4342
4351
  }
4343
4352
  });
4344
4353
  }
4345
- var KitWriter = map8(promise(() => import("./chunk-7jh6atr0.js")), (build) => build.writeKit);
4354
+ var KitWriter = map8(promise(() => import("./chunk-vs10kwdr.js")), (build) => build.writeKit);
4346
4355
  var KitBuilder = Reference("kitman/cli/KitBuilder", {
4347
- defaultValue: () => (directory) => flatMap3(promise(() => import("./chunk-7jh6atr0.js")), (build) => build.buildKit(directory))
4356
+ defaultValue: () => (directory) => flatMap3(promise(() => import("./chunk-vs10kwdr.js")), (build) => build.buildKit(directory))
4348
4357
  });
4349
4358
  var uploadKit = (client, workspaceId, built) => gen(function* () {
4350
4359
  yield* client.uploadKitBundle(workspaceId, built.digest, { bundle: encode2(built.bundle) });