@moda-ai/cli 1.55.46 → 1.55.48
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/dist/{agent-aewgndk0.js → agent-de8bnj8x.js} +4 -4
- package/dist/{cli-fqc02t6h.js → cli-0zws61ba.js} +4 -4
- package/dist/{cli-x7rc3twr.js → cli-10zgbewk.js} +55 -9
- package/dist/{cli-dxbd1xxs.js → cli-629tc1d0.js} +2 -2
- package/dist/{cli-cesds766.js → cli-jj77e5yp.js} +1 -1
- package/dist/cli.js +8 -8
- package/dist/{doctor-fz5kq44d.js → doctor-dw9bqzeg.js} +2 -2
- package/dist/{harness-github-actions-aac3tn96.js → harness-github-actions-njdxwsn5.js} +2 -2
- package/dist/{harness-report-rd9c4e9v.js → harness-report-r0dkpafy.js} +3 -1
- package/dist/{harness-cy0gpyhj.js → harness-v7kgnpr6.js} +2 -2
- package/dist/{index-5eyq3ykt.js → index-40b5v59z.js} +4 -4
- package/dist/{production-intelligence-8j8008d2.js → production-intelligence-fe5masaa.js} +39 -6
- package/dist/{prompt-attribution-g9gtv191.js → prompt-attribution-d1vj2cxt.js} +2 -2
- package/dist/prompt-source-mcp.js +2 -2
- package/dist/{prompts-b6awryvv.js → prompts-qh1akhfz.js} +1 -1
- package/dist/{sync-5vd8gwte.js → sync-ra280dhc.js} +3 -3
- package/package.json +1 -1
- package/skills/integration/index.json +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildDoctorReport
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-629tc1d0.js";
|
|
4
4
|
import"./cli-h1z9yyqk.js";
|
|
5
|
-
import"./cli-
|
|
5
|
+
import"./cli-0zws61ba.js";
|
|
6
6
|
import"./cli-mm48br00.js";
|
|
7
7
|
import {
|
|
8
8
|
readHarnessSyncState
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
hashStableJson,
|
|
27
27
|
readHarnessReport,
|
|
28
28
|
validateHarnessReport
|
|
29
|
-
} from "./cli-
|
|
29
|
+
} from "./cli-jj77e5yp.js";
|
|
30
30
|
import {
|
|
31
31
|
CliInputError
|
|
32
32
|
} from "./cli-k4tqwah4.js";
|
|
@@ -95,7 +95,7 @@ async function buildAgentContext(context) {
|
|
|
95
95
|
const graph = readHarnessGraphIfPresent(context.cwd);
|
|
96
96
|
const reportState = readHarnessReportState(context.cwd);
|
|
97
97
|
const syncState = readHarnessSyncState(context.cwd);
|
|
98
|
-
const harness = graph ? await import("./harness-
|
|
98
|
+
const harness = graph ? await import("./harness-v7kgnpr6.js") : undefined;
|
|
99
99
|
const topFindings = doctor.checks.filter((check) => check.status === "fail" || check.status === "warning").slice(0, 12).map(checkToFinding);
|
|
100
100
|
const evidenceRefs = [
|
|
101
101
|
...doctor.checks.map(checkToEvidenceRef),
|
|
@@ -5768,7 +5768,7 @@ async function runPromptSyncExclusive(flags, profileOptions, options) {
|
|
|
5768
5768
|
const analyzedDefinitions = new Map;
|
|
5769
5769
|
if (flags["no-analyze"] !== "true") {
|
|
5770
5770
|
options.onProgress?.("Analyzing prompt sources before sync.");
|
|
5771
|
-
const { analyzeHarnessPrompts } = await import("./harness-
|
|
5771
|
+
const { analyzeHarnessPrompts } = await import("./harness-v7kgnpr6.js");
|
|
5772
5772
|
const result = await analyzeHarnessPrompts({
|
|
5773
5773
|
rootDir: process.cwd(),
|
|
5774
5774
|
existing: established.flatMap((prompt) => prompt.sourceDefinition ? [prompt.sourceDefinition.source] : []),
|
|
@@ -5796,7 +5796,7 @@ async function runPromptSyncExclusive(flags, profileOptions, options) {
|
|
|
5796
5796
|
const mergedSources = mergePromptSources(manifest.sources, extraSources);
|
|
5797
5797
|
const manifestUpdate = stableJson(mergedSources) === stableJson(mergePromptSources(manifest.sources, [])) ? undefined : $stringify({ version: 2, prompt_paths: manifest.promptPaths, sources: mergedSources });
|
|
5798
5798
|
const prompts = await discoverPrompts(extraSources);
|
|
5799
|
-
const { checkPromptAttribution } = await import("./prompt-attribution-
|
|
5799
|
+
const { checkPromptAttribution } = await import("./prompt-attribution-d1vj2cxt.js");
|
|
5800
5800
|
const attribution = checkPromptAttribution(process.cwd(), prompts.map((prompt) => prompt.key));
|
|
5801
5801
|
const brokenAttribution = attribution.references.filter((reference) => reference.status === "missing");
|
|
5802
5802
|
if (brokenAttribution.length) {
|
|
@@ -6102,7 +6102,7 @@ async function migratePromptManifest(options = {}) {
|
|
|
6102
6102
|
let addedSources = [];
|
|
6103
6103
|
let pendingSources = [];
|
|
6104
6104
|
if (options.discover) {
|
|
6105
|
-
const { analyzeHarnessPrompts } = await import("./harness-
|
|
6105
|
+
const { analyzeHarnessPrompts } = await import("./harness-v7kgnpr6.js");
|
|
6106
6106
|
const result = await analyzeHarnessPrompts({
|
|
6107
6107
|
rootDir: root,
|
|
6108
6108
|
existing: manifest.sources,
|
|
@@ -6303,7 +6303,7 @@ async function readHarnessSources(reportPath) {
|
|
|
6303
6303
|
if (!graph) {
|
|
6304
6304
|
throw new CliInputError(`${selected} is not a harness report with a graph (schema: ${schemaLabel}). Regenerate it with \`${HARNESS_REANALYZE_COMMAND}\`.`);
|
|
6305
6305
|
}
|
|
6306
|
-
const { normalizeHarnessReport } = await import("./harness-report-
|
|
6306
|
+
const { normalizeHarnessReport } = await import("./harness-report-r0dkpafy.js");
|
|
6307
6307
|
const { backfillPromptSource, resolvePromptSource } = await loadPromptSources();
|
|
6308
6308
|
const report = normalizeHarnessReport(raw);
|
|
6309
6309
|
const artifacts = (report.graph.artifacts ?? []).filter((artifact) => artifact.type === "prompt");
|
|
@@ -74,6 +74,7 @@ import {
|
|
|
74
74
|
import {
|
|
75
75
|
HARNESS_ANALYZE_CONCERNS,
|
|
76
76
|
HARNESS_REPORT_PATH,
|
|
77
|
+
MAX_HARNESS_REPORT_SUMMARY_LENGTH,
|
|
77
78
|
approveHarnessReport,
|
|
78
79
|
artifactHasBody,
|
|
79
80
|
createHarnessReport,
|
|
@@ -89,7 +90,7 @@ import {
|
|
|
89
90
|
stampRemoteSnapshotTruncation,
|
|
90
91
|
validateHarnessReport,
|
|
91
92
|
writeHarnessReportArtifacts
|
|
92
|
-
} from "./cli-
|
|
93
|
+
} from "./cli-jj77e5yp.js";
|
|
93
94
|
import {
|
|
94
95
|
CliInputError,
|
|
95
96
|
CliInputRequiredError
|
|
@@ -14048,7 +14049,7 @@ async function runHarnessCommand(context) {
|
|
|
14048
14049
|
throw new CliInputError("Focused remote prompt analysis is not supported yet.", "Use local --analyst=claude|codex|cursor|local-scan, or drop --concern for a full remote report.");
|
|
14049
14050
|
}
|
|
14050
14051
|
if (context.flags["github-actions"] === "true") {
|
|
14051
|
-
const { runGithubActionsAnalyze } = await import("./harness-github-actions-
|
|
14052
|
+
const { runGithubActionsAnalyze } = await import("./harness-github-actions-njdxwsn5.js");
|
|
14052
14053
|
const result = await runGithubActionsAnalyze(rootDir, {
|
|
14053
14054
|
writeReport: (report2) => {
|
|
14054
14055
|
const normalized = normalizeHarnessReport(report2);
|
|
@@ -14683,11 +14684,59 @@ function parseHarnessReportCandidate(candidate) {
|
|
|
14683
14684
|
}
|
|
14684
14685
|
return;
|
|
14685
14686
|
}
|
|
14687
|
+
function resolveWithInferredKind(rootDir, source) {
|
|
14688
|
+
try {
|
|
14689
|
+
return resolvePromptSource(rootDir, source);
|
|
14690
|
+
} catch (error) {
|
|
14691
|
+
if (!source.kind || !(error instanceof Error) || !/declared source kind '[^']+' does not match resolved kind/.test(error.message)) {
|
|
14692
|
+
throw error;
|
|
14693
|
+
}
|
|
14694
|
+
const { kind: _declared, ...inferred } = source;
|
|
14695
|
+
return resolvePromptSource(rootDir, inferred);
|
|
14696
|
+
}
|
|
14697
|
+
}
|
|
14698
|
+
function applyResolvedPromptSource(artifact, source) {
|
|
14699
|
+
artifact.promptSource = source.sourceDefinition.source;
|
|
14700
|
+
artifact.body = source.content;
|
|
14701
|
+
artifact.sourceDefinition = source.sourceDefinition;
|
|
14702
|
+
artifact.sourcePath = source.sourcePath;
|
|
14703
|
+
artifact.contentHash = source.sourceDefinition.sourceHash;
|
|
14704
|
+
}
|
|
14705
|
+
function removeArtifacts(report, ids) {
|
|
14706
|
+
const graph = report.graph;
|
|
14707
|
+
const keep = (id) => typeof id !== "string" || !ids.has(id);
|
|
14708
|
+
graph.artifacts = graph.artifacts.filter((artifact) => keep(artifact.id));
|
|
14709
|
+
for (const agent of graph.runtimeAgents) {
|
|
14710
|
+
if (Array.isArray(agent.artifactIds))
|
|
14711
|
+
agent.artifactIds = agent.artifactIds.filter(keep);
|
|
14712
|
+
}
|
|
14713
|
+
for (const family of graph.agentFamilies) {
|
|
14714
|
+
if (Array.isArray(family.sharedArtifactIds))
|
|
14715
|
+
family.sharedArtifactIds = family.sharedArtifactIds.filter(keep);
|
|
14716
|
+
}
|
|
14717
|
+
const edgeKept = (edge) => keep(edge.from) && keep(edge.to) && keep(edge.artifactId);
|
|
14718
|
+
graph.relationships = graph.relationships.filter((relationship) => edgeKept(relationship));
|
|
14719
|
+
if (Array.isArray(report.claims)) {
|
|
14720
|
+
report.claims = report.claims.map((claim) => {
|
|
14721
|
+
const removed = claim.kind === "artifact" ? keep(claim.subjectId) ? undefined : claim.subjectId : claim.kind === "relationship" ? String(claim.subjectId ?? "").split("->").find((id) => !keep(id)) : undefined;
|
|
14722
|
+
if (!removed)
|
|
14723
|
+
return claim;
|
|
14724
|
+
return {
|
|
14725
|
+
...claim,
|
|
14726
|
+
kind: "unknown",
|
|
14727
|
+
subjectId: `unresolved_${removed}`,
|
|
14728
|
+
title: `Unverified prompt source: ${claim.title}`,
|
|
14729
|
+
summary: `The analyst's source mapping for ${removed} did not verify against the repository, so it was left out of the harness. ${claim.summary ?? ""}`.trim().slice(0, MAX_HARNESS_REPORT_SUMMARY_LENGTH)
|
|
14730
|
+
};
|
|
14731
|
+
});
|
|
14732
|
+
}
|
|
14733
|
+
}
|
|
14686
14734
|
function repairExternalAnalystReport(report, rootDir, options = {}) {
|
|
14687
14735
|
const normalized = normalizeHarnessReport(report);
|
|
14688
14736
|
repairCitationLines(normalized, rootDir);
|
|
14689
14737
|
mergeDeterministicArtifacts(normalized.graph, rootDir, { concern: options.concern });
|
|
14690
14738
|
hydratePromptAndToolBodies(normalized.graph, rootDir);
|
|
14739
|
+
const unverified = new Set;
|
|
14691
14740
|
for (const artifact of normalized.graph.artifacts) {
|
|
14692
14741
|
if (artifact.type !== "prompt")
|
|
14693
14742
|
continue;
|
|
@@ -14696,17 +14745,14 @@ function repairExternalAnalystReport(report, rootDir, options = {}) {
|
|
|
14696
14745
|
if (!backfilled)
|
|
14697
14746
|
continue;
|
|
14698
14747
|
artifact.promptSource = backfilled;
|
|
14699
|
-
|
|
14700
|
-
artifact.body = source.content;
|
|
14701
|
-
artifact.sourceDefinition = source.sourceDefinition;
|
|
14702
|
-
artifact.sourcePath = source.sourcePath;
|
|
14703
|
-
artifact.contentHash = source.sourceDefinition.sourceHash;
|
|
14748
|
+
applyResolvedPromptSource(artifact, resolveWithInferredKind(rootDir, artifact.promptSource));
|
|
14704
14749
|
} catch (error) {
|
|
14705
|
-
artifact.
|
|
14706
|
-
delete artifact.sourceDefinition;
|
|
14750
|
+
unverified.add(artifact.id);
|
|
14707
14751
|
normalized.graph.unknowns.push({ id: `unresolved_${artifact.id}`, question: error instanceof Error ? error.message : String(error), candidateIds: [artifact.id], evidence: artifact.evidence });
|
|
14708
14752
|
}
|
|
14709
14753
|
}
|
|
14754
|
+
if (unverified.size > 0)
|
|
14755
|
+
removeArtifacts(normalized, unverified);
|
|
14710
14756
|
deriveRelationshipsFromGraph(normalized.graph);
|
|
14711
14757
|
repairReportSummaryCounts(normalized);
|
|
14712
14758
|
if (options.concern) {
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./cli-h1z9yyqk.js";
|
|
5
5
|
import {
|
|
6
6
|
inspectPromptManifest
|
|
7
|
-
} from "./cli-
|
|
7
|
+
} from "./cli-0zws61ba.js";
|
|
8
8
|
import {
|
|
9
9
|
readHarnessSyncState,
|
|
10
10
|
renderDoctorHuman,
|
|
@@ -395,7 +395,7 @@ async function harnessCurrentCheck(cwd, manifestPath, manifestExists, tenantId)
|
|
|
395
395
|
};
|
|
396
396
|
}
|
|
397
397
|
try {
|
|
398
|
-
const { scanHarness } = await import("./harness-
|
|
398
|
+
const { scanHarness } = await import("./harness-v7kgnpr6.js");
|
|
399
399
|
const current = scanHarness({
|
|
400
400
|
rootDir: cwd,
|
|
401
401
|
scannerVersion: "doctor",
|
|
@@ -1513,4 +1513,4 @@ function normalizePath(path) {
|
|
|
1513
1513
|
return path.replace(/\\/g, "/");
|
|
1514
1514
|
}
|
|
1515
1515
|
|
|
1516
|
-
export { HARNESS_REPORT_SCHEMA_VERSION, HARNESS_REPORT_VALIDATION_SCHEMA_VERSION, HARNESS_REPORT_APPROVAL_SCHEMA_VERSION, HARNESS_REPORT_PATH, HARNESS_REPORT_MARKDOWN_PATH, HARNESS_REPORT_VALIDATION_PATH, HARNESS_REPORT_APPROVAL_PATH, HARNESS_ANALYZE_CONCERNS, createHarnessReport, validateHarnessReport, approveHarnessReport, loadHarnessReportForSync, readHarnessReport, normalizeHarnessReport, requiresArtifactBody, artifactHasBody, firstEvidencePath, stampRemoteSnapshotTruncation, resolveHarnessReportPath, writeHarnessReportArtifacts, renderHarnessReportMarkdown, hashHarnessReport, hashStableJson, graphForReport };
|
|
1516
|
+
export { HARNESS_REPORT_SCHEMA_VERSION, HARNESS_REPORT_VALIDATION_SCHEMA_VERSION, HARNESS_REPORT_APPROVAL_SCHEMA_VERSION, HARNESS_REPORT_PATH, HARNESS_REPORT_MARKDOWN_PATH, HARNESS_REPORT_VALIDATION_PATH, HARNESS_REPORT_APPROVAL_PATH, HARNESS_ANALYZE_CONCERNS, MAX_HARNESS_REPORT_SUMMARY_LENGTH, createHarnessReport, validateHarnessReport, approveHarnessReport, loadHarnessReportForSync, readHarnessReport, normalizeHarnessReport, requiresArtifactBody, artifactHasBody, firstEvidencePath, stampRemoteSnapshotTruncation, resolveHarnessReportPath, writeHarnessReportArtifacts, renderHarnessReportMarkdown, hashHarnessReport, hashStableJson, graphForReport };
|
package/dist/cli.js
CHANGED
|
@@ -2967,25 +2967,25 @@ function leafManifestFields(leaf, commands) {
|
|
|
2967
2967
|
import { fileURLToPath } from "url";
|
|
2968
2968
|
import { realpathSync } from "fs";
|
|
2969
2969
|
async function runPromptsCommand(...args) {
|
|
2970
|
-
return (await import("./prompts-
|
|
2970
|
+
return (await import("./prompts-qh1akhfz.js")).runPromptsCommand(...args);
|
|
2971
2971
|
}
|
|
2972
2972
|
async function runSkillsCommand(...args) {
|
|
2973
2973
|
return (await import("./skills-zfenne8w.js")).runSkillsCommand(...args);
|
|
2974
2974
|
}
|
|
2975
2975
|
async function runHarnessCommand(...args) {
|
|
2976
|
-
return (await import("./harness-
|
|
2976
|
+
return (await import("./harness-v7kgnpr6.js")).runHarnessCommand(...args);
|
|
2977
2977
|
}
|
|
2978
2978
|
async function runSyncCommand(...args) {
|
|
2979
|
-
return (await import("./sync-
|
|
2979
|
+
return (await import("./sync-ra280dhc.js")).runSyncCommand(...args);
|
|
2980
2980
|
}
|
|
2981
2981
|
async function runRegistryCommand(...args) {
|
|
2982
2982
|
return (await import("./registry-d7xdm4dw.js")).runRegistryCommand(...args);
|
|
2983
2983
|
}
|
|
2984
2984
|
async function runDoctorCommand(...args) {
|
|
2985
|
-
return (await import("./doctor-
|
|
2985
|
+
return (await import("./doctor-dw9bqzeg.js")).runDoctorCommand(...args);
|
|
2986
2986
|
}
|
|
2987
2987
|
async function runStatusCommand(...args) {
|
|
2988
|
-
return (await import("./doctor-
|
|
2988
|
+
return (await import("./doctor-dw9bqzeg.js")).runStatusCommand(...args);
|
|
2989
2989
|
}
|
|
2990
2990
|
async function runAuthCommand(...args) {
|
|
2991
2991
|
return (await import("./profile-commands-zbyn9xg2.js")).runAuthCommand(...args);
|
|
@@ -2997,10 +2997,10 @@ async function runProfilesCommand(...args) {
|
|
|
2997
2997
|
return (await import("./profile-commands-zbyn9xg2.js")).runProfilesCommand(...args);
|
|
2998
2998
|
}
|
|
2999
2999
|
async function runAgentCommand(...args) {
|
|
3000
|
-
return (await import("./agent-
|
|
3000
|
+
return (await import("./agent-de8bnj8x.js")).runAgentCommand(...args);
|
|
3001
3001
|
}
|
|
3002
3002
|
async function runProductionCommand(...args) {
|
|
3003
|
-
return (await import("./production-intelligence-
|
|
3003
|
+
return (await import("./production-intelligence-fe5masaa.js")).runProductionCommand(...args);
|
|
3004
3004
|
}
|
|
3005
3005
|
function parseArgs(argv) {
|
|
3006
3006
|
const args = argv.slice(2);
|
|
@@ -6761,7 +6761,7 @@ var commandRegistry = createCommandRegistry([
|
|
|
6761
6761
|
resetApiRequestCountBeforeRun: true,
|
|
6762
6762
|
telemetry: "result-and-error",
|
|
6763
6763
|
handler: async (context) => {
|
|
6764
|
-
const { runInit } = await import("./index-
|
|
6764
|
+
const { runInit } = await import("./index-40b5v59z.js");
|
|
6765
6765
|
if (context.outputMode === "agent-stream") {
|
|
6766
6766
|
context.output.writeEvent({
|
|
6767
6767
|
event: "started",
|
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
promptsDiscoveredCheck,
|
|
4
4
|
runDoctorCommand,
|
|
5
5
|
runStatusCommand
|
|
6
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-629tc1d0.js";
|
|
7
7
|
import"./cli-h1z9yyqk.js";
|
|
8
|
-
import"./cli-
|
|
8
|
+
import"./cli-0zws61ba.js";
|
|
9
9
|
import"./cli-mm48br00.js";
|
|
10
10
|
import"./cli-xq45etg1.js";
|
|
11
11
|
import"./cli-m4474bnj.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildSourceSnapshot
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-10zgbewk.js";
|
|
4
4
|
import"./cli-97fnztpy.js";
|
|
5
5
|
import"./cli-xq45etg1.js";
|
|
6
6
|
import"./cli-m4474bnj.js";
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
import"./cli-qpq84eee.js";
|
|
14
14
|
import"./cli-9kfxkxmk.js";
|
|
15
15
|
import"./cli-ns5fcnkz.js";
|
|
16
|
-
import"./cli-
|
|
16
|
+
import"./cli-jj77e5yp.js";
|
|
17
17
|
import"./cli-k4tqwah4.js";
|
|
18
18
|
import"./cli-0v6na3yp.js";
|
|
19
19
|
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
HARNESS_REPORT_SCHEMA_VERSION,
|
|
8
8
|
HARNESS_REPORT_VALIDATION_PATH,
|
|
9
9
|
HARNESS_REPORT_VALIDATION_SCHEMA_VERSION,
|
|
10
|
+
MAX_HARNESS_REPORT_SUMMARY_LENGTH,
|
|
10
11
|
approveHarnessReport,
|
|
11
12
|
artifactHasBody,
|
|
12
13
|
createHarnessReport,
|
|
@@ -23,7 +24,7 @@ import {
|
|
|
23
24
|
stampRemoteSnapshotTruncation,
|
|
24
25
|
validateHarnessReport,
|
|
25
26
|
writeHarnessReportArtifacts
|
|
26
|
-
} from "./cli-
|
|
27
|
+
} from "./cli-jj77e5yp.js";
|
|
27
28
|
import"./cli-k4tqwah4.js";
|
|
28
29
|
import"./cli-0v6na3yp.js";
|
|
29
30
|
export {
|
|
@@ -43,6 +44,7 @@ export {
|
|
|
43
44
|
createHarnessReport,
|
|
44
45
|
artifactHasBody,
|
|
45
46
|
approveHarnessReport,
|
|
47
|
+
MAX_HARNESS_REPORT_SUMMARY_LENGTH,
|
|
46
48
|
HARNESS_REPORT_VALIDATION_SCHEMA_VERSION,
|
|
47
49
|
HARNESS_REPORT_VALIDATION_PATH,
|
|
48
50
|
HARNESS_REPORT_SCHEMA_VERSION,
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
writeHarnessAnalyzeResult,
|
|
41
41
|
writeHarnessArtifacts,
|
|
42
42
|
writeHumanProgress
|
|
43
|
-
} from "./cli-
|
|
43
|
+
} from "./cli-10zgbewk.js";
|
|
44
44
|
import"./cli-97fnztpy.js";
|
|
45
45
|
import"./cli-xq45etg1.js";
|
|
46
46
|
import"./cli-m4474bnj.js";
|
|
@@ -53,7 +53,7 @@ import"./cli-9kfxkxmk.js";
|
|
|
53
53
|
import"./cli-ns5fcnkz.js";
|
|
54
54
|
import {
|
|
55
55
|
HARNESS_ANALYZE_CONCERNS
|
|
56
|
-
} from "./cli-
|
|
56
|
+
} from "./cli-jj77e5yp.js";
|
|
57
57
|
import"./cli-k4tqwah4.js";
|
|
58
58
|
import"./cli-0v6na3yp.js";
|
|
59
59
|
export {
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from "./cli-hcwdz9sd.js";
|
|
22
22
|
import {
|
|
23
23
|
buildDoctorReport
|
|
24
|
-
} from "./cli-
|
|
24
|
+
} from "./cli-629tc1d0.js";
|
|
25
25
|
import {
|
|
26
26
|
ConnectCodeError,
|
|
27
27
|
connectWithCode,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
import {
|
|
33
33
|
initPrompts,
|
|
34
34
|
runPromptSync
|
|
35
|
-
} from "./cli-
|
|
35
|
+
} from "./cli-0zws61ba.js";
|
|
36
36
|
import"./cli-mm48br00.js";
|
|
37
37
|
import {
|
|
38
38
|
codingAgentDisplayName,
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
runCodingAgent,
|
|
47
47
|
runHarnessCommand,
|
|
48
48
|
startRemoteAnalyze
|
|
49
|
-
} from "./cli-
|
|
49
|
+
} from "./cli-10zgbewk.js";
|
|
50
50
|
import {
|
|
51
51
|
stripAnsi
|
|
52
52
|
} from "./cli-97fnztpy.js";
|
|
@@ -74,7 +74,7 @@ import {
|
|
|
74
74
|
import"./cli-qpq84eee.js";
|
|
75
75
|
import"./cli-9kfxkxmk.js";
|
|
76
76
|
import"./cli-ns5fcnkz.js";
|
|
77
|
-
import"./cli-
|
|
77
|
+
import"./cli-jj77e5yp.js";
|
|
78
78
|
import {
|
|
79
79
|
CliAuthError,
|
|
80
80
|
CliInputError
|
|
@@ -487,6 +487,7 @@ async function loadOverviewBriefing(options) {
|
|
|
487
487
|
];
|
|
488
488
|
const findings = findingsFromOverview(overview, options.daysBack, hints, evidenceRefs);
|
|
489
489
|
const topFinding = findings[0] ?? null;
|
|
490
|
+
const signalsRate = overviewSignalsRate(overview);
|
|
490
491
|
const conversations = numberAt(overview, ["conversations", "total"]);
|
|
491
492
|
const recent = recentActivity(overview)[0];
|
|
492
493
|
const dataFlowStatus = conversations > 0 || recent ? "flowing" : "quiet";
|
|
@@ -495,7 +496,7 @@ async function loadOverviewBriefing(options) {
|
|
|
495
496
|
schemaVersion: OVERVIEW_SCHEMA_VERSION,
|
|
496
497
|
generatedAt: new Date().toISOString(),
|
|
497
498
|
daysBack: options.daysBack,
|
|
498
|
-
status: topFinding ? "attention" : dataFlowStatus === "flowing" ? "healthy" : "quiet",
|
|
499
|
+
status: topFinding ? "attention" : signalsRate && signalsRate.ratePct > 0 ? "unknown" : dataFlowStatus === "flowing" ? "healthy" : "quiet",
|
|
499
500
|
dataFlow: {
|
|
500
501
|
status: dataFlowStatus,
|
|
501
502
|
conversations,
|
|
@@ -849,6 +850,17 @@ function findingsFromOverview(overview, daysBack, hints, evidenceRefs) {
|
|
|
849
850
|
}]
|
|
850
851
|
});
|
|
851
852
|
}
|
|
853
|
+
const signalsRate = overviewSignalsRate(overview);
|
|
854
|
+
const signalsEvidenceId = "overview:signals_negative_emotion_rate";
|
|
855
|
+
if (signalsRate) {
|
|
856
|
+
evidenceRefs.push({
|
|
857
|
+
id: signalsEvidenceId,
|
|
858
|
+
kind: "data_api",
|
|
859
|
+
label: `Signals page negative emotion: ${signalsRate.ratePct}% of ${signalsRate.unit}s${signalsCoverageLabel(signalsRate)}`,
|
|
860
|
+
endpoint: `/overview?days_back=${daysBack}`,
|
|
861
|
+
value: valueAt(overview, ["signals_negative_emotion_rate"])
|
|
862
|
+
});
|
|
863
|
+
}
|
|
852
864
|
const frustrationRate = numberAt(overview, ["frustrations", "rate_pct"]);
|
|
853
865
|
const frustrated = numberAt(overview, ["frustrations", "frustrated"]);
|
|
854
866
|
if (frustrated > 0 || frustrationRate >= 10) {
|
|
@@ -856,20 +868,20 @@ function findingsFromOverview(overview, daysBack, hints, evidenceRefs) {
|
|
|
856
868
|
evidenceRefs.push({
|
|
857
869
|
id: evidenceId,
|
|
858
870
|
kind: "data_api",
|
|
859
|
-
label: `${frustrationRate}% frustration
|
|
871
|
+
label: `${frustrationRate}% frustration family, analyzed conversations`,
|
|
860
872
|
endpoint: `/overview?days_back=${daysBack}`,
|
|
861
873
|
value: valueAt(overview, ["frustrations"])
|
|
862
874
|
});
|
|
863
875
|
findings.push({
|
|
864
876
|
id: "finding_overview_frustration",
|
|
865
877
|
kind: "frustration",
|
|
866
|
-
title: `${frustrationRate}%
|
|
878
|
+
title: `${frustrationRate}% frustration family, analyzed conversations`,
|
|
867
879
|
severity: frustrationRate >= 25 ? "high" : "medium",
|
|
868
880
|
confidence: "medium",
|
|
869
881
|
impactScore: 65 + Math.min(frustrationRate, 30),
|
|
870
882
|
rankReason: "Frustration indicates users are getting stuck even when runs may not hard-fail.",
|
|
871
|
-
summary: `Moda classified ${frustrated}
|
|
872
|
-
evidenceRefIds: [evidenceId],
|
|
883
|
+
summary: `Moda classified ${frustrated} conversation(s) with frustration-family detections in the last ${daysBack} day(s).` + (signalsRate ? ` Signals page negative emotion: ${signalsRate.ratePct}% of ${signalsRate.unit}s${signalsRate.unitSource === "fallback_unavailable" ? " (default unit; saved unit unverified)" : signalsRate.unitSource === "default" ? " (default unit)" : ""}${signalsCoverageLabel(signalsRate)}.` : ""),
|
|
884
|
+
evidenceRefIds: [evidenceId, ...signalsRate ? [signalsEvidenceId] : []],
|
|
873
885
|
likelyLocations: defaultLikelyLocations(hints, "prompt"),
|
|
874
886
|
recommendedActions: [{
|
|
875
887
|
id: "action_investigate_frustration",
|
|
@@ -1583,6 +1595,8 @@ function renderOverviewBriefingHuman(briefing) {
|
|
|
1583
1595
|
lines.push(` ${briefing.topFinding.severity.toUpperCase()} ${briefing.topFinding.title}`);
|
|
1584
1596
|
lines.push(` ${briefing.topFinding.summary}`);
|
|
1585
1597
|
lines.push(` Why ranked: ${briefing.topFinding.rankReason}`);
|
|
1598
|
+
} else if (briefing.status === "unknown") {
|
|
1599
|
+
lines.push(" Signals negative emotion is present; production health is unassessed for this unit.");
|
|
1586
1600
|
} else {
|
|
1587
1601
|
lines.push(" No urgent production issue found in the selected window.");
|
|
1588
1602
|
}
|
|
@@ -1923,7 +1937,19 @@ function uniqueEvidenceRefs(refs) {
|
|
|
1923
1937
|
}
|
|
1924
1938
|
return out;
|
|
1925
1939
|
}
|
|
1940
|
+
function signalsCoverageLabel(rate) {
|
|
1941
|
+
return rate.coverageSince ? ` (partial coverage since ${rate.coverageSince})` : "";
|
|
1942
|
+
}
|
|
1943
|
+
function overviewSignalsRate(data) {
|
|
1944
|
+
const signal = asRecord(valueAt(data, ["signals_negative_emotion_rate"]));
|
|
1945
|
+
const ratePct = asNumber(signal?.rate_pct);
|
|
1946
|
+
const unit = asString(signal?.unit);
|
|
1947
|
+
if (signal?.status === "unavailable" || ratePct === null || !Number.isFinite(ratePct) || !unit || !["turn", "task", "conversation"].includes(unit))
|
|
1948
|
+
return null;
|
|
1949
|
+
return { ratePct, unit, unitSource: asString(signal?.unit_source), coverageSince: asString(signal?.coverage_since) };
|
|
1950
|
+
}
|
|
1926
1951
|
function overviewMetrics(data) {
|
|
1952
|
+
const signalsRate = overviewSignalsRate(data);
|
|
1927
1953
|
return {
|
|
1928
1954
|
conversations: valueAt(data, ["conversations", "total"]) ?? 0,
|
|
1929
1955
|
conversationTrendPct: valueAt(data, ["conversations", "trend_pct"]) ?? 0,
|
|
@@ -1933,10 +1959,16 @@ function overviewMetrics(data) {
|
|
|
1933
1959
|
frustrated: valueAt(data, ["frustrations", "frustrated"]) ?? 0,
|
|
1934
1960
|
atRisk: valueAt(data, ["frustrations", "at_risk"]) ?? 0,
|
|
1935
1961
|
frustrationRatePct: valueAt(data, ["frustrations", "rate_pct"]) ?? 0,
|
|
1962
|
+
...signalsRate ? { signalsNegativeEmotionRatePct: signalsRate.ratePct, signalsNegativeEmotionUnit: signalsRate.unit, signalsNegativeEmotionUnitSource: signalsRate.unitSource, signalsNegativeEmotionCoverageSince: signalsRate.coverageSince } : {},
|
|
1936
1963
|
recentActivity: recentActivity(data).length
|
|
1937
1964
|
};
|
|
1938
1965
|
}
|
|
1939
1966
|
function overviewSignalPairs(metrics) {
|
|
1967
|
+
const signalsRate = asNumber(metrics.signalsNegativeEmotionRatePct);
|
|
1968
|
+
const unit = asString(metrics.signalsNegativeEmotionUnit);
|
|
1969
|
+
const source = metrics.signalsNegativeEmotionUnitSource;
|
|
1970
|
+
const coverage = asString(metrics.signalsNegativeEmotionCoverageSince);
|
|
1971
|
+
const unitLabel = `${unit}${source === "fallback_unavailable" ? " (default; saved unit unverified)" : source === "default" ? " (default)" : ""}${signalsCoverageLabel({ coverageSince: coverage })}`;
|
|
1940
1972
|
return [
|
|
1941
1973
|
["Traces", metrics.conversations],
|
|
1942
1974
|
["Tool failures", metrics.toolFailures],
|
|
@@ -1944,7 +1976,8 @@ function overviewSignalPairs(metrics) {
|
|
|
1944
1976
|
["Impacted tools", metrics.impactedTools],
|
|
1945
1977
|
["Frustrated", metrics.frustrated],
|
|
1946
1978
|
["At risk", metrics.atRisk],
|
|
1947
|
-
["Frustration
|
|
1979
|
+
["Frustration family %, analyzed conversations", metrics.frustrationRatePct],
|
|
1980
|
+
...signalsRate !== null && unit ? [[`Signals negative-emotion %, ${unitLabel}`, signalsRate]] : [],
|
|
1948
1981
|
["Recent events", metrics.recentActivity]
|
|
1949
1982
|
];
|
|
1950
1983
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
inventoryFiles,
|
|
3
3
|
safePromptEvidencePath
|
|
4
|
-
} from "./cli-
|
|
4
|
+
} from "./cli-10zgbewk.js";
|
|
5
5
|
import"./cli-97fnztpy.js";
|
|
6
6
|
import"./cli-xq45etg1.js";
|
|
7
7
|
import"./cli-m4474bnj.js";
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./cli-qpq84eee.js";
|
|
15
15
|
import"./cli-9kfxkxmk.js";
|
|
16
16
|
import"./cli-ns5fcnkz.js";
|
|
17
|
-
import"./cli-
|
|
17
|
+
import"./cli-jj77e5yp.js";
|
|
18
18
|
import"./cli-k4tqwah4.js";
|
|
19
19
|
import {
|
|
20
20
|
__toESM
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
checkPromptMapping,
|
|
4
4
|
discoverHarnessPromptSources,
|
|
5
5
|
safePromptEvidencePath
|
|
6
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-10zgbewk.js";
|
|
7
7
|
import"./cli-97fnztpy.js";
|
|
8
8
|
import"./cli-xq45etg1.js";
|
|
9
9
|
import"./cli-m4474bnj.js";
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "./cli-qpq84eee.js";
|
|
18
18
|
import"./cli-9kfxkxmk.js";
|
|
19
19
|
import"./cli-ns5fcnkz.js";
|
|
20
|
-
import"./cli-
|
|
20
|
+
import"./cli-jj77e5yp.js";
|
|
21
21
|
import"./cli-k4tqwah4.js";
|
|
22
22
|
import {
|
|
23
23
|
__commonJS,
|
|
@@ -6,11 +6,11 @@ import"./cli-rjav0vj1.js";
|
|
|
6
6
|
import"./cli-hcwdz9sd.js";
|
|
7
7
|
import {
|
|
8
8
|
runPromptsCommand
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-0zws61ba.js";
|
|
10
10
|
import"./cli-mm48br00.js";
|
|
11
11
|
import {
|
|
12
12
|
runHarnessCommand
|
|
13
|
-
} from "./cli-
|
|
13
|
+
} from "./cli-10zgbewk.js";
|
|
14
14
|
import"./cli-97fnztpy.js";
|
|
15
15
|
import"./cli-xq45etg1.js";
|
|
16
16
|
import"./cli-m4474bnj.js";
|
|
@@ -21,7 +21,7 @@ import"./cli-da3h2p6w.js";
|
|
|
21
21
|
import"./cli-qpq84eee.js";
|
|
22
22
|
import"./cli-9kfxkxmk.js";
|
|
23
23
|
import"./cli-ns5fcnkz.js";
|
|
24
|
-
import"./cli-
|
|
24
|
+
import"./cli-jj77e5yp.js";
|
|
25
25
|
import {
|
|
26
26
|
CliInputError
|
|
27
27
|
} from "./cli-k4tqwah4.js";
|
package/package.json
CHANGED