@harness-engineering/cli 2.4.0 → 2.4.1

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.
Files changed (64) hide show
  1. package/dist/agents-md-2M46KG4F.js +10 -0
  2. package/dist/{architecture-I2G7PNQB.js → architecture-3ZSN5RDQ.js} +5 -5
  3. package/dist/{assess-project-LO6NCLE7.js → assess-project-KZWFQEJE.js} +5 -3
  4. package/dist/bin/harness-mcp.js +16 -16
  5. package/dist/bin/harness.js +29 -27
  6. package/dist/{check-phase-gate-52SQFNJB.js → check-phase-gate-EWV5VYTG.js} +5 -5
  7. package/dist/{chunk-GDJ2MRYH.js → chunk-2TGCYJMT.js} +259 -5
  8. package/dist/{chunk-TIQU5VY7.js → chunk-5FDBXUFW.js} +1 -1
  9. package/dist/{chunk-7BNK4M23.js → chunk-5XLLIYYL.js} +1 -1
  10. package/dist/{chunk-U4XK4BB3.js → chunk-73KZ2E47.js} +9 -9
  11. package/dist/{chunk-NGCM4B4V.js → chunk-7RZZV73V.js} +5 -5
  12. package/dist/{chunk-WY2J54IZ.js → chunk-B2ZYMQGT.js} +64 -30
  13. package/dist/{chunk-XPRGWHBL.js → chunk-BCFDGOMA.js} +1 -1
  14. package/dist/{chunk-27EHWQPK.js → chunk-GLKASJZE.js} +6 -6
  15. package/dist/{chunk-TCR5PKMU.js → chunk-GOSUZC5H.js} +514 -208
  16. package/dist/{chunk-MQRKPF46.js → chunk-I2KULMPD.js} +10 -10
  17. package/dist/{chunk-4XB37LST.js → chunk-IEHXZB6J.js} +9 -9
  18. package/dist/{chunk-5YOHXTK3.js → chunk-KOK7BFP2.js} +3 -3
  19. package/dist/{chunk-2L2A6W6I.js → chunk-KRQTN46U.js} +3 -3
  20. package/dist/{chunk-GN2CSZC6.js → chunk-LHHO7AH4.js} +3 -3
  21. package/dist/{chunk-OFMQEUYN.js → chunk-LJF6UY4R.js} +2 -2
  22. package/dist/{chunk-KPWUZSHL.js → chunk-MXOQEI72.js} +25 -8
  23. package/dist/{chunk-54JTO4NZ.js → chunk-NM3ZIWVN.js} +2 -2
  24. package/dist/{chunk-JGPOQJ73.js → chunk-NTOKQJOX.js} +2 -2
  25. package/dist/chunk-O63AAPIZ.js +190 -0
  26. package/dist/{chunk-TVJZX53C.js → chunk-OUXYITL5.js} +2 -2
  27. package/dist/{chunk-MSBVH6ER.js → chunk-PPQ3TY2R.js} +2 -2
  28. package/dist/{chunk-RYVL76ZF.js → chunk-QV5EBDWA.js} +1 -1
  29. package/dist/{chunk-FJJYQWUP.js → chunk-RRTTJ3VB.js} +2 -2
  30. package/dist/{chunk-Q43LM7CO.js → chunk-TPNA2I4J.js} +206 -97
  31. package/dist/{chunk-RZASDABE.js → chunk-UPV7VDUB.js} +2 -2
  32. package/dist/{chunk-DJRRTZGD.js → chunk-UQJV7NNM.js} +2 -2
  33. package/dist/ci-workflow-5TBUHJFC.js +10 -0
  34. package/dist/{dist-ZJGFXGIB.js → dist-HA6IIPRC.js} +39 -3
  35. package/dist/dist-O733ZU6I.js +49 -0
  36. package/dist/{dist-SQAOKWXM.js → dist-QPWXPCPL.js} +1 -1
  37. package/dist/{docs-7CW7WUFB.js → docs-D6WI2LCF.js} +5 -5
  38. package/dist/engine-GBEVIZZQ.js +10 -0
  39. package/dist/{entropy-P6QELTFA.js → entropy-V6M4KJDC.js} +4 -4
  40. package/dist/{feedback-PJWCDRRZ.js → feedback-22I4HHXM.js} +1 -1
  41. package/dist/{generate-agent-definitions-ONDIJHHK.js → generate-agent-definitions-UM7T3WLA.js} +5 -5
  42. package/dist/{glob-helper-JE3MO4UD.js → glob-helper-XE2UGEOV.js} +1 -1
  43. package/dist/{graph-loader-TJU4E7KL.js → graph-loader-EQBOIHFZ.js} +1 -1
  44. package/dist/index.d.ts +92 -2
  45. package/dist/index.js +26 -26
  46. package/dist/loader-5V72NYMF.js +12 -0
  47. package/dist/{mcp-UUNLS3MC.js → mcp-5KQGFG5U.js} +16 -16
  48. package/dist/{performance-7X3EFAOD.js → performance-MVORVVMG.js} +5 -5
  49. package/dist/{review-pipeline-GAJ22PBC.js → review-pipeline-JYSVCNGJ.js} +4 -4
  50. package/dist/runtime-KZC2OQI7.js +11 -0
  51. package/dist/{scan-SFX5U3TE.js → scan-4PPP6ZXT.js} +1 -1
  52. package/dist/{security-ZSU643D7.js → security-WOVOBLCI.js} +1 -1
  53. package/dist/{tool-tiers-7QGZ3FKY.js → tool-tiers-QVWKAZX4.js} +5 -1
  54. package/dist/{validate-IDX6RI3U.js → validate-55HGQKWR.js} +5 -5
  55. package/dist/validate-cross-check-H3PSV4VY.js +10 -0
  56. package/package.json +4 -4
  57. package/dist/agents-md-ROTDQOXM.js +0 -10
  58. package/dist/chunk-RL4VMEXL.js +0 -53
  59. package/dist/ci-workflow-MYBH64CR.js +0 -10
  60. package/dist/dist-3EWNRFFQ.js +0 -21
  61. package/dist/engine-Y75QZW6N.js +0 -10
  62. package/dist/loader-DQRNWKOZ.js +0 -12
  63. package/dist/runtime-6TK6U72R.js +0 -11
  64. package/dist/validate-cross-check-5YEWZ3EW.js +0 -10
@@ -0,0 +1,10 @@
1
+ import {
2
+ generateAgentsMd
3
+ } from "./chunk-RRTTJ3VB.js";
4
+ import "./chunk-2TGCYJMT.js";
5
+ import "./chunk-O63AAPIZ.js";
6
+ import "./chunk-BCFDGOMA.js";
7
+ import "./chunk-KFQGP6VL.js";
8
+ export {
9
+ generateAgentsMd
10
+ };
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  checkDependenciesDefinition,
3
3
  handleCheckDependencies
4
- } from "./chunk-NGCM4B4V.js";
5
- import "./chunk-OFMQEUYN.js";
4
+ } from "./chunk-7RZZV73V.js";
5
+ import "./chunk-LJF6UY4R.js";
6
6
  import "./chunk-EPUKTTJZ.js";
7
7
  import "./chunk-W6Y7ZW3Y.js";
