@warlock.js/ai-panoptic 4.8.2 → 4.9.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 (151) hide show
  1. package/cjs/index.cjs +31 -31
  2. package/cjs/index.cjs.map +1 -1
  3. package/esm/collector/collector.d.mts +1 -1
  4. package/esm/collector/collector.d.mts.map +1 -1
  5. package/esm/collector/collector.mjs +1 -1
  6. package/esm/collector/collector.mjs.map +1 -1
  7. package/esm/collector/content-capture.type.d.mts +1 -1
  8. package/esm/collector/content-capture.type.d.mts.map +1 -1
  9. package/esm/collector/extract-span-attributes.d.mts +1 -1
  10. package/esm/collector/extract-span-attributes.d.mts.map +1 -1
  11. package/esm/collector/extract-span-attributes.mjs +1 -1
  12. package/esm/collector/extract-span-attributes.mjs.map +1 -1
  13. package/esm/collector/normalize-error.d.mts +1 -1
  14. package/esm/collector/normalize-error.d.mts.map +1 -1
  15. package/esm/collector/normalize-error.mjs +1 -1
  16. package/esm/collector/normalize-error.mjs.map +1 -1
  17. package/esm/collector/report-to-span.d.mts +1 -1
  18. package/esm/collector/report-to-span.d.mts.map +1 -1
  19. package/esm/collector/report-to-span.mjs +1 -1
  20. package/esm/collector/report-to-span.mjs.map +1 -1
  21. package/esm/collector/report-to-trace.d.mts +1 -1
  22. package/esm/collector/report-to-trace.d.mts.map +1 -1
  23. package/esm/collector/report-to-trace.mjs +1 -1
  24. package/esm/collector/report-to-trace.mjs.map +1 -1
  25. package/esm/config/apply-panoptic-config.d.mts +1 -1
  26. package/esm/config/apply-panoptic-config.d.mts.map +1 -1
  27. package/esm/config/apply-panoptic-config.mjs +1 -1
  28. package/esm/config/apply-panoptic-config.mjs.map +1 -1
  29. package/esm/config/panoptic-config.type.d.mts +1 -1
  30. package/esm/config/panoptic-config.type.d.mts.map +1 -1
  31. package/esm/contracts/collector.contract.d.mts +1 -1
  32. package/esm/contracts/collector.contract.d.mts.map +1 -1
  33. package/esm/contracts/exporter.contract.d.mts +1 -1
  34. package/esm/contracts/exporter.contract.d.mts.map +1 -1
  35. package/esm/contracts/trace.type.d.mts +1 -1
  36. package/esm/contracts/trace.type.d.mts.map +1 -1
  37. package/esm/dashboard/dashboard.d.mts +1 -1
  38. package/esm/dashboard/dashboard.d.mts.map +1 -1
  39. package/esm/dashboard/dashboard.mjs +1 -1
  40. package/esm/dashboard/dashboard.mjs.map +1 -1
  41. package/esm/dashboard/dashboard.type.d.mts +1 -1
  42. package/esm/dashboard/dashboard.type.d.mts.map +1 -1
  43. package/esm/dashboard/parse-query.mjs +1 -1
  44. package/esm/dashboard/parse-query.mjs.map +1 -1
  45. package/esm/dashboard/serve.mjs +1 -1
  46. package/esm/dashboard/serve.mjs.map +1 -1
  47. package/esm/dashboard/trace-filter.d.mts +1 -1
  48. package/esm/dashboard/trace-filter.d.mts.map +1 -1
  49. package/esm/dashboard/trace-filter.mjs +1 -1
  50. package/esm/dashboard/trace-filter.mjs.map +1 -1
  51. package/esm/dashboard/ui.html.mjs +1 -1
  52. package/esm/dashboard/ui.html.mjs.map +1 -1
  53. package/esm/dashboard/warlock-logo.mjs +1 -1
  54. package/esm/dashboard/warlock-logo.mjs.map +1 -1
  55. package/esm/evaluate/evaluate-system-prompt.d.mts +1 -1
  56. package/esm/evaluate/evaluate-system-prompt.d.mts.map +1 -1
  57. package/esm/evaluate/evaluate-system-prompt.mjs +1 -1
  58. package/esm/evaluate/evaluate-system-prompt.mjs.map +1 -1
  59. package/esm/evaluate/evaluate.type.d.mts +1 -1
  60. package/esm/evaluate/evaluate.type.d.mts.map +1 -1
  61. package/esm/evaluate/extract-last-system-prompt.d.mts +1 -1
  62. package/esm/evaluate/extract-last-system-prompt.d.mts.map +1 -1
  63. package/esm/evaluate/extract-last-system-prompt.mjs +1 -1
  64. package/esm/evaluate/extract-last-system-prompt.mjs.map +1 -1
  65. package/esm/evaluate/find-span-by-id.d.mts +1 -1
  66. package/esm/evaluate/find-span-by-id.d.mts.map +1 -1
  67. package/esm/evaluate/find-span-by-id.mjs +1 -1
  68. package/esm/evaluate/find-span-by-id.mjs.map +1 -1
  69. package/esm/exporters/console/console-exporter.d.mts +1 -1
  70. package/esm/exporters/console/console-exporter.d.mts.map +1 -1
  71. package/esm/exporters/console/console-exporter.mjs +1 -1
  72. package/esm/exporters/console/console-exporter.mjs.map +1 -1
  73. package/esm/exporters/console/console-exporter.type.d.mts +1 -1
  74. package/esm/exporters/console/console-exporter.type.d.mts.map +1 -1
  75. package/esm/exporters/console/format-span-io.d.mts +1 -1
  76. package/esm/exporters/console/format-span-io.d.mts.map +1 -1
  77. package/esm/exporters/console/format-span-io.mjs +1 -1
  78. package/esm/exporters/console/format-span-io.mjs.map +1 -1
  79. package/esm/exporters/console/format-span-line.d.mts +1 -1
  80. package/esm/exporters/console/format-span-line.d.mts.map +1 -1
  81. package/esm/exporters/console/format-span-line.mjs +1 -1
  82. package/esm/exporters/console/format-span-line.mjs.map +1 -1
  83. package/esm/exporters/file/file-exporter.d.mts +1 -1
  84. package/esm/exporters/file/file-exporter.d.mts.map +1 -1
  85. package/esm/exporters/file/file-exporter.mjs +1 -1
  86. package/esm/exporters/file/file-exporter.mjs.map +1 -1
  87. package/esm/exporters/file/file-exporter.type.d.mts +1 -1
  88. package/esm/exporters/file/file-exporter.type.d.mts.map +1 -1
  89. package/esm/exporters/langfuse/langfuse-exporter.d.mts +1 -1
  90. package/esm/exporters/langfuse/langfuse-exporter.d.mts.map +1 -1
  91. package/esm/exporters/langfuse/langfuse-exporter.mjs +1 -1
  92. package/esm/exporters/langfuse/langfuse-exporter.mjs.map +1 -1
  93. package/esm/exporters/langfuse/langfuse-exporter.type.d.mts +1 -1
  94. package/esm/exporters/langfuse/langfuse-exporter.type.d.mts.map +1 -1
  95. package/esm/exporters/otel/otel-api.shim.type.d.mts +1 -1
  96. package/esm/exporters/otel/otel-api.shim.type.d.mts.map +1 -1
  97. package/esm/exporters/otel/otel-exporter.d.mts +1 -1
  98. package/esm/exporters/otel/otel-exporter.d.mts.map +1 -1
  99. package/esm/exporters/otel/otel-exporter.mjs +1 -1
  100. package/esm/exporters/otel/otel-exporter.mjs.map +1 -1
  101. package/esm/exporters/otel/otel-exporter.type.d.mts +1 -1
  102. package/esm/exporters/otel/otel-exporter.type.d.mts.map +1 -1
  103. package/esm/exporters/utils/gen-ai-attributes.d.mts +1 -1
  104. package/esm/exporters/utils/gen-ai-attributes.d.mts.map +1 -1
  105. package/esm/exporters/utils/gen-ai-attributes.mjs +1 -1
  106. package/esm/exporters/utils/gen-ai-attributes.mjs.map +1 -1
  107. package/esm/exporters/utils/total-cost.d.mts +1 -1
  108. package/esm/exporters/utils/total-cost.d.mts.map +1 -1
  109. package/esm/exporters/utils/total-cost.mjs +1 -1
  110. package/esm/exporters/utils/total-cost.mjs.map +1 -1
  111. package/esm/exporters/utils/walk-spans.d.mts +1 -1
  112. package/esm/exporters/utils/walk-spans.d.mts.map +1 -1
  113. package/esm/exporters/utils/walk-spans.mjs +1 -1
  114. package/esm/exporters/utils/walk-spans.mjs.map +1 -1
  115. package/esm/panoptic/panoptic-middleware.d.mts +1 -1
  116. package/esm/panoptic/panoptic-middleware.d.mts.map +1 -1
  117. package/esm/panoptic/panoptic-middleware.mjs +1 -1
  118. package/esm/panoptic/panoptic-middleware.mjs.map +1 -1
  119. package/esm/panoptic/panoptic-target.type.d.mts +1 -1
  120. package/esm/panoptic/panoptic-target.type.d.mts.map +1 -1
  121. package/esm/panoptic/panoptic.d.mts +1 -1
  122. package/esm/panoptic/panoptic.d.mts.map +1 -1
  123. package/esm/panoptic/panoptic.mjs +1 -1
  124. package/esm/panoptic/panoptic.mjs.map +1 -1
  125. package/esm/panoptic/panoptic.type.d.mts +1 -1
  126. package/esm/panoptic/panoptic.type.d.mts.map +1 -1
  127. package/esm/register.mjs +1 -1
  128. package/esm/register.mjs.map +1 -1
  129. package/esm/store/cache-trace-store.d.mts +1 -1
  130. package/esm/store/cache-trace-store.d.mts.map +1 -1
  131. package/esm/store/cache-trace-store.mjs +1 -1
  132. package/esm/store/cache-trace-store.mjs.map +1 -1
  133. package/esm/store/in-memory-trace-store.d.mts +1 -1
  134. package/esm/store/in-memory-trace-store.d.mts.map +1 -1
  135. package/esm/store/in-memory-trace-store.mjs +1 -1
  136. package/esm/store/in-memory-trace-store.mjs.map +1 -1
  137. package/esm/store/match-trace.d.mts +1 -1
  138. package/esm/store/match-trace.d.mts.map +1 -1
  139. package/esm/store/match-trace.mjs +1 -1
  140. package/esm/store/match-trace.mjs.map +1 -1
  141. package/esm/store/sum-usage.d.mts +1 -1
  142. package/esm/store/sum-usage.d.mts.map +1 -1
  143. package/esm/store/sum-usage.mjs +1 -1
  144. package/esm/store/sum-usage.mjs.map +1 -1
  145. package/esm/store/trace-aggregate.type.d.mts +1 -1
  146. package/esm/store/trace-aggregate.type.d.mts.map +1 -1
  147. package/esm/store/trace-query.type.d.mts +1 -1
  148. package/esm/store/trace-query.type.d.mts.map +1 -1
  149. package/esm/store/trace-store.contract.d.mts +1 -1
  150. package/esm/store/trace-store.contract.d.mts.map +1 -1
  151. package/package.json +4 -4
