@warlock.js/ai-panoptic 5.29.0 → 5.30.0

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