8
- import "./chunk-GDJ2MRYH.js";
9
- import "./chunk-RL4VMEXL.js";
10
- import "./chunk-XPRGWHBL.js";
8
+ import "./chunk-2TGCYJMT.js";
9
+ import "./chunk-O63AAPIZ.js";
10
+ import "./chunk-BCFDGOMA.js";
11
11
  import "./chunk-KFQGP6VL.js";
12
12
  export {
13
13
  checkDependenciesDefinition,
@@ -1,10 +1,12 @@
1
1
  import {
2
2
  assessProjectDefinition,
3
- handleAssessProject
4
- } from "./chunk-WY2J54IZ.js";
3
+ handleAssessProject,
4
+ parseToolResponse
5
+ } from "./chunk-B2ZYMQGT.js";
5
6
  import "./chunk-W6Y7ZW3Y.js";
6
7
  import "./chunk-KFQGP6VL.js";
7
8
  export {
8
9
  assessProjectDefinition,
9
- handleAssessProject
10
+ handleAssessProject,
11
+ parseToolResponse
10
12
  };
@@ -1,29 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startServer
4
- } from "../chunk-Q43LM7CO.js";
5
- import "../chunk-RZASDABE.js";
6
- import "../chunk-WY2J54IZ.js";
4
+ } from "../chunk-TPNA2I4J.js";
5
+ import "../chunk-UPV7VDUB.js";
6
+ import "../chunk-B2ZYMQGT.js";
7
7
  import "../chunk-IOW3MW2K.js";
8
- import "../chunk-4XB37LST.js";
9
- import "../chunk-GN2CSZC6.js";
10
- import "../chunk-TIQU5VY7.js";
11
- import "../chunk-2L2A6W6I.js";
12
- import "../chunk-NGCM4B4V.js";
13
- import "../chunk-OFMQEUYN.js";
14
- import "../chunk-MQRKPF46.js";
15
- import "../chunk-27EHWQPK.js";
16
- import "../chunk-U4XK4BB3.js";
8
+ import "../chunk-IEHXZB6J.js";
9
+ import "../chunk-LHHO7AH4.js";
10
+ import "../chunk-5FDBXUFW.js";
11
+ import "../chunk-KRQTN46U.js";
12
+ import "../chunk-7RZZV73V.js";
13
+ import "../chunk-LJF6UY4R.js";
14
+ import "../chunk-I2KULMPD.js";
15
+ import "../chunk-GLKASJZE.js";
16
+ import "../chunk-73KZ2E47.js";
17
17
  import "../chunk-EPUKTTJZ.js";
18
18
  import "../chunk-W6Y7ZW3Y.js";
19
19
  import "../chunk-27AJKSQY.js";
20
- import "../chunk-KPWUZSHL.js";
20
+ import "../chunk-MXOQEI72.js";
21
21
  import "../chunk-3ISINLYT.js";
22
22
  import "../chunk-6B6UN6SG.js";
23
23
  import "../chunk-ZCZD7FHU.js";
24
- import "../chunk-GDJ2MRYH.js";
25
- import "../chunk-RL4VMEXL.js";
26
- import "../chunk-XPRGWHBL.js";
24
+ import "../chunk-2TGCYJMT.js";
25
+ import "../chunk-O63AAPIZ.js";
26
+ import "../chunk-BCFDGOMA.js";
27
27
  import "../chunk-HIK6OEUF.js";
28
28
  import "../chunk-EBJQ6N4M.js";
29
29
  import "../chunk-3WGJMBKH.js";
@@ -3,43 +3,43 @@ import {
3
3
  createProgram,
4
4
  installCommandTelemetry,
5
5
  printFirstRunWelcome
6
- } from "../chunk-TCR5PKMU.js";
7
- import "../chunk-TVJZX53C.js";
8
- import "../chunk-FJJYQWUP.js";
9
- import "../chunk-DJRRTZGD.js";
10
- import "../chunk-MSBVH6ER.js";
11
- import "../chunk-54JTO4NZ.js";
6
+ } from "../chunk-GOSUZC5H.js";
7
+ import "../chunk-OUXYITL5.js";
8
+ import "../chunk-RRTTJ3VB.js";
9
+ import "../chunk-UQJV7NNM.js";
10
+ import "../chunk-PPQ3TY2R.js";
11
+ import "../chunk-NM3ZIWVN.js";
12
12
  import "../chunk-CQ553GZO.js";
13
13
  import "../chunk-GISMXMVL.js";
14
14
  import "../chunk-WWACIIBA.js";
15
15
  import "../chunk-TEFCFC4H.js";
16
- import "../chunk-5YOHXTK3.js";
17
- import "../chunk-RYVL76ZF.js";
16
+ import "../chunk-KOK7BFP2.js";
17
+ import "../chunk-QV5EBDWA.js";
18
18
  import "../chunk-KET4QQZB.js";
19
- import "../chunk-JGPOQJ73.js";
20
- import "../chunk-7BNK4M23.js";
19
+ import "../chunk-NTOKQJOX.js";
20
+ import "../chunk-5XLLIYYL.js";
21
21
  import {
22
22
  dispatchSkillsFromGit
23
- } from "../chunk-Q43LM7CO.js";
24
- import "../chunk-RZASDABE.js";
25
- import "../chunk-WY2J54IZ.js";
23
+ } from "../chunk-TPNA2I4J.js";
24
+ import "../chunk-UPV7VDUB.js";
25
+ import "../chunk-B2ZYMQGT.js";
26
26
  import "../chunk-IOW3MW2K.js";
27
- import "../chunk-4XB37LST.js";
28
- import "../chunk-GN2CSZC6.js";
29
- import "../chunk-TIQU5VY7.js";
30
- import "../chunk-2L2A6W6I.js";
31
- import "../chunk-NGCM4B4V.js";
32
- import "../chunk-OFMQEUYN.js";
33
- import "../chunk-MQRKPF46.js";
34
- import "../chunk-27EHWQPK.js";
35
- import "../chunk-U4XK4BB3.js";
27
+ import "../chunk-IEHXZB6J.js";
28
+ import "../chunk-LHHO7AH4.js";
29
+ import "../chunk-5FDBXUFW.js";
30
+ import "../chunk-KRQTN46U.js";
31
+ import "../chunk-7RZZV73V.js";
32
+ import "../chunk-LJF6UY4R.js";
33
+ import "../chunk-I2KULMPD.js";
34
+ import "../chunk-GLKASJZE.js";
35
+ import "../chunk-73KZ2E47.js";
36
36
  import "../chunk-EPUKTTJZ.js";
37
37
  import "../chunk-W6Y7ZW3Y.js";
38
38
  import "../chunk-27AJKSQY.js";
39
39
  import {
40
40
  findConfigFile,
41
41
  loadConfig
42
- } from "../chunk-KPWUZSHL.js";
42
+ } from "../chunk-MXOQEI72.js";
43
43
  import "../chunk-3ISINLYT.js";
44
44
  import "../chunk-6B6UN6SG.js";
45
45
  import "../chunk-ZCZD7FHU.js";
@@ -53,9 +53,9 @@ import {
53
53
  readCheckState,
54
54
  shouldRunCheck,
55
55
  spawnBackgroundCheck
56
- } from "../chunk-GDJ2MRYH.js";
57
- import "../chunk-RL4VMEXL.js";
58
- import "../chunk-XPRGWHBL.js";
56
+ } from "../chunk-2TGCYJMT.js";
57
+ import "../chunk-O63AAPIZ.js";
58
+ import "../chunk-BCFDGOMA.js";
59
59
  import "../chunk-ZP5E7YET.js";