package/cjs/index.cjs CHANGED
@@ -5,7 +5,7 @@ let node_path = require("node:path");
5
5
  let node_http = require("node:http");
6
6
  let _warlock_js_logger = require("@warlock.js/logger");
7
7
 
8
- //#region ../@warlock.js/ai-panoptic/src/exporters/utils/walk-spans.ts
8
+ //#region ../ai-panoptic/src/exporters/utils/walk-spans.ts
9
9
  /**
10
10
  * Depth-first pre-order traversal of a {@link TraceSpan} tree, yielding
11
11
  * the root first and then each descendant in `children` (invocation)
@@ -24,7 +24,7 @@ function* walkSpans(root) {
24
24
  }
25
25
 
26
26
  //#endregion
27
- //#region ../@warlock.js/ai-panoptic/src/collector/normalize-error.ts
27
+ //#region ../ai-panoptic/src/collector/normalize-error.ts
28
28
  /**
29
29
  * Project a captured execution error onto the structural
30
30
  * {@link TraceSpanError} shape used on a failed / cancelled span.
@@ -72,7 +72,7 @@ function pickString(value) {
72
72
  }
73
73
 
74
74
  //#endregion
75
- //#region ../@warlock.js/ai-panoptic/src/collector/extract-span-attributes.ts
75
+ //#region ../ai-panoptic/src/collector/extract-span-attributes.ts
76
76
  /**
77
77
  * Build the free-form `TraceSpan.attributes` bag for one report node.
78
78
  *
@@ -149,7 +149,7 @@ function addToolAttributes(attributes, extensions) {
149
149
  }
150
150
 
151
151
  //#endregion
152
- //#region ../@warlock.js/ai-panoptic/src/collector/report-to-span.ts
152
+ //#region ../ai-panoptic/src/collector/report-to-span.ts
153
153
  /**
154
154
  * Project one {@link BaseReport} node — and its entire subtree — into a
155
155
  * {@link TraceSpan}. Pure and recursive: identity, timing, status, and
@@ -282,7 +282,7 @@ function lastNonEmptyOutput(trips) {
282
282
  }
283
283
 
284
284
  //#endregion
285
- //#region ../@warlock.js/ai-panoptic/src/collector/report-to-trace.ts
285
+ //#region ../ai-panoptic/src/collector/report-to-trace.ts
286
286
  /**
287
287
  * Project an outermost {@link BaseReport} (one whole `.execute()` /
288
288
  * `.invoke()` run) into a {@link Trace} — the root {@link
@@ -333,7 +333,7 @@ function reportToTrace(report, rootError, options) {
333
333
  }
334
334
 
335
335
  //#endregion
336
- //#region ../@warlock.js/ai-panoptic/src/collector/collector.ts
336
+ //#region ../ai-panoptic/src/collector/collector.ts
337
337
  /**
338
338
  * Drive the source end of the Panoptic pipeline: ingest core
339
339
  * `@warlock.js/ai` {@link BaseReport} trees, project them into {@link
@@ -457,7 +457,7 @@ function createCollector(options = {}) {
457
457
  }
458
458
 
459
459
  //#endregion
460
- //#region ../@warlock.js/ai-panoptic/src/store/match-trace.ts
460
+ //#region ../ai-panoptic/src/store/match-trace.ts
461
461
  /**
462
462
  * Test whether one trace satisfies a {@link TraceQuery}. Every declared
463
463
  * filter field must match (logical AND); absent fields are ignored, so
@@ -499,7 +499,7 @@ function toEpoch(bound) {
499
499
  }
500
500
 
501
501
  //#endregion
502
- //#region ../@warlock.js/ai-panoptic/src/store/sum-usage.ts
502
+ //#region ../ai-panoptic/src/store/sum-usage.ts
503
503
  /**
504
504
  * Fold a child {@link Usage} into a running accumulator. Token channels
505
505
  * (`input` / `output` / `total`) always sum; the optional cache /
@@ -560,7 +560,7 @@ function sumOptional(accumulator, next) {
560
560
  }
561
561
 
562
562
  //#endregion
563
- //#region ../@warlock.js/ai-panoptic/src/store/cache-trace-store.ts
563
+ //#region ../ai-panoptic/src/store/cache-trace-store.ts
564
564
  const DEFAULT_PREFIX = "panoptic";
565
565
  /**
566
566
  * Cache-backed {@link TraceStoreContract} with a **write-through** design
@@ -845,7 +845,7 @@ function createCacheTraceStore(cache, options = {}) {
845
845
  }
846
846
 
847
847
  //#endregion
848
- //#region ../@warlock.js/ai-panoptic/src/store/in-memory-trace-store.ts
848
+ //#region ../ai-panoptic/src/store/in-memory-trace-store.ts
849
849
  /**
850
850
  * In-memory {@link TraceStoreContract} that doubles as an
851
851
  * {@link ExporterContract} — register it on a collector
@@ -981,7 +981,7 @@ function createInMemoryTraceStore(options) {
981
981
  }
982
982
 
983
983
  //#endregion
984
- //#region ../@warlock.js/ai-panoptic/src/exporters/utils/total-cost.ts
984
+ //#region ../ai-panoptic/src/exporters/utils/total-cost.ts
985
985
  /**
986
986
  * Collapse a {@link Usage.cost} breakdown into a single USD scalar by
987
987
  * summing every populated field. Mirrors the formula documented on
@@ -1002,7 +1002,7 @@ function totalCostUsd(usage) {
1002
1002
  }
1003
1003
 
1004
1004
  //#endregion
1005
- //#region ../@warlock.js/ai-panoptic/src/exporters/utils/gen-ai-attributes.ts
1005
+ //#region ../ai-panoptic/src/exporters/utils/gen-ai-attributes.ts
1006
1006
  /**
1007
1007
  * Subset of the OpenTelemetry GenAI semantic-convention attribute keys
1008
1008
  * Panoptic emits. Kept as a named constant map (not inline string
@@ -1090,7 +1090,7 @@ function mergeScalarAttributes(target, source) {
1090
1090
  }
1091
1091
 
1092
1092
  //#endregion
1093
- //#region ../@warlock.js/ai-panoptic/src/exporters/console/format-span-io.ts
1093
+ //#region ../ai-panoptic/src/exporters/console/format-span-io.ts
1094
1094
  /** Default cap on how many characters of captured content a console line shows. */
