@tangle-network/traces 0.8.23 → 0.8.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -55,7 +55,7 @@ Add `--llm` for the **agentic analysts** (failure-mode / knowledge-gap / knowled
55
55
 
56
56
  Every run also writes a **canonical OpenInference JSONL artifact**, so you can run external engines like [HALO](https://github.com/context-labs/halo) over it directly with `--analyzer halo`. See [External engines](#external-engines-bring-your-own). Analysis is never locked to one engine.
57
57
 
58
- `traces improve` is the reviewable action path. It writes typed artifacts: findings, recommendations, evidence rows, claims, report, and before/after replay metadata. Another agent, CI job, or hosted product can consume the result without scraping prose.
58
+ `traces improve` is the reviewable action path. It writes typed artifacts: findings, recommendations, proposal-only artifacts, evidence rows, claims, report, and before/after replay metadata. Another agent, CI job, or hosted product can consume the result without scraping prose.
59
59
 
60
60
  ## What it finds
61
61
 
@@ -197,6 +197,7 @@ The directory contains:
197
197
  |---|---|
198
198
  | `findings.json` | typed `AnalystFinding[]`; finding ids, severity, evidence refs, recommended action, validation plan |
199
199
  | `recommendations.json` | ranked actions derived from analyst, deterministic, and external findings |
200
+ | `proposals.json` | reviewable proposal-only artifacts linked to recommendation ids and evidence refs |
200
201
  | `evidence.jsonl` | one row per evidence ref, suitable for downstream mining |
201
202
  | `claims.json` | compact claim list for review agents and dashboards |
202
203
  | `report.md` | human-readable report rendered from the typed data |
@@ -214,7 +215,7 @@ The config can export:
214
215
  - `liveAnalysts`: deterministic online analysts that implement the `TraceLiveAnalyst` contract for `traces stream`
215
216
  - `registry`: a prebuilt `AnalystRegistry`
216
217
  - `externalAnalyzers`: HALO or any command/model adapter that reads the OTLP artifact
217
- - `improvementAdapter`: a proposal writer that maps recommendations to patches, profile edits, prompts, or validation commands
218
+ - `improvementAdapter`: a proposal writer that replaces the default proposal set with product-specific patches, profile edits, prompts, or validation commands
218
219
 
219
220
  `traces` does not apply patches or open PRs by default. The public engine produces reviewable artifacts; hosted products can decide how to deliver, approve, or apply them.
220
221
 
@@ -344,7 +345,7 @@ The CLI is a thin consumer of these exports.
344
345
  |---|---|---|
345
346
  | `analyzeSpans` | `(spans, { registry?, ai?, budgetUsd? }) → AnalyzeResult` | run built-in analysts, or **your own** via `registry` |
346
347
  | `runTraceInvestigation` | `(TraceInvestigationOptions) → TraceInvestigationResult` | typed findings, recommendations, claims, external analyzer output, and report |
347
- | `runTraceImprovementLoop` | `(TraceImprovementOptions) → TraceImprovementResult` | writes the full improvement artifact pack and optional proposal output |
348
+ | `runTraceImprovementLoop` | `(TraceImprovementOptions) → TraceImprovementResult` | writes the full improvement artifact pack and proposal-only output |
348
349
  | `buildTraceFindingPacket` | `({ findings }) → TraceFindingPacket` | turn any `AnalystFinding[]` into recommendations, claims, and a report |
349
350
  | `runTraceStoreInvestigation` | `({ traceStore }) → TraceStoreInvestigationResult` | run the same packet layer over a hosted/custom `TraceAnalysisStore` |
350
351
  | `loadTracesConfig` | `(path?) → TracesConfig \| undefined` | load BYO analysts, external analyzers, and proposal adapters |
@@ -2417,6 +2417,56 @@ function stampRepoAttrs(spans, attrs) {
2417
2417
  }
2418
2418
  return spans;
2419
2419
  }
2420
+ function replaceRepoAttrs(spans, attrs) {
2421
+ for (const s of spans) {
2422
+ for (const [key, value] of Object.entries(attrs)) s.attributes[key] = value;
2423
+ }
2424
+ }
2425
+ async function resolutionForWorkdirEvidence(evidence3, cache) {
2426
+ const cached = cache.get(evidence3.path);
2427
+ if (cached !== void 0) return cached;
2428
+ const cwd = await repoCandidateForPath(evidence3.path);
2429
+ if (!cwd) {
2430
+ cache.set(evidence3.path, null);
2431
+ return null;
2432
+ }
2433
+ const attrs = await resolveRepoAttrs(cwd);
2434
+ const resolved = attrs[ATTR.SUBJECT_KEY] ? {
2435
+ attrs: { ...attrs, [ATTR.REPO_RESOLUTION_SOURCE]: evidence3.source },
2436
+ cwd: attrs[ATTR.CWD] ?? cwd,
2437
+ source: evidence3.source
2438
+ } : null;
2439
+ cache.set(evidence3.path, resolved);
2440
+ return resolved;
2441
+ }
2442
+ async function resolveSpanWorkdirRepoAttrs(span2, cache) {
2443
+ const candidates = /* @__PURE__ */ new Map();
2444
+ const add = (value, weight) => {
2445
+ if (!value?.cwd) return;
2446
+ const existing = candidates.get(value.cwd);
2447
+ if (existing) {
2448
+ existing.score += weight;
2449
+ return;
2450
+ }
2451
+ candidates.set(value.cwd, { repo: value, score: weight, order: candidates.size });
2452
+ };
2453
+ for (const evidence3 of extractAbsolutePaths([span2])) {
2454
+ if (evidence3.source !== "span-workdir") continue;
2455
+ add(await resolutionForWorkdirEvidence(evidence3, cache), evidence3.weight);
2456
+ }
2457
+ const byScore = (a, b) => b.score - a.score || a.order - b.order;
2458
+ const resolved = [...candidates.values()];
2459
+ const selected = resolved.filter((candidate) => candidate.repo.attrs[ATTR.GIT_REPOSITORY]).sort(byScore)[0] ?? resolved.filter((candidate) => candidate.repo.attrs[ATTR.SUBJECT_KEY]).sort(byScore)[0];
2460
+ if (!selected) return null;
2461
+ return selected.repo;
2462
+ }
2463
+ async function stampSpanWorkdirRepoAttrs(spans) {
2464
+ const cache = /* @__PURE__ */ new Map();
2465
+ for (const span2 of spans) {
2466
+ const repo = await resolveSpanWorkdirRepoAttrs(span2, cache);
2467
+ if (repo?.attrs && Object.keys(repo.attrs).length > 0) replaceRepoAttrs([span2], repo.attrs);
2468
+ }
2469
+ }
2420
2470
 
2421
2471
  // src/session-source.ts
2422
2472
  async function parseSession(adapter, ref) {
@@ -2424,6 +2474,7 @@ async function parseSession(adapter, ref) {
2424
2474
  const repo = await resolveSessionRepoAttrs(ref.cwd, spans);
2425
2475
  if (repo.cwd) ref.cwd = repo.cwd;
2426
2476
  stampRepoAttrs(spans, repo.attrs);
2477
+ await stampSpanWorkdirRepoAttrs(spans);
2427
2478
  return spans;
2428
2479
  }
2429
2480
  function refKey(ref) {
@@ -4091,6 +4142,27 @@ function buildTraceFindingPacket(opts) {
4091
4142
  };
4092
4143
  return { ...packet, report: renderFindingPacket(packet, opts.title) };
4093
4144
  }
4145
+ function buildDefaultImprovementProposals(input) {
4146
+ return input.recommendations.slice(0, 5).map((recommendation, index) => {
4147
+ const matchingFindings = input.findings.filter((finding2) => recommendation.findingIds.includes(finding2.finding_id));
4148
+ const evidenceRefs = recommendation.evidenceRefs.length > 0 ? recommendation.evidenceRefs : matchingFindings.flatMap((finding2) => finding2.evidence_refs);
4149
+ return {
4150
+ id: `proposal-${index + 1}-${slug(recommendation.title)}`,
4151
+ title: recommendation.title,
4152
+ description: [
4153
+ recommendation.action,
4154
+ "",
4155
+ `Why: ${recommendation.rationale}`,
4156
+ `Validation: ${recommendation.validationPlan}`,
4157
+ "",
4158
+ "This is a proposal-only artifact. It does not mutate code, prompts, skills, tools, MCP config, hooks, subagents, or external systems until a human applies it and reruns validation."
4159
+ ].join("\n"),
4160
+ recommendationIds: [recommendation.id],
4161
+ validationCommand: "traces improve --last 1 --dir .traces/improvement",
4162
+ evidenceRefs
4163
+ };
4164
+ });
4165
+ }
4094
4166
  function renderExternal(results) {
4095
4167
  if (results.length === 0) return "";
4096
4168
  const lines = ["## external analyzers", ""];
@@ -4258,6 +4330,7 @@ async function writeTraceImprovementArtifacts(result, outDir) {
4258
4330
  directory,
4259
4331
  findings: join16(directory, "findings.json"),
4260
4332
  recommendations: join16(directory, "recommendations.json"),
4333
+ proposals: join16(directory, "proposals.json"),
4261
4334
  evidence: join16(directory, "evidence.jsonl"),
4262
4335
  claims: join16(directory, "claims.json"),
4263
4336
  report: join16(directory, "report.md"),
@@ -4266,6 +4339,7 @@ async function writeTraceImprovementArtifacts(result, outDir) {
4266
4339
  await Promise.all([
4267
4340
  writeFile4(paths.findings, json(result.findings), "utf8"),
4268
4341
  writeFile4(paths.recommendations, json(result.recommendations), "utf8"),
4342
+ writeFile4(paths.proposals, json(result.proposals), "utf8"),
4269
4343
  writeFile4(paths.evidence, jsonl(buildEvidenceRows(result.findings)), "utf8"),
4270
4344
  writeFile4(paths.claims, json(result.claims), "utf8"),
4271
4345
  writeFile4(paths.report, result.report, "utf8"),
@@ -4275,13 +4349,14 @@ async function writeTraceImprovementArtifacts(result, outDir) {
4275
4349
  }
4276
4350
  async function runTraceImprovementLoop(opts) {
4277
4351
  const investigation = await runTraceInvestigation(opts);
4278
- const proposals = opts.adapter ? await opts.adapter.propose({
4352
+ const adapterInput = {
4279
4353
  findings: investigation.findings,
4280
4354
  recommendations: investigation.recommendations,
4281
4355
  claims: investigation.claims,
4282
4356
  spans: opts.spans,
4283
4357
  otlpPath: investigation.otlpPath
4284
- }) : [];
4358
+ };
4359
+ const proposals = opts.adapter ? await opts.adapter.propose(adapterInput) : buildDefaultImprovementProposals(adapterInput);
4285
4360
  const replay = replayProof(investigation, proposals);
4286
4361
  const result = {
4287
4362
  ...investigation,
@@ -5212,6 +5287,7 @@ export {
5212
5287
  resolveRepoAttrs,
5213
5288
  resolveSessionRepoAttrs,
5214
5289
  stampRepoAttrs,
5290
+ stampSpanWorkdirRepoAttrs,
5215
5291
  parseSession,
5216
5292
  locateSessions,
5217
5293
  scanSessions,
package/dist/cli.js CHANGED
@@ -44,7 +44,7 @@ import {
44
44
  writePolicyEvidenceFile,
45
45
  writeSessionIndexFile,
46
46
  writeTraceEvidenceExportFile
47
- } from "./chunk-YS5KIWLY.js";
47
+ } from "./chunk-SV7GW5LB.js";
48
48
 
49
49
  // src/cli.ts
50
50
  import { readFileSync } from "fs";
package/dist/index.d.ts CHANGED
@@ -281,6 +281,7 @@ declare function resolveSessionRepoAttrs(cwd: string | null | undefined, spans:
281
281
  * same array for ergonomic chaining. A no-op when `attrs` is empty.
282
282
  */
283
283
  declare function stampRepoAttrs(spans: readonly OtlpSpan[], attrs: RepoAttrs): readonly OtlpSpan[];
284
+ declare function stampSpanWorkdirRepoAttrs(spans: readonly OtlpSpan[]): Promise<void>;
284
285
 
285
286
  /**
286
287
  * Claude Code adapter — `~/.claude/projects/<encoded-cwd>/<session>.jsonl`.
@@ -1381,6 +1382,7 @@ interface TraceImprovementArtifacts {
1381
1382
  readonly directory: string;
1382
1383
  readonly findings: string;
1383
1384
  readonly recommendations: string;
1385
+ readonly proposals: string;
1384
1386
  readonly evidence: string;
1385
1387
  readonly claims: string;
1386
1388
  readonly report: string;
@@ -1448,7 +1450,7 @@ declare function loadTracesConfig(path?: string): Promise<TracesConfig | undefin
1448
1450
  declare function mergeTracesConfig(opts: TraceInvestigationOptions, config?: TracesConfig): TraceInvestigationOptions;
1449
1451
  declare function runTraceInvestigation(opts: TraceInvestigationOptions): Promise<TraceInvestigationResult>;
1450
1452
  declare function runTraceStoreInvestigation(opts: TraceStoreInvestigationOptions): Promise<TraceStoreInvestigationResult>;
1451
- declare function writeTraceImprovementArtifacts(result: Pick<TraceImprovementResult, 'findings' | 'recommendations' | 'claims' | 'report' | 'replay'>, outDir?: string): Promise<TraceImprovementArtifacts>;
1453
+ declare function writeTraceImprovementArtifacts(result: Pick<TraceImprovementResult, 'findings' | 'recommendations' | 'proposals' | 'claims' | 'report' | 'replay'>, outDir?: string): Promise<TraceImprovementArtifacts>;
1452
1454
  declare function runTraceImprovementLoop(opts: TraceImprovementOptions): Promise<TraceImprovementResult>;
1453
1455
  declare function saveReport(path: string, report: string): Promise<void>;
1454
1456
 
@@ -1649,4 +1651,4 @@ interface ExecuteOptions {
1649
1651
  /** Send the NEW items (or, on dryRun, write the redacted OTLP that would send). */
1650
1652
  declare function executeUpload(plan: UploadPlan, opts?: ExecuteOptions): Promise<UploadResult>;
1651
1653
 
1652
- export { ACTOR_ATTR, ATTR, type Actor, type AdoptionOptions, type AdoptionReport, AmpAdapter, type AnalyzeOptions, type AnalyzeResult, type BuildPolicyEvidenceOptions, type BuildSessionIndexOptions, type BuildTraceFindingPacketOptions, CODING_REDACTION_RULES, CONTENT_CAP, CORRECTIVE_REACTIONS, ClaudeAdapter, CodexAdapter, type CollectOptions, type CollectPolicyEvidenceOptions, type CollectSessionIndexOptions, CopilotAdapter, DEFAULT_HARNESS, type ExecuteOptions, type ExternalAnalysisResult, type ExternalAnalyzer, FactoryAdapter, type FindingStore, ForgeAdapter, GeminiAdapter, type HarnessTraceAdapter, INGEST_SOURCE_CLI, type ImprovementAdapter, type ImprovementAdapterInput, type ImprovementProposal, type InspectSessionIndexOptions, type LiveBatchOptions, type LocateOptions, type ObservedLoop, type ObserverOptions, OpencodeAdapter, type OtlpSpan, type OtlpSpanKind, type OtlpStatusCode, PiAdapter, type PipelineOptions, type PipelineReport, type PlanOptions, type PolicyEvidenceLoopSummary, type PolicyEvidenceRecord, type PolicyEvidenceToolSummary, QwenAdapter, REACTIONS, type Reaction, type ReactionReport, type ReactionSessionReport, type RecommendationWriter, type Redactor, type RepoAttrs, type RepoResolution, type RepoResolutionSource, type RunResult, type RuntimeTrace, type ScanOptions, type ScannedSession, type SessionBatch, type SessionRef, type SpanInput, type SpanRedaction, TRACES_REDACTION_RULES, type TraceClaim, type TraceContextIndex, type TraceContextRoot, type TraceEvidenceExportOptions, type TraceEvidenceExportResult, type TraceEvidenceFormatOption, type TraceEvidenceInputFormat, type TraceEvidenceRow, type TraceFindingPacket, type TraceImprovementArtifacts, type TraceImprovementOptions, type TraceImprovementResult, type TraceIndexedFile, type TraceInspectionArea, type TraceInspectionFinding, type TraceInspectionReport, type TraceInspectionSeverity, type TraceInvestigationOptions, type TraceInvestigationResult, type TraceLiveAction, type TraceLiveActionKind, type TraceLiveAnalysisContext, type TraceLiveAnalyst, type TraceLiveBatch, type TraceLiveEvidence, type TraceLiveFinding, type TraceLiveLoop, type TraceLiveSeverity, type TraceRecommendation, type TraceReplayProof, type TraceSessionIndex, type TraceSessionIndexRow, type TraceStoreInvestigationOptions, type TraceStoreInvestigationResult, type TraceStreamEvent, type TraceStreamOptions, type TraceStreamReplayOptions, type TraceStreamSession, type TracesConfig, type TriggerPair, type UploadBackend, type UploadItem, type UploadPlan, type UploadRecord, type UploadResult, type UploadState, type UserPromptInput, alreadyUploaded, analyzeAdoption, analyzeLiveBatch, analyzeReactions, analyzeSpans, applyRedactor, buildPolicyEvidenceRecord, buildSessionIndex, buildSessionIndexFromRows, buildTraceFindingPacket, capText, classifyLiveActions, classifyReaction, claudeActor, codexActor, collectPolicyEvidence, collectSessionIndex, collectSessions, commandAnalyzer, commandRedactor, countSkillRunsJsonl, cwdMatchesSelection, defaultTraceLiveAnalysts, equivalentGitCwds, executeUpload, exportTraceEvidenceFile, exportTraceEvidenceRows, exportTraceEvidenceText, haloAnalyzer, inspectSessionIndex, knownHarnesses, listAdapters, loadState, loadTracesConfig, locateSessions, looksLikeAgentPrompt, mergeTracesConfig, normalizeRemote, parseIsoToEpochMs, parseSession, parseSince, planUpload, readSessionIndexFile, redactSpans, renderInspectionReport, resolveAdapter, resolveRepoAttrs, resolveSessionRepoAttrs, runCommand, runExternalAnalyzers, runPipelines, runTraceImprovementLoop, runTraceInvestigation, runTraceStoreInvestigation, saveReport, saveState, scanSessions, selectAdapters, serializeInspectionReport, serializePolicyEvidence, serializeSessionIndex, serializeSpans, serializeTraceStreamEvent, sessionHash, span, stampRepoAttrs, streamSessions, textIsSynthetic, toOpenInferenceSpan, toRuntimeStore, toTraceSpanEvents, traceStreamEventsFromSpans, uploadKey, userPromptSpan, watchSessions, writeInspectionReportFile, writeOtlpFile, writePolicyEvidenceFile, writeSessionIndexFile, writeTraceEvidenceExportFile, writeTraceImprovementArtifacts };
1654
+ export { ACTOR_ATTR, ATTR, type Actor, type AdoptionOptions, type AdoptionReport, AmpAdapter, type AnalyzeOptions, type AnalyzeResult, type BuildPolicyEvidenceOptions, type BuildSessionIndexOptions, type BuildTraceFindingPacketOptions, CODING_REDACTION_RULES, CONTENT_CAP, CORRECTIVE_REACTIONS, ClaudeAdapter, CodexAdapter, type CollectOptions, type CollectPolicyEvidenceOptions, type CollectSessionIndexOptions, CopilotAdapter, DEFAULT_HARNESS, type ExecuteOptions, type ExternalAnalysisResult, type ExternalAnalyzer, FactoryAdapter, type FindingStore, ForgeAdapter, GeminiAdapter, type HarnessTraceAdapter, INGEST_SOURCE_CLI, type ImprovementAdapter, type ImprovementAdapterInput, type ImprovementProposal, type InspectSessionIndexOptions, type LiveBatchOptions, type LocateOptions, type ObservedLoop, type ObserverOptions, OpencodeAdapter, type OtlpSpan, type OtlpSpanKind, type OtlpStatusCode, PiAdapter, type PipelineOptions, type PipelineReport, type PlanOptions, type PolicyEvidenceLoopSummary, type PolicyEvidenceRecord, type PolicyEvidenceToolSummary, QwenAdapter, REACTIONS, type Reaction, type ReactionReport, type ReactionSessionReport, type RecommendationWriter, type Redactor, type RepoAttrs, type RepoResolution, type RepoResolutionSource, type RunResult, type RuntimeTrace, type ScanOptions, type ScannedSession, type SessionBatch, type SessionRef, type SpanInput, type SpanRedaction, TRACES_REDACTION_RULES, type TraceClaim, type TraceContextIndex, type TraceContextRoot, type TraceEvidenceExportOptions, type TraceEvidenceExportResult, type TraceEvidenceFormatOption, type TraceEvidenceInputFormat, type TraceEvidenceRow, type TraceFindingPacket, type TraceImprovementArtifacts, type TraceImprovementOptions, type TraceImprovementResult, type TraceIndexedFile, type TraceInspectionArea, type TraceInspectionFinding, type TraceInspectionReport, type TraceInspectionSeverity, type TraceInvestigationOptions, type TraceInvestigationResult, type TraceLiveAction, type TraceLiveActionKind, type TraceLiveAnalysisContext, type TraceLiveAnalyst, type TraceLiveBatch, type TraceLiveEvidence, type TraceLiveFinding, type TraceLiveLoop, type TraceLiveSeverity, type TraceRecommendation, type TraceReplayProof, type TraceSessionIndex, type TraceSessionIndexRow, type TraceStoreInvestigationOptions, type TraceStoreInvestigationResult, type TraceStreamEvent, type TraceStreamOptions, type TraceStreamReplayOptions, type TraceStreamSession, type TracesConfig, type TriggerPair, type UploadBackend, type UploadItem, type UploadPlan, type UploadRecord, type UploadResult, type UploadState, type UserPromptInput, alreadyUploaded, analyzeAdoption, analyzeLiveBatch, analyzeReactions, analyzeSpans, applyRedactor, buildPolicyEvidenceRecord, buildSessionIndex, buildSessionIndexFromRows, buildTraceFindingPacket, capText, classifyLiveActions, classifyReaction, claudeActor, codexActor, collectPolicyEvidence, collectSessionIndex, collectSessions, commandAnalyzer, commandRedactor, countSkillRunsJsonl, cwdMatchesSelection, defaultTraceLiveAnalysts, equivalentGitCwds, executeUpload, exportTraceEvidenceFile, exportTraceEvidenceRows, exportTraceEvidenceText, haloAnalyzer, inspectSessionIndex, knownHarnesses, listAdapters, loadState, loadTracesConfig, locateSessions, looksLikeAgentPrompt, mergeTracesConfig, normalizeRemote, parseIsoToEpochMs, parseSession, parseSince, planUpload, readSessionIndexFile, redactSpans, renderInspectionReport, resolveAdapter, resolveRepoAttrs, resolveSessionRepoAttrs, runCommand, runExternalAnalyzers, runPipelines, runTraceImprovementLoop, runTraceInvestigation, runTraceStoreInvestigation, saveReport, saveState, scanSessions, selectAdapters, serializeInspectionReport, serializePolicyEvidence, serializeSessionIndex, serializeSpans, serializeTraceStreamEvent, sessionHash, span, stampRepoAttrs, stampSpanWorkdirRepoAttrs, streamSessions, textIsSynthetic, toOpenInferenceSpan, toRuntimeStore, toTraceSpanEvents, traceStreamEventsFromSpans, uploadKey, userPromptSpan, watchSessions, writeInspectionReportFile, writeOtlpFile, writePolicyEvidenceFile, writeSessionIndexFile, writeTraceEvidenceExportFile, writeTraceImprovementArtifacts };
package/dist/index.js CHANGED
@@ -83,6 +83,7 @@ import {
83
83
  sessionHash,
84
84
  span,
85
85
  stampRepoAttrs,
86
+ stampSpanWorkdirRepoAttrs,
86
87
  streamSessions,
87
88
  textIsSynthetic,
88
89
  toOpenInferenceSpan,
@@ -98,7 +99,7 @@ import {
98
99
  writeSessionIndexFile,
99
100
  writeTraceEvidenceExportFile,
100
101
  writeTraceImprovementArtifacts
101
- } from "./chunk-YS5KIWLY.js";
102
+ } from "./chunk-SV7GW5LB.js";
102
103
 
103
104
  // src/collect.ts
104
105
  async function collectSessions(opts = {}) {
@@ -216,6 +217,7 @@ export {
216
217
  sessionHash,
217
218
  span,
218
219
  stampRepoAttrs,
220
+ stampSpanWorkdirRepoAttrs,
219
221
  streamSessions,
220
222
  textIsSynthetic,
221
223
  toOpenInferenceSpan,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/traces",
3
- "version": "0.8.23",
3
+ "version": "0.8.25",
4
4
  "description": "Point it at your coding-agent session traces (Claude Code, Codex, OpenCode, Gemini, Pi, …) and get failure-mode + efficiency findings. CLI + SDK over the @tangle-network/agent-eval analyst suite — observe live sessions, run your own analysts, redact, and upload to the Tangle Intelligence Platform.",
5
5
  "type": "module",
6
6
  "license": "MIT",