60
60
  import "../chunk-HIK6OEUF.js";
61
61
  import "../chunk-EBJQ6N4M.js";
@@ -221,7 +221,9 @@ async function main() {
221
221
  } catch (error) {
222
222
  handleError(error);
223
223
  }
224
- printUpdateNotification();
224
+ if (process.argv[2] !== "update") {
225
+ printUpdateNotification();
226
+ }
225
227
  const dispatchResult = await dispatchPromise;
226
228
  const banner = formatDispatchBanner(dispatchResult);
227
229
  if (banner) {
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createCheckPhaseGateCommand,
3
3
  runCheckPhaseGate
4
- } from "./chunk-5YOHXTK3.js";
5
- import "./chunk-KPWUZSHL.js";
4
+ } from "./chunk-KOK7BFP2.js";
5
+ import "./chunk-MXOQEI72.js";
6
6
  import "./chunk-ZCZD7FHU.js";
7
- import "./chunk-GDJ2MRYH.js";
8
- import "./chunk-RL4VMEXL.js";
9
- import "./chunk-XPRGWHBL.js";
7
+ import "./chunk-2TGCYJMT.js";
8
+ import "./chunk-O63AAPIZ.js";
9
+ import "./chunk-BCFDGOMA.js";
10
10
  import "./chunk-EBJQ6N4M.js";
11
11
  import "./chunk-3WGJMBKH.js";
12
12
  import "./chunk-KFQGP6VL.js";