1095
1095
  const DEFAULT_IO_MAX_CHARS = 500;
1096
1096
  /**
@@ -1140,7 +1140,7 @@ function stringify(value) {
1140
1140
  }
1141
1141
 
1142
1142
  //#endregion
1143
- //#region ../@warlock.js/ai-panoptic/src/exporters/console/format-span-line.ts
1143
+ //#region ../ai-panoptic/src/exporters/console/format-span-line.ts
1144
1144
  /**
1145
1145
  * Render a single {@link TraceSpan} as one scannable console line:
1146
1146
  * `<status> <type> "<name>" — <duration>ms, <tokens> tok[, $<cost>]`.
@@ -1177,7 +1177,7 @@ function statusMarker(status) {
1177
1177
  }
1178
1178
 
1179
1179
  //#endregion
1180
- //#region ../@warlock.js/ai-panoptic/src/exporters/console/console-exporter.ts
1180
+ //#region ../ai-panoptic/src/exporters/console/console-exporter.ts
1181
1181
  const EXPORTER_NAME$3 = "console";
1182
1182
  /**
1183
1183
  * Zero-dependency {@link ExporterContract} that prints traces to a
@@ -1268,7 +1268,7 @@ function spanDepth(root, targetSpanId, depth = 0) {
1268
1268
  }
1269
1269
 
1270
1270
  //#endregion
1271
- //#region ../@warlock.js/ai-panoptic/src/exporters/file/file-exporter.ts
1271
+ //#region ../ai-panoptic/src/exporters/file/file-exporter.ts
1272
1272
  const EXPORTER_NAME$2 = "file";
1273
1273
  /**
1274
1274
  * Zero-dependency {@link ExporterContract} that appends completed traces
@@ -1359,7 +1359,7 @@ var FileTraceWriter = class {
1359
1359
  };
1360
1360
 
1361
1361
  //#endregion
1362
- //#region ../@warlock.js/ai-panoptic/src/exporters/langfuse/langfuse-exporter.ts
1362
+ //#region ../ai-panoptic/src/exporters/langfuse/langfuse-exporter.ts
1363
1363
  const EXPORTER_NAME$1 = "langfuse";
1364
1364
  let LangfuseSdk;
1365
1365
  let isModuleExists$1 = null;
@@ -1563,7 +1563,7 @@ function toLevel(span) {
1563
1563
  }
1564
1564
 
1565
1565
  //#endregion
1566
- //#region ../@warlock.js/ai-panoptic/src/exporters/otel/otel-exporter.ts
1566
+ //#region ../ai-panoptic/src/exporters/otel/otel-exporter.ts
1567
1567
  const EXPORTER_NAME = "otel";
1568
1568
  const DEFAULT_TRACER_NAME = "@warlock.js/ai-panoptic";
1569
1569
  let OtelApi;
@@ -1716,7 +1716,7 @@ function toEpochMillis(isoTimestamp) {
1716
1716
  }
1717
1717
 
1718
1718
  //#endregion
1719
- //#region ../@warlock.js/ai-panoptic/src/panoptic/panoptic-middleware.ts
1719
+ //#region ../ai-panoptic/src/panoptic/panoptic-middleware.ts
1720
1720
  /**
1721
1721
  * Build an {@link AgentMiddleware} that feeds a collector from the
1722
1722
  * `execute`- and `supervisor`-level hooks. An alternative wiring to event
@@ -1782,7 +1782,7 @@ function isReport(value) {
1782
1782
  }
1783
1783
 
1784
1784
  //#endregion
1785
- //#region ../@warlock.js/ai-panoptic/src/panoptic/panoptic.ts
1785
+ //#region ../ai-panoptic/src/panoptic/panoptic.ts
1786
1786
  /**
1787
1787
  * Terminal `*.completed` events of every core primitive that carries the
1788
1788
  * finalized `result` (and therefore the `report` tree). These fire once
@@ -1919,7 +1919,7 @@ function panoptic(options = {}) {
1919
1919
  }
1920
1920
 
1921
1921
  //#endregion
1922
- //#region ../@warlock.js/ai-panoptic/src/evaluate/evaluate-system-prompt.ts
1922
+ //#region ../ai-panoptic/src/evaluate/evaluate-system-prompt.ts
1923
1923
  /**
1924
1924
  * Grade `systemPrompt` with the configured judge model, reusing
1925
1925
  * `ai.prompts().validate()`'s own `judgePromptBody` — never a second
@@ -1937,7 +1937,7 @@ async function evaluateSystemPrompt(systemPrompt, config, instructionsOverride)
1937
1937
  }
1938
1938
 
1939
1939
  //#endregion
1940
- //#region ../@warlock.js/ai-panoptic/src/evaluate/extract-last-system-prompt.ts
1940
+ //#region ../ai-panoptic/src/evaluate/extract-last-system-prompt.ts
1941
1941
  /**
1942
1942
  * Pull the LAST `{role: "system"}` message off a span's captured `input`.
1943
1943
  *
@@ -1959,7 +1959,7 @@ function extractLastSystemPrompt(span) {
1959
1959
  }
1960
1960
 
1961
1961
  //#endregion
1962
- //#region ../@warlock.js/ai-panoptic/src/evaluate/find-span-by-id.ts
1962
+ //#region ../ai-panoptic/src/evaluate/find-span-by-id.ts
1963
1963
  /** Depth-first search for the span with `spanId` inside a trace's span tree. */
1964
1964
  function findSpanById(root, spanId) {
1965
1965
  if (root.spanId === spanId) return root;
@@ -1970,7 +1970,7 @@ function findSpanById(root, spanId) {
1970
1970
  }
1971
1971
 
1972
1972
  //#endregion
1973
- //#region ../@warlock.js/ai-panoptic/src/dashboard/parse-query.ts
1973
+ //#region ../ai-panoptic/src/dashboard/parse-query.ts
1974
1974
  /**
1975
1975
  * The set of terminal statuses a stored trace can carry. Used to keep
1976
1976
  * `parseQuery` from forwarding arbitrary `?status=` junk into the store.
@@ -2022,7 +2022,7 @@ function parseQuery(params) {
2022
2022
  }
2023
2023
 
2024
2024
  //#endregion
2025
- //#region ../@warlock.js/ai-panoptic/src/dashboard/warlock-logo.ts
2025
+ //#region ../ai-panoptic/src/dashboard/warlock-logo.ts
2026
2026
  /**
2027
2027
  * The Warlock logo as an inlined base64 PNG data URI (64x64, ~9KB).
2028
2028
  * Inlined so the dashboard stays a single self-contained, offline-capable
@@ -2033,7 +2033,7 @@ function parseQuery(params) {
2033
2033
  const WARLOCK_LOGO_DATA_URI = "data:image/png;base64,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";
2034
2034
 
2035
2035
  //#endregion
2036
- //#region ../@warlock.js/ai-panoptic/src/dashboard/ui.html.ts
2036
+ //#region ../ai-panoptic/src/dashboard/ui.html.ts
2037
2037
  /**
2038
2038
  * Build the single self-contained dashboard HTML page. No external
2039
2039
  * assets, no bundler, no framework — one inlined string that polls the
@@ -3488,7 +3488,7 @@ function encodeForInlineScript(value) {
3488
3488
  }
3489
3489
 
3490
3490
  //#endregion
3491
- //#region ../@warlock.js/ai-panoptic/src/dashboard/serve.ts
3491
+ //#region ../ai-panoptic/src/dashboard/serve.ts
3492
3492
  /** Hard cap on the evaluate route's request body — well beyond a real instructions string. */
3493
3493
  const MAX_EVALUATE_BODY_BYTES = 64 * 1024;
3494
3494
  /**
@@ -3706,7 +3706,7 @@ async function handleEvaluate(store, evaluate, traceId, spanId, req, res) {
3706
3706
  }
3707
3707
 
3708
3708
  //#endregion
3709
- //#region ../@warlock.js/ai-panoptic/src/dashboard/dashboard.ts
3709
+ //#region ../ai-panoptic/src/dashboard/dashboard.ts
3710
3710
  const DEFAULT_PORT = 4319;
3711
3711
  const DEFAULT_HOST = "127.0.0.1";
3712
3712
  const DEFAULT_TITLE = "Panoptic";
@@ -3834,7 +3834,7 @@ function openBrowser(url) {
3834
3834
  }
3835
3835
 
3836
3836
  //#endregion
3837
- //#region ../@warlock.js/ai-panoptic/src/dashboard/trace-filter.ts
3837
+ //#region ../ai-panoptic/src/dashboard/trace-filter.ts
3838
3838
  /** Statuses the errors-only toggle keeps. */
3839
3839
  const ERROR_STATUSES = ["failed", "cancelled"];
3840
3840
  /**
@@ -4102,7 +4102,7 @@ function maxNodeCost(root) {
4102
4102
  }
4103
4103
 
4104
4104
  //#endregion
4105
- //#region ../@warlock.js/ai-panoptic/src/config/apply-panoptic-config.ts
4105
+ //#region ../ai-panoptic/src/config/apply-panoptic-config.ts
4106
4106
  let applied;
4107
4107
  /**
4108
4108
  * Read a {@link PanopticConfig} and wire panoptic onto the core observe
@@ -4184,7 +4184,7 @@ function startDashboard(store, dashboardConfig) {
4184
4184
  }
4185
4185
 
4186
4186
  //#endregion
4187
- //#region ../@warlock.js/ai-panoptic/src/register.ts
4187
+ //#region ../ai-panoptic/src/register.ts
4188
4188
  (0, _warlock_js_ai.onConfigApplied)((config) => {
4189
4189
  applyPanopticConfig(config.panoptic);
4190
4190
  });