@@ -1,13 +1,27 @@
1
1
  import {
2
+ AuthAuditEntrySchema,
3
+ AuthTokenPublicSchema,
4
+ AuthTokenSchema,
5
+ BridgeKindSchema,
2
6
  DEFAULT_SKILL_CONTEXT_BUDGET,
3
7
  Err,
8
+ GatewayEventSchema,
9
+ OTLPKeyValueSchema,
10
+ OTLPSpanSchema,
4
11
  Ok,
12
+ PromptCacheStatsSchema,
5
13
  SESSION_SECTION_NAMES,
6
14
  STANDARD_COGNITIVE_MODES,
15
+ TokenScopeSchema,
16
+ TrajectoryMetadataSchema,
17
+ WebhookDeliverySchema,
18
+ WebhookDeliveryStatusSchema,
19
+ WebhookSubscriptionPublicSchema,
20
+ WebhookSubscriptionSchema,
7
21
  init_dist,
8
22
  isErr,
9
23
  isOk
10
- } from "./chunk-RL4VMEXL.js";
24
+ } from "./chunk-O63AAPIZ.js";
11
25
  import {
12
26
  DEFAULT_SKIP_DIRS,
13
27
  GraphStore,
@@ -15,7 +29,7 @@ import {
15
29
  init_dist as init_dist2,
16
30
  queryTraceability,
17
31
  skipDirGlobs
18
- } from "./chunk-XPRGWHBL.js";
32
+ } from "./chunk-BCFDGOMA.js";
19
33
  import {
20
34
  __esm,
21
35
  __export
@@ -2841,17 +2855,22 @@ __export(dist_exports, {
2841
2855
  ArchConfigSchema: () => ArchConfigSchema,
2842
2856
  ArchDiffResultSchema: () => ArchDiffResultSchema,
2843
2857
  ArchMetricCategorySchema: () => ArchMetricCategorySchema,
2858
+ AuthAuditEntrySchema: () => AuthAuditEntrySchema,
2859
+ AuthTokenPublicSchema: () => AuthTokenPublicSchema,
2860
+ AuthTokenSchema: () => AuthTokenSchema,
2844
2861
  BUG_DETECTION_DESCRIPTOR: () => BUG_DETECTION_DESCRIPTOR,
2845
2862
  BUG_TRACK_CATEGORIES: () => BUG_TRACK_CATEGORIES,
2846
2863
  BaselineManager: () => BaselineManager,
2847
2864
  BenchmarkRunner: () => BenchmarkRunner,
2848
2865
  BlueprintGenerator: () => BlueprintGenerator,
2866
+ BridgeKindSchema: () => BridgeKindSchema,
2849
2867
  BundleConstraintsSchema: () => BundleConstraintsSchema,
2850
2868
  BundleSchema: () => BundleSchema,
2851
2869
  CACHE_TTL_MS: () => CACHE_TTL_MS,
2852
2870
  CINotifier: () => CINotifier,
2853
2871
  COMPLIANCE_DESCRIPTOR: () => COMPLIANCE_DESCRIPTOR,
2854
2872
  CORROBORATED_AGREEMENT: () => CORROBORATED_AGREEMENT,
2873
+ CacheMetricsRecorder: () => CacheMetricsRecorder,
2855
2874
  CategoryBaselineSchema: () => CategoryBaselineSchema,
2856
2875
  CategoryForecastSchema: () => CategoryForecastSchema,
2857
2876
  CategoryRegressionSchema: () => CategoryRegressionSchema,
@@ -2901,6 +2920,7 @@ __export(dist_exports, {
2901
2920
  ForbiddenImportCollector: () => ForbiddenImportCollector,
2902
2921
  GateConfigSchema: () => GateConfigSchema,
2903
2922
  GateResultSchema: () => GateResultSchema,
2923
+ GatewayEventSchema: () => GatewayEventSchema,
2904
2924
  GeminiCacheAdapter: () => GeminiCacheAdapter,
2905
2925
  GitHubIssuesSyncAdapter: () => GitHubIssuesSyncAdapter,
2906
2926
  HandoffSchema: () => HandoffSchema,
@@ -2918,6 +2938,9 @@ __export(dist_exports, {
2918
2938
  NoOpExecutor: () => NoOpExecutor,
2919
2939
  NoOpSink: () => NoOpSink,
2920
2940
  NoOpTelemetryAdapter: () => NoOpTelemetryAdapter,
2941
+ OTLPExporter: () => OTLPExporter,
2942
+ OTLPKeyValueSchema: () => OTLPKeyValueSchema,
2943
+ OTLPSpanSchema: () => OTLPSpanSchema,
2921
2944
  Ok: () => Ok,
2922
2945
  OpenAICacheAdapter: () => OpenAICacheAdapter,
2923
2946
  PII_FIELD_DENYLIST: () => PII_FIELD_DENYLIST,
@@ -2930,6 +2953,7 @@ __export(dist_exports, {
2930
2953
  PredictionResultSchema: () => PredictionResultSchema,
2931
2954
  PredictionWarningSchema: () => PredictionWarningSchema,
2932
2955
  ProjectScanner: () => ProjectScanner,
2956
+ PromptCacheStatsSchema: () => PromptCacheStatsSchema,
2933
2957
  PulseAdapterAlreadyRegisteredError: () => PulseAdapterAlreadyRegisteredError,
2934
2958
  PulseConfigSchema: () => PulseConfigSchema,
2935
2959
  PulseDbSourceSchema: () => PulseDbSourceSchema,
@@ -2959,6 +2983,7 @@ __export(dist_exports, {
2959
2983
  SharableSecurityRulesSchema: () => SharableSecurityRulesSchema,
2960
2984
  SkillEventSchema: () => SkillEventSchema,
2961
2985
  SolutionDocFrontmatterSchema: () => SolutionDocFrontmatterSchema,
2986
+ SpanKind: () => SpanKind,
2962
2987
  SpecImpactEstimateSchema: () => SpecImpactEstimateSchema,
2963
2988
  SpecImpactEstimator: () => SpecImpactEstimator,
2964
2989
  SpecImpactSignalsSchema: () => SpecImpactSignalsSchema,
@@ -2973,6 +2998,8 @@ __export(dist_exports, {
2973
2998
  TimelineFileSchema: () => TimelineFileSchema,
2974
2999
  TimelineManager: () => TimelineManager,
2975
3000
  TimelineSnapshotSchema: () => TimelineSnapshotSchema,
3001
+ TokenScopeSchema: () => TokenScopeSchema,
3002
+ TrajectoryMetadataSchema: () => TrajectoryMetadataSchema,
2976
3003
  TransitionSchema: () => TransitionSchema,
2977
3004
  TrendAttributionSchema: () => TrendAttributionSchema,
2978
3005
  TrendLineSchema: () => TrendLineSchema,
@@ -2987,6 +3014,10 @@ __export(dist_exports, {
2987
3014
  ViolationSchema: () => ViolationSchema,
2988
3015
  ViolationSnapshotSchema: () => ViolationSnapshotSchema,
2989
3016
  WHATWG_BAD_PORTS: () => WHATWG_BAD_PORTS,
3017
+ WebhookDeliverySchema: () => WebhookDeliverySchema,
3018
+ WebhookDeliveryStatusSchema: () => WebhookDeliveryStatusSchema,
3019
+ WebhookSubscriptionPublicSchema: () => WebhookSubscriptionPublicSchema,
3020
+ WebhookSubscriptionSchema: () => WebhookSubscriptionSchema,
2990
3021
  acquireCompoundLock: () => acquireCompoundLock,
2991
3022
  addProvenance: () => addProvenance,
2992
3023
  agentConfigRules: () => agentConfigRules,
@@ -3127,6 +3158,7 @@ __export(dist_exports, {
3127
3158
  goRules: () => goRules,
3128
3159
  injectionRules: () => injectionRules,
3129
3160
  insecureDefaultsRules: () => insecureDefaultsRules,
3161
+ invalidateCheckState: () => invalidateCheckState,
3130
3162
  isBadPort: () => isBadPort,
3131
3163
  isDuplicateFinding: () => isDuplicateFinding,
3132
3164
  isErr: () => isErr,
@@ -6793,7 +6825,10 @@ function findDeadFiles(snapshot, reachability) {
6793
6825
  return deadFiles;
6794
6826
  }
6795
6827
  function isIdentifierUsedInAST(ast, identifier, skipImportDeclaration = true) {
6796
- const astString = JSON.stringify(ast);
6828
+ const astString = JSON.stringify(
6829
+ ast,
6830
+ (_key, value) => typeof value === "bigint" ? value.toString() : value
6831
+ );
6797
6832
  const identifierPattern = new RegExp(`"name"\\s*:\\s*"${identifier}"`, "g");
6798
6833
  const matches = astString.match(identifierPattern);
6799
6834
  if (!matches) return false;
@@ -14148,6 +14183,12 @@ function shouldRunCheck(state, intervalMs) {
14148
14183
  if (state === null) return true;
14149
14184
  return state.lastCheckTime + intervalMs <= Date.now();
14150
14185
  }
14186
+ function invalidateCheckState() {
14187
+ try {
14188
+ fs36.unlinkSync(getStatePath());
14189
+ } catch {
14190
+ }
14191
+ }
14151
14192
  function readCheckState() {
14152
14193
  try {
14153
14194
  const raw = fs36.readFileSync(getStatePath(), "utf-8");
@@ -15117,6 +15158,26 @@ async function send(events, apiKey) {
15117
15158
  }
15118
15159
  }
15119
15160
  }
15161
+ function toUnixNanoString(ns) {
15162
+ return ns.toString(10);
15163
+ }
15164
+ function attributesToOTLP(attrs) {
15165
+ const out = [];
15166
+ for (const [key, value] of Object.entries(attrs)) {
15167
+ if (typeof value === "string") {
15168
+ out.push({ key, value: { stringValue: value } });
15169
+ } else if (typeof value === "boolean") {
15170
+ out.push({ key, value: { boolValue: value } });
15171
+ } else if (typeof value === "number") {
15172
+ if (Number.isInteger(value)) {
15173
+ out.push({ key, value: { intValue: String(value) } });
15174
+ } else {
15175
+ out.push({ key, value: { doubleValue: value } });
15176
+ }
15177
+ }
15178
+ }
15179
+ return out;
15180
+ }
15120
15181
  function acquireCompoundLock(category, opts = {}) {
15121
15182
  if (!KNOWN_CATEGORIES.has(category)) {
15122
15183
  throw new Error(
@@ -15667,7 +15728,7 @@ function assembleCandidateReport(input) {
15667
15728
  }
15668
15729
  return lines.join("\n");
15669
15730
  }
15670
- var WHATWG_BAD_PORTS, BAD_PORT_SET, VALID_TYPES, CONVENTIONAL_PATTERN, LOOKBACK_PATTERN, PulseDbSourceSchema, PulseSourcesSchema, PulseConfigSchema, BUG_TRACK_CATEGORIES, KNOWLEDGE_TRACK_CATEGORIES, ALL_SOLUTION_CATEGORIES, ISO_DATE, BugTrackSchema, KnowledgeTrackSchema, BaseFrontmatter, SolutionDocFrontmatterSchema, TRACK_CATEGORIES, DEFAULT_AGNIX_TIMEOUT_MS, HARNESS_AGNIX_DISABLE, HARNESS_AGNIX_BIN, CLAUDE_MD_WARN_BYTES, CLAUDE_MD_ERROR_BYTES, CONTEXT_FILES, MIN_DESCRIPTION_LENGTH, SETTINGS_PATHS, KNOWN_HOOK_EVENTS, MCP_SETTINGS_FILES, REQUIRED_SECTIONS, SETTINGS_FILES, KNOWN_AGNIX_TOOLS, KEBAB_CASE, TICKET_ID, DEFAULT_SECTIONS, DEFAULT_RATIOS, NODE_TYPE_TO_CATEGORY, SECTION_LEVEL_MAP, DEFAULT_LEVEL, DEFAULT_BUDGET, DEFAULT_LOADER_CONFIG, LEVEL_FRACTIONS, PHASE_PRIORITIES, ManifestSchema, BundleConstraintsSchema, BundleSchema, ContributionsSchema, LockfilePackageSchema, LockfileSchema, SharableLayerSchema, SharableForbiddenImportSchema, SharableBoundaryConfigSchema, SharableSecurityRulesSchema, VALID_SCOPES, LINE_PATTERN, START_PATTERN, END_PATTERN, TS_HINTS, TS_CONVENTIONS, PYTHON_HINTS, PYTHON_CONVENTIONS, DEFAULT_INCLUDE_PATTERNS, CODE_BLOCK_LANGUAGES, DEFAULT_DRIFT_CONFIG, JS_EXT_FALLBACKS2, FILE_TYPES, EXPORT_TYPES, CONVENTION_DESCRIPTIONS, RULE_CHECKERS, EntropyAnalyzer, readFile62, writeFile32, unlink22, mkdir22, copyFile2, DEFAULT_FIX_CONFIG, EXPORT_TYPE_KEYWORD, ALWAYS_UNSAFE_TYPES, idCounter, DEAD_CODE_FIX_ACTIONS, MustExportRuleSchema, MustExportDefaultRuleSchema, NoExportRuleSchema, MustImportRuleSchema, NoImportRuleSchema, NamingRuleSchema, MaxExportsRuleSchema, MaxLinesRuleSchema, RequireJSDocRuleSchema, RuleSchema, ConfigPatternSchema, PatternConfigSchema, DriftConfigSchema, DeadCodeConfigSchema, EntropyConfigSchema, BaselineManager, BenchmarkRunner, RegressionDetector, SOURCE_EXTENSIONS, FUNCTION_DECL_RE, CONST_DECL_RE, CriticalPathResolver, NoOpTelemetryAdapter, NoOpExecutor, ConsoleSink, feedbackConfig, ChecklistBuilder, AgentActionEmitter, globalEmitter, FileSink, NoOpSink, CategorySnapshotSchema, TimelineSnapshotSchema, TimelineFileSchema, TrendLineSchema, TrendResultSchema, DEFAULT_STABILITY_THRESHOLDS, ALL_CATEGORIES, TimelineManager, ConfidenceTierSchema, RegressionResultSchema, DirectionSchema, CategoryForecastSchema, SpecImpactSignalsSchema, SpecImpactEstimateSchema, ContributingFeatureSchema, AdjustedForecastSchema, PredictionWarningSchema, StabilityForecastSchema, PredictionResultSchema, PredictionOptionsSchema, VALID_STATUSES, EM_DASH, VALID_PRIORITIES, ALL_CATEGORIES2, DIRECTION_THRESHOLD, PredictionEngine, DEFAULT_COEFFICIENTS, SpecImpactEstimator, EMPTY_HISTORY, ViolationHistoryManager, NORMALIZERS, MAX_SAMPLES, DEFAULT_WINDOW_WEEKS, DEFAULT_MIN_OCCURRENCES, FailureEntrySchema, HandoffSchema, GateCheckSchema, GateResultSchema, GateConfigSchema, HarnessStateSchema, DEFAULT_STATE, StreamInfoSchema, StreamIndexSchema, DEFAULT_STREAM_INDEX, HARNESS_DIR, STATE_FILE, LEARNINGS_FILE, FAILURES_FILE, HANDOFF_FILE, GATE_CONFIG_FILE, INDEX_FILE, SESSIONS_DIR, SESSION_INDEX_FILE, SUMMARY_FILE, SESSION_STATE_FILE, ARCHIVE_DIR, CONTENT_HASHES_FILE, EVENTS_FILE, STREAMS_DIR, STREAM_NAME_REGEX, branchCache, BRANCH_CACHE_TTL_MS, STATE_FILES, MAX_CACHE_ENTRIES, learningsCacheMap, WEIGHTS, LOCK_RETRIES, LOCK_BACKOFFS, PROMOTABLE_OUTCOMES, failuresCacheMap, FAILURE_LINE_REGEX, SAFE_GATE_COMMAND, SkillEventSchema, knownHashesCache, EVENT_FORMATTERS, RuleRegistry, DEFAULT_SECURITY_CONFIG, RuleOverrideSchema, SecurityConfigSchema, secretRules, injectionRules, xssRules, cryptoRules, pathTraversalRules, networkRules, deserializationRules, agentConfigRules, mcpRules, insecureDefaultsRules, sharpEdgesRules, nodeRules, expressRules, reactRules, goRules, SecurityScanner, hiddenUnicodePatterns, reRolingPatterns, permissionEscalationPatterns, encodedPayloadPatterns, indirectInjectionPatterns, contextManipulationPatterns, socialEngineeringPatterns, suspiciousPatterns, ALL_PATTERNS, DESTRUCTIVE_BASH, TAINT_DURATION_MS, DEFAULT_SESSION_ID, SecurityCategorySnapshotSchema, SupplyChainSnapshotSchema, SecurityTimelineSnapshotSchema, FindingLifecycleSchema, SecurityTimelineFileSchema, DirectionSchema2, SecurityTrendLineSchema, TrendAttributionSchema, SecurityTrendResultSchema, TimeToFixStatsSchema, TimeToFixResultSchema, EMPTY_SUPPLY_CHAIN, SecurityTimelineManager, ALL_CHECKS, STATUS_ICONS, CINotifier, ExclusionSet, PREFIX_PATTERNS, TEST_FILE_PATTERN, MD_FILE_PATTERN, ALL_DOMAINS, SECURITY_PATTERNS, JS_EXT_FALLBACKS22, SEVERITY_RANK, SEVERITY_ORDER, SEVERITY_LABELS, VALIDATED_BY_RANK, VALIDATION_SCORES, DOMAIN_BASELINES, FACTOR_WEIGHTS, EVIDENCE_SATURATION, CORROBORATED_AGREEMENT, STANDALONE_AGREEMENT, AGREEMENT_LINE_GAP, COMPLIANCE_DESCRIPTOR, EXPORT_RE, BUG_DETECTION_DESCRIPTOR, SECURITY_DESCRIPTOR, EVAL_PATTERN, SECRET_PATTERNS, SQL_CONCAT_PATTERN, SHELL_EXEC_PATTERN, ARCHITECTURE_DESCRIPTOR, LARGE_FILE_THRESHOLD, VIOLATION_FILE_RE, LEARNINGS_DESCRIPTOR, RELEVANCE_THRESHOLD, AGENT_DESCRIPTORS, AGENT_RUNNERS, DOWNGRADE_MAP, DEFAULT_PROVIDER_TIERS, SMALL_SUGGESTION_LINE_LIMIT, FILE_LINE_RANGE_PATTERN, FILE_LINE_PATTERN, FILE_ONLY_PATTERN, SECURITY_SENSITIVE_PATH, MIGRATION_PATH, TEST_PATH, CONFIG_PATH, STAGE_DOMAINS, EM_DASH2, STATUS_RANK, RETRY_DEFAULTS, GitHubIssuesSyncAdapter, syncMutex, PRIORITY_RANK, PRIORITY_RANK2, POSITION_WEIGHT, DEPENDENTS_WEIGHT, AFFINITY_WEIGHT, ConflictError, DEFAULTS, GitHubHttp, ETagStore, START_MARKER, END_MARKER, SERIALIZER_FIELDS, GitHubIssuesTrackerAdapter, migrate_exports, HASH_RE, InteractionTypeSchema, QuestionSchema, ConfirmationSchema, TransitionSchema, EmitInteractionInputSchema, ProjectScanner, SHELL_TEMPLATE, STYLES, SCRIPTS, MockLLMService, llmService, ContentPipeline, BlueprintGenerator, TOKENS_PER_MILLION, fallback_default, LITELLM_PRICING_URL, CACHE_TTL_MS, STALENESS_WARNING_DAYS, MICRODOLLARS_PER_DOLLAR, TOKENS_PER_MILLION2, StructuralStrategy, DEFAULT_TOKEN_BUDGET, CHARS_PER_TOKEN, TRUNCATION_MARKER, TruncationStrategy, CompactionPipeline, STABILITY_LOOKUP, TIER_ORDER, AnthropicCacheAdapter, TIER_ORDER2, OpenAICacheAdapter, TIER_ORDER3, CACHED_CONTENT_MARKER, GeminiCacheAdapter, VERSION, POSTHOG_BATCH_URL, MAX_ATTEMPTS, TIMEOUT_MS, CompoundLockHeldError, KNOWN_CATEGORIES, ALLOWED_FIELD_KEYS, PII_TOKENS, PII_FIELD_DENYLIST, PII_LINE_RE, ALLOWED_SET, PulseAdapterAlreadyRegisteredError, REGISTRY, MOCK_ADAPTER_NAME, ALLOWED_FIELD_SET, adapter, LOOKBACK_RE, MAX_LINES, INLINE_TEMPLATE, TRUNCATION_MARKER2, execFileAsync, FIX_RE, EMPTY_REPO_RE, execFileAsync2, TRACK_CATEGORIES2, STOPWORDS, KEYWORD_TO_CATEGORY;
15731
+ var WHATWG_BAD_PORTS, BAD_PORT_SET, VALID_TYPES, CONVENTIONAL_PATTERN, LOOKBACK_PATTERN, PulseDbSourceSchema, PulseSourcesSchema, PulseConfigSchema, BUG_TRACK_CATEGORIES, KNOWLEDGE_TRACK_CATEGORIES, ALL_SOLUTION_CATEGORIES, ISO_DATE, BugTrackSchema, KnowledgeTrackSchema, BaseFrontmatter, SolutionDocFrontmatterSchema, TRACK_CATEGORIES, DEFAULT_AGNIX_TIMEOUT_MS, HARNESS_AGNIX_DISABLE, HARNESS_AGNIX_BIN, CLAUDE_MD_WARN_BYTES, CLAUDE_MD_ERROR_BYTES, CONTEXT_FILES, MIN_DESCRIPTION_LENGTH, SETTINGS_PATHS, KNOWN_HOOK_EVENTS, MCP_SETTINGS_FILES, REQUIRED_SECTIONS, SETTINGS_FILES, KNOWN_AGNIX_TOOLS, KEBAB_CASE, TICKET_ID, DEFAULT_SECTIONS, DEFAULT_RATIOS, NODE_TYPE_TO_CATEGORY, SECTION_LEVEL_MAP, DEFAULT_LEVEL, DEFAULT_BUDGET, DEFAULT_LOADER_CONFIG, LEVEL_FRACTIONS, PHASE_PRIORITIES, ManifestSchema, BundleConstraintsSchema, BundleSchema, ContributionsSchema, LockfilePackageSchema, LockfileSchema, SharableLayerSchema, SharableForbiddenImportSchema, SharableBoundaryConfigSchema, SharableSecurityRulesSchema, VALID_SCOPES, LINE_PATTERN, START_PATTERN, END_PATTERN, TS_HINTS, TS_CONVENTIONS, PYTHON_HINTS, PYTHON_CONVENTIONS, DEFAULT_INCLUDE_PATTERNS, CODE_BLOCK_LANGUAGES, DEFAULT_DRIFT_CONFIG, JS_EXT_FALLBACKS2, FILE_TYPES, EXPORT_TYPES, CONVENTION_DESCRIPTIONS, RULE_CHECKERS, EntropyAnalyzer, readFile62, writeFile32, unlink22, mkdir22, copyFile2, DEFAULT_FIX_CONFIG, EXPORT_TYPE_KEYWORD, ALWAYS_UNSAFE_TYPES, idCounter, DEAD_CODE_FIX_ACTIONS, MustExportRuleSchema, MustExportDefaultRuleSchema, NoExportRuleSchema, MustImportRuleSchema, NoImportRuleSchema, NamingRuleSchema, MaxExportsRuleSchema, MaxLinesRuleSchema, RequireJSDocRuleSchema, RuleSchema, ConfigPatternSchema, PatternConfigSchema, DriftConfigSchema, DeadCodeConfigSchema, EntropyConfigSchema, BaselineManager, BenchmarkRunner, RegressionDetector, SOURCE_EXTENSIONS, FUNCTION_DECL_RE, CONST_DECL_RE, CriticalPathResolver, NoOpTelemetryAdapter, NoOpExecutor, ConsoleSink, feedbackConfig, ChecklistBuilder, AgentActionEmitter, globalEmitter, FileSink, NoOpSink, CategorySnapshotSchema, TimelineSnapshotSchema, TimelineFileSchema, TrendLineSchema, TrendResultSchema, DEFAULT_STABILITY_THRESHOLDS, ALL_CATEGORIES, TimelineManager, ConfidenceTierSchema, RegressionResultSchema, DirectionSchema, CategoryForecastSchema, SpecImpactSignalsSchema, SpecImpactEstimateSchema, ContributingFeatureSchema, AdjustedForecastSchema, PredictionWarningSchema, StabilityForecastSchema, PredictionResultSchema, PredictionOptionsSchema, VALID_STATUSES, EM_DASH, VALID_PRIORITIES, ALL_CATEGORIES2, DIRECTION_THRESHOLD, PredictionEngine, DEFAULT_COEFFICIENTS, SpecImpactEstimator, EMPTY_HISTORY, ViolationHistoryManager, NORMALIZERS, MAX_SAMPLES, DEFAULT_WINDOW_WEEKS, DEFAULT_MIN_OCCURRENCES, FailureEntrySchema, HandoffSchema, GateCheckSchema, GateResultSchema, GateConfigSchema, HarnessStateSchema, DEFAULT_STATE, StreamInfoSchema, StreamIndexSchema, DEFAULT_STREAM_INDEX, HARNESS_DIR, STATE_FILE, LEARNINGS_FILE, FAILURES_FILE, HANDOFF_FILE, GATE_CONFIG_FILE, INDEX_FILE, SESSIONS_DIR, SESSION_INDEX_FILE, SUMMARY_FILE, SESSION_STATE_FILE, ARCHIVE_DIR, CONTENT_HASHES_FILE, EVENTS_FILE, STREAMS_DIR, STREAM_NAME_REGEX, branchCache, BRANCH_CACHE_TTL_MS, STATE_FILES, MAX_CACHE_ENTRIES, learningsCacheMap, WEIGHTS, LOCK_RETRIES, LOCK_BACKOFFS, PROMOTABLE_OUTCOMES, failuresCacheMap, FAILURE_LINE_REGEX, SAFE_GATE_COMMAND, SkillEventSchema, knownHashesCache, EVENT_FORMATTERS, RuleRegistry, DEFAULT_SECURITY_CONFIG, RuleOverrideSchema, SecurityConfigSchema, secretRules, injectionRules, xssRules, cryptoRules, pathTraversalRules, networkRules, deserializationRules, agentConfigRules, mcpRules, insecureDefaultsRules, sharpEdgesRules, nodeRules, expressRules, reactRules, goRules, SecurityScanner, hiddenUnicodePatterns, reRolingPatterns, permissionEscalationPatterns, encodedPayloadPatterns, indirectInjectionPatterns, contextManipulationPatterns, socialEngineeringPatterns, suspiciousPatterns, ALL_PATTERNS, DESTRUCTIVE_BASH, TAINT_DURATION_MS, DEFAULT_SESSION_ID, SecurityCategorySnapshotSchema, SupplyChainSnapshotSchema, SecurityTimelineSnapshotSchema, FindingLifecycleSchema, SecurityTimelineFileSchema, DirectionSchema2, SecurityTrendLineSchema, TrendAttributionSchema, SecurityTrendResultSchema, TimeToFixStatsSchema, TimeToFixResultSchema, EMPTY_SUPPLY_CHAIN, SecurityTimelineManager, ALL_CHECKS, STATUS_ICONS, CINotifier, ExclusionSet, PREFIX_PATTERNS, TEST_FILE_PATTERN, MD_FILE_PATTERN, ALL_DOMAINS, SECURITY_PATTERNS, JS_EXT_FALLBACKS22, SEVERITY_RANK, SEVERITY_ORDER, SEVERITY_LABELS, VALIDATED_BY_RANK, VALIDATION_SCORES, DOMAIN_BASELINES, FACTOR_WEIGHTS, EVIDENCE_SATURATION, CORROBORATED_AGREEMENT, STANDALONE_AGREEMENT, AGREEMENT_LINE_GAP, COMPLIANCE_DESCRIPTOR, EXPORT_RE, BUG_DETECTION_DESCRIPTOR, SECURITY_DESCRIPTOR, EVAL_PATTERN, SECRET_PATTERNS, SQL_CONCAT_PATTERN, SHELL_EXEC_PATTERN, ARCHITECTURE_DESCRIPTOR, LARGE_FILE_THRESHOLD, VIOLATION_FILE_RE, LEARNINGS_DESCRIPTOR, RELEVANCE_THRESHOLD, AGENT_DESCRIPTORS, AGENT_RUNNERS, DOWNGRADE_MAP, DEFAULT_PROVIDER_TIERS, SMALL_SUGGESTION_LINE_LIMIT, FILE_LINE_RANGE_PATTERN, FILE_LINE_PATTERN, FILE_ONLY_PATTERN, SECURITY_SENSITIVE_PATH, MIGRATION_PATH, TEST_PATH, CONFIG_PATH, STAGE_DOMAINS, EM_DASH2, STATUS_RANK, RETRY_DEFAULTS, GitHubIssuesSyncAdapter, syncMutex, PRIORITY_RANK, PRIORITY_RANK2, POSITION_WEIGHT, DEPENDENTS_WEIGHT, AFFINITY_WEIGHT, ConflictError, DEFAULTS, GitHubHttp, ETagStore, START_MARKER, END_MARKER, SERIALIZER_FIELDS, GitHubIssuesTrackerAdapter, migrate_exports, HASH_RE, InteractionTypeSchema, QuestionSchema, ConfirmationSchema, TransitionSchema, EmitInteractionInputSchema, ProjectScanner, SHELL_TEMPLATE, STYLES, SCRIPTS, MockLLMService, llmService, ContentPipeline, BlueprintGenerator, TOKENS_PER_MILLION, fallback_default, LITELLM_PRICING_URL, CACHE_TTL_MS, STALENESS_WARNING_DAYS, MICRODOLLARS_PER_DOLLAR, TOKENS_PER_MILLION2, StructuralStrategy, DEFAULT_TOKEN_BUDGET, CHARS_PER_TOKEN, TRUNCATION_MARKER, TruncationStrategy, CompactionPipeline, STABILITY_LOOKUP, TIER_ORDER, AnthropicCacheAdapter, TIER_ORDER2, OpenAICacheAdapter, TIER_ORDER3, CACHED_CONTENT_MARKER, GeminiCacheAdapter, VERSION, POSTHOG_BATCH_URL, MAX_ATTEMPTS, TIMEOUT_MS, DEFAULT_CAPACITY, CacheMetricsRecorder, RETRY_BACKOFFS_MS, OTLPExporter, SpanKind, CompoundLockHeldError, KNOWN_CATEGORIES, ALLOWED_FIELD_KEYS, PII_TOKENS, PII_FIELD_DENYLIST, PII_LINE_RE, ALLOWED_SET, PulseAdapterAlreadyRegisteredError, REGISTRY, MOCK_ADAPTER_NAME, ALLOWED_FIELD_SET, adapter, LOOKBACK_RE, MAX_LINES, INLINE_TEMPLATE, TRUNCATION_MARKER2, execFileAsync, FIX_RE, EMPTY_REPO_RE, execFileAsync2, TRACK_CATEGORIES2, STOPWORDS, KEYWORD_TO_CATEGORY;
15671
15732
  var init_dist3 = __esm({
15672
15733
  "../core/dist/index.mjs"() {
15673
15734
  init_chunk_4UI65RLE();
@@ -21491,10 +21552,199 @@ console.log('Blueprint player initialized.');
21491
21552
  };
21492
21553
  }
21493
21554
  };
21494
- VERSION = "0.23.3";
21555
+ VERSION = "0.25.0";
21495
21556
  POSTHOG_BATCH_URL = "https://app.posthog.com/batch";
21496
21557
  MAX_ATTEMPTS = 3;
21497
21558
  TIMEOUT_MS = 5e3;
21559
+ DEFAULT_CAPACITY = 1e3;
21560
+ CacheMetricsRecorder = class {
21561
+ capacity;
21562
+ now;
21563
+ buffer = [];
21564
+ windowStartedAt = 0;
21565
+ constructor(opts = {}) {
21566
+ this.capacity = opts.capacity ?? DEFAULT_CAPACITY;
21567
+ this.now = opts.now ?? Date.now;
21568
+ }
21569
+ /**
21570
+ * Append a single cache observation. Hot-path: O(1) amortized, no
21571
+ * allocations beyond the sample object itself.
21572
+ */
21573
+ record(backendId, hit, tokensCreated, tokensRead) {
21574
+ if (this.windowStartedAt === 0) this.windowStartedAt = this.now();
21575
+ if (this.buffer.length >= this.capacity) this.buffer.shift();
21576
+ this.buffer.push({ backendId, hit, tokensCreated, tokensRead });
21577
+ }
21578
+ /** Aggregate the current window into a `PromptCacheStats` snapshot. */
21579
+ getStats() {
21580
+ let hits = 0;
21581
+ let misses = 0;
21582
+ const byBackend = {};
21583
+ for (const s of this.buffer) {
21584
+ if (s.hit) hits++;
21585
+ else misses++;
21586
+ const slot = byBackend[s.backendId] ?? { hits: 0, misses: 0 };
21587
+ if (s.hit) slot.hits++;
21588
+ else slot.misses++;
21589
+ byBackend[s.backendId] = slot;
21590
+ }
21591
+ const totalRequests = hits + misses;
21592
+ const hitRate = totalRequests === 0 ? 0 : hits / totalRequests;
21593
+ return {
21594
+ totalRequests,
21595
+ hits,
21596
+ misses,
21597
+ hitRate,
21598
+ byBackend,
21599
+ windowStartedAt: this.windowStartedAt
21600
+ };
21601
+ }
21602
+ /** Clear the buffer and reset the window-start marker. */
21603
+ reset() {
21604
+ this.buffer.length = 0;
21605
+ this.windowStartedAt = 0;
21606
+ }
21607
+ };
21608
+ RETRY_BACKOFFS_MS = [1e3, 2e3, 4e3];
21609
+ OTLPExporter = class {
21610
+ endpoint;
21611
+ enabled;
21612
+ headers;
21613
+ flushIntervalMs;
21614
+ batchSize;
21615
+ fetchImpl;
21616
+ warn;
21617
+ buffer = [];
21618
+ timer = null;
21619
+ inFlightFlushes = /* @__PURE__ */ new Set();
21620
+ constructor(opts) {
21621
+ this.endpoint = opts.endpoint;
21622
+ this.enabled = opts.enabled !== false;
21623
+ this.headers = { "Content-Type": "application/json", ...opts.headers ?? {} };
21624
+ this.flushIntervalMs = opts.flushIntervalMs ?? 2e3;
21625
+ this.batchSize = opts.batchSize ?? 64;
21626
+ this.fetchImpl = opts.fetchImpl ?? globalThis.fetch.bind(globalThis);
21627
+ this.warn = opts.warn ?? ((...a) => console.warn(...a));
21628
+ }
21629
+ /**
21630
+ * O(1) buffer push. When `enabled === false` this is a no-op. If the
21631
+ * buffer reaches `batchSize`, a flush is triggered without awaiting.
21632
+ */
21633
+ push(span) {
21634
+ if (!this.enabled) return;
21635
+ this.buffer.push(span);
21636
+ if (this.buffer.length >= this.batchSize) {
21637
+ void this.flush();
21638
+ }
21639
+ }
21640
+ /** Start the periodic flush timer. Idempotent. */
21641
+ start() {
21642
+ if (!this.enabled || this.timer !== null) return;
21643
+ this.timer = setInterval(() => {
21644
+ void this.flush();
21645
+ }, this.flushIntervalMs);
21646
+ if (typeof this.timer.unref === "function") {
21647
+ this.timer.unref();
21648
+ }
21649
+ }
21650
+ /** Flush any pending spans and stop the timer. Awaits all in-flight flushes. */
21651
+ async stop() {
21652
+ if (this.timer !== null) {
21653
+ clearInterval(this.timer);
21654
+ this.timer = null;
21655
+ }
21656
+ void this.flush();
21657
+ while (this.inFlightFlushes.size > 0) {
21658
+ await Promise.all([...this.inFlightFlushes]);
21659
+ }
21660
+ }
21661
+ /**
21662
+ * Synchronously claim the current buffer and POST it to `/v1/traces`.
21663
+ * Each invocation runs independently — concurrent flushes (e.g. one
21664
+ * from the timer, one from a `batchSize` trip) each drain their own
21665
+ * batch. Retries up to 3 times on transport or 5xx failure, then
21666
+ * drops with a single warning.
21667
+ */
21668
+ flush() {
21669
+ if (this.buffer.length === 0) return Promise.resolve();
21670
+ const batch = this.buffer;
21671
+ this.buffer = [];
21672
+ const payload = this.spansToOTLPJSON(batch);
21673
+ const work = (async () => {
21674
+ let lastError = null;
21675
+ for (let attempt = 0; attempt < RETRY_BACKOFFS_MS.length; attempt++) {
21676
+ try {
21677
+ const response = await this.fetchImpl(this.endpoint, {
21678
+ method: "POST",
21679
+ headers: this.headers,
21680
+ body: JSON.stringify(payload)
21681
+ });
21682
+ if (response.ok) return;
21683
+ try {
21684
+ await response.text();
21685
+ } catch {
21686
+ }
21687
+ lastError = new Error(`OTLP endpoint returned ${response.status}`);
21688
+ } catch (err) {
21689
+ lastError = err;
21690
+ }
21691
+ const backoff = RETRY_BACKOFFS_MS[attempt] ?? 0;
21692
+ if (attempt < RETRY_BACKOFFS_MS.length - 1) {
21693
+ await new Promise((resolve10) => setTimeout(resolve10, backoff));
21694
+ }
21695
+ }
21696
+ this.warn(
21697
+ `[harness telemetry] dropping ${batch.length} span(s) after 3 failed OTLP attempts:`,
21698
+ lastError
21699
+ );
21700
+ })();
21701
+ this.inFlightFlushes.add(work);
21702
+ void work.finally(() => this.inFlightFlushes.delete(work));
21703
+ return work;
21704
+ }
21705
+ /**
21706
+ * Build the OTLP/HTTP JSON envelope for a batch of spans. Public for
21707
+ * tests; not part of the supported API surface.
21708
+ */
21709
+ spansToOTLPJSON(spans) {
21710
+ return {
21711
+ resourceSpans: [
21712
+ {
21713
+ resource: {
21714
+ attributes: [{ key: "service.name", value: { stringValue: "harness" } }]
21715
+ },
21716
+ scopeSpans: [
21717
+ {
21718
+ scope: { name: "harness" },
21719
+ spans: spans.map((s) => {
21720
+ const span = {
21721
+ traceId: s.traceId,
21722
+ spanId: s.spanId,
21723
+ name: s.name,
21724
+ kind: s.kind,
21725
+ startTimeUnixNano: toUnixNanoString(s.startTimeNs),
21726
+ endTimeUnixNano: toUnixNanoString(s.endTimeNs),
21727
+ attributes: attributesToOTLP(s.attributes)
21728
+ };
21729
+ if (s.parentSpanId !== void 0) span["parentSpanId"] = s.parentSpanId;
21730
+ if (s.statusCode !== void 0) span["status"] = { code: s.statusCode };
21731
+ return span;
21732
+ })
21733
+ }
21734
+ ]
21735
+ }
21736
+ ]
21737
+ };
21738
+ }
21739
+ };
21740
+ SpanKind = /* @__PURE__ */ ((SpanKind2) => {
21741
+ SpanKind2[SpanKind2["INTERNAL"] = 1] = "INTERNAL";
21742
+ SpanKind2[SpanKind2["SERVER"] = 2] = "SERVER";
21743
+ SpanKind2[SpanKind2["CLIENT"] = 3] = "CLIENT";
21744
+ SpanKind2[SpanKind2["PRODUCER"] = 4] = "PRODUCER";
21745
+ SpanKind2[SpanKind2["CONSUMER"] = 5] = "CONSUMER";
21746
+ return SpanKind2;
21747
+ })(SpanKind || {});
21498
21748
  CompoundLockHeldError = class extends Error {
21499
21749
  constructor(category, holderPid, lockPath) {
21500
21750
  super(
@@ -22020,6 +22270,7 @@ export {
22020
22270
  BlueprintGenerator,
22021
22271
  isUpdateCheckEnabled,
22022
22272
  shouldRunCheck,
22273
+ invalidateCheckState,
22023
22274
  readCheckState,
22024
22275
  spawnBackgroundCheck,
22025
22276
  getUpdateNotification,
@@ -22057,6 +22308,9 @@ export {
22057
22308
  VERSION,
22058
22309
  collectEvents,
22059
22310
  send,
22311
+ CacheMetricsRecorder,
22312
+ OTLPExporter,
22313
+ SpanKind,
22060
22314
  CompoundLockHeldError,
22061
22315
  acquireCompoundLock,
22062
22316
  ALLOWED_FIELD_KEYS,
@@ -15,7 +15,7 @@ function evictIfNeeded() {
15
15
  }
16
16
  }
17
17
  async function doLoadGraphStore(projectRoot) {
18
- const { GraphStore } = await import("./dist-SQAOKWXM.js");
18
+ const { GraphStore } = await import("./dist-QPWXPCPL.js");
19
19
  const graphDir = path.join(projectRoot, ".harness", "graph");
20
20
  const store = new GraphStore();
21
21
  const loaded = await store.load(graphDir);
@@ -41,7 +41,7 @@ async function runScan(projectPath) {
41
41
  KnowledgeIngestor,
42
42
  GitIngestor,
43
43
  RequirementIngestor
44
- } = await import("./dist-SQAOKWXM.js");
44
+ } = await import("./dist-QPWXPCPL.js");
45
45
  const store = new GraphStore();
46
46
  const start = Date.now();
47
47
  const ingestOptions = loadIngestOptions(projectPath);