@gracker/smartperfetto 1.0.16 → 1.0.18
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/core/conclusionContract.d.ts +7 -0
- package/dist/agent/core/conclusionContract.d.ts.map +1 -1
- package/dist/agent/core/conclusionGenerator.d.ts.map +1 -1
- package/dist/agent/core/conclusionGenerator.js +133 -20
- package/dist/agent/core/conclusionGenerator.js.map +1 -1
- package/dist/agentOpenAI/openAiConfig.d.ts +2 -0
- package/dist/agentOpenAI/openAiConfig.d.ts.map +1 -1
- package/dist/agentOpenAI/openAiConfig.js +3 -0
- package/dist/agentOpenAI/openAiConfig.js.map +1 -1
- package/dist/agentOpenAI/openAiRuntime.d.ts +8 -0
- package/dist/agentOpenAI/openAiRuntime.d.ts.map +1 -1
- package/dist/agentOpenAI/openAiRuntime.js +293 -58
- package/dist/agentOpenAI/openAiRuntime.js.map +1 -1
- package/dist/agentRuntime/runtimeHealth.d.ts +1 -0
- package/dist/agentRuntime/runtimeHealth.d.ts.map +1 -1
- package/dist/agentv3/claudeRuntime.d.ts.map +1 -1
- package/dist/agentv3/claudeRuntime.js +147 -65
- package/dist/agentv3/claudeRuntime.js.map +1 -1
- package/dist/agentv3/claudeSseBridge.d.ts +6 -0
- package/dist/agentv3/claudeSseBridge.d.ts.map +1 -1
- package/dist/agentv3/claudeSseBridge.js +1 -0
- package/dist/agentv3/claudeSseBridge.js.map +1 -1
- package/dist/cli-user/services/cliAnalyzeService.d.ts.map +1 -1
- package/dist/cli-user/services/cliAnalyzeService.js +37 -2
- package/dist/cli-user/services/cliAnalyzeService.js.map +1 -1
- package/dist/routes/agentResumeRoutes.d.ts.map +1 -1
- package/dist/routes/agentResumeRoutes.js +22 -0
- package/dist/routes/agentResumeRoutes.js.map +1 -1
- package/dist/routes/agentRoutes.d.ts.map +1 -1
- package/dist/routes/agentRoutes.js +247 -55
- package/dist/routes/agentRoutes.js.map +1 -1
- package/dist/scripts/verifyAgentSseScrolling.js +142 -2
- package/dist/scripts/verifyAgentSseScrolling.js.map +1 -1
- package/dist/services/agentResultNormalizer.d.ts +15 -3
- package/dist/services/agentResultNormalizer.d.ts.map +1 -1
- package/dist/services/agentResultNormalizer.js +344 -6
- package/dist/services/agentResultNormalizer.js.map +1 -1
- package/dist/services/evidence/evidenceContractBuilder.d.ts.map +1 -1
- package/dist/services/evidence/evidenceContractBuilder.js +19 -3
- package/dist/services/evidence/evidenceContractBuilder.js.map +1 -1
- package/dist/services/finalResultQualityGate.d.ts +18 -0
- package/dist/services/finalResultQualityGate.d.ts.map +1 -0
- package/dist/services/finalResultQualityGate.js +283 -0
- package/dist/services/finalResultQualityGate.js.map +1 -0
- package/dist/services/htmlReportGenerator.d.ts +1 -1
- package/dist/services/htmlReportGenerator.d.ts.map +1 -1
- package/dist/services/htmlReportGenerator.js +63 -42
- package/dist/services/htmlReportGenerator.js.map +1 -1
- package/dist/services/persistAgentSession.d.ts +2 -0
- package/dist/services/persistAgentSession.d.ts.map +1 -1
- package/dist/services/persistAgentSession.js +12 -1
- package/dist/services/persistAgentSession.js.map +1 -1
- package/dist/services/renderingPipelineDetectionSkillGenerator.d.ts.map +1 -1
- package/dist/services/renderingPipelineDetectionSkillGenerator.js +149 -81
- package/dist/services/renderingPipelineDetectionSkillGenerator.js.map +1 -1
- package/dist/types/dataContract.d.ts +2 -0
- package/dist/types/dataContract.d.ts.map +1 -1
- package/dist/types/dataContract.js.map +1 -1
- package/package.json +3 -2
- package/skills/atomic/startup_slow_reasons.skill.yaml +102 -17
- package/skills/composite/startup_analysis.skill.yaml +16 -0
- package/strategies/prompt-openai-final-report-continuation-en.template.md +12 -0
- package/strategies/prompt-openai-final-report-continuation-zh.template.md +12 -0
- package/strategies/prompt-output-format.template.md +1 -1
- package/strategies/startup.strategy.md +4 -1
|
@@ -61,6 +61,13 @@ export interface ConclusionContractMetadata {
|
|
|
61
61
|
rounds?: number;
|
|
62
62
|
clusterPolicy?: ConclusionContractClusterPolicy;
|
|
63
63
|
sceneId?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Claims were derived by matching the final narrative against captured
|
|
66
|
+
* DataEnvelope cells, not emitted explicitly by the model.
|
|
67
|
+
*/
|
|
68
|
+
derivedFromNarrativeEvidenceMatch?: boolean;
|
|
69
|
+
claimDerivation?: 'explicit_model_contract' | 'narrative_evidence_match';
|
|
70
|
+
claimVerificationScope?: 'explicit_claims' | 'sampled_narrative_evidence';
|
|
64
71
|
}
|
|
65
72
|
export interface ConclusionContract {
|
|
66
73
|
schemaVersion: 'conclusion_contract_v1';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conclusionContract.d.ts","sourceRoot":"","sources":["../../../src/agent/core/conclusionContract.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,YAAY,CAAC;AACtF,MAAM,MAAM,2BAA2B,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAC3E,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AACrE,MAAM,MAAM,mBAAmB,GAC3B,SAAS,GACT,aAAa,GACb,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,gBAAgB,CAAC;AACrB,MAAM,MAAM,2BAA2B,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAC;AAE/F,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,2BAA2B,CAAC;IACxC,aAAa,EAAE,8BAA8B,CAAC;IAC9C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gCAAgC;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,2BAA2B;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,UAAU,EAAE,gCAAgC,EAAE,CAAC;IAC/C,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACvG,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,2BAA2B,CAAC;CAC5C;AAED,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,+BAA+B,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"conclusionContract.d.ts","sourceRoot":"","sources":["../../../src/agent/core/conclusionContract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conclusionGenerator.d.ts","sourceRoot":"","sources":["../../../src/agent/core/conclusionGenerator.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,KAAK,EAKV,kBAAkB,EAQlB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAsB9B,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"conclusionGenerator.d.ts","sourceRoot":"","sources":["../../../src/agent/core/conclusionGenerator.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,KAAK,EAKV,kBAAkB,EAQlB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAsB9B,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA+hGD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GACL,kBAAkB,GAAG,IAAI,CAwC3B;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE;IAAE,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/C,MAAM,CAIR;AA2ED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,kBAAkB,EACjC,WAAW,EAAE,OAAO,EAAE,EACtB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,eAAe,EACxB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,MAAM,CAAC,CAqSjB;AAqED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CA+BzF;AAkkBD,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmBrE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBjE"}
|
|
@@ -1710,7 +1710,7 @@ function parseClaimRowSelector(value) {
|
|
|
1710
1710
|
}
|
|
1711
1711
|
else {
|
|
1712
1712
|
const parsed = {};
|
|
1713
|
-
for (const part of text.split(
|
|
1713
|
+
for (const part of text.split(/\s+(?:AND|and)\s+|[,,]/)) {
|
|
1714
1714
|
const match = part.trim().match(/^([^=::]+)\s*(?:=|:|:)\s*(.+)$/);
|
|
1715
1715
|
if (!match)
|
|
1716
1716
|
continue;
|
|
@@ -1735,7 +1735,64 @@ function parseClaimRowSelector(value) {
|
|
|
1735
1735
|
}
|
|
1736
1736
|
return Object.keys(selector).length > 0 ? selector : undefined;
|
|
1737
1737
|
}
|
|
1738
|
-
function
|
|
1738
|
+
function splitClaimList(value) {
|
|
1739
|
+
if (value === undefined || value === null)
|
|
1740
|
+
return [];
|
|
1741
|
+
return String(value)
|
|
1742
|
+
.split(/[,,]/)
|
|
1743
|
+
.map(item => item.trim())
|
|
1744
|
+
.filter(Boolean);
|
|
1745
|
+
}
|
|
1746
|
+
function parseClaimRowIndices(value) {
|
|
1747
|
+
if (value === undefined || value === null || value === '')
|
|
1748
|
+
return [];
|
|
1749
|
+
if (typeof value === 'number' && Number.isInteger(value) && value >= 0)
|
|
1750
|
+
return [value];
|
|
1751
|
+
const text = String(value).trim();
|
|
1752
|
+
const range = text.match(/^(\d+)\s*(?:-|\.\.|~|至|到)\s*(\d+)$/);
|
|
1753
|
+
if (range) {
|
|
1754
|
+
const start = Number(range[1]);
|
|
1755
|
+
const end = Number(range[2]);
|
|
1756
|
+
if (Number.isInteger(start) && Number.isInteger(end) && start >= 0 && end >= start && end - start <= 50) {
|
|
1757
|
+
return Array.from({ length: end - start + 1 }, (_, index) => start + index);
|
|
1758
|
+
}
|
|
1759
|
+
}
|
|
1760
|
+
const parsed = parseNumberFromUnknown(value);
|
|
1761
|
+
return parsed !== undefined && Number.isInteger(parsed) && parsed >= 0 ? [parsed] : [];
|
|
1762
|
+
}
|
|
1763
|
+
function parseClaimTupleValues(rawValue, rowCount, columnCount) {
|
|
1764
|
+
if (rawValue === undefined)
|
|
1765
|
+
return [];
|
|
1766
|
+
if (rowCount > 1) {
|
|
1767
|
+
const rowGroups = splitClaimList(rawValue);
|
|
1768
|
+
if (rowGroups.length === rowCount) {
|
|
1769
|
+
return rowGroups.map(group => {
|
|
1770
|
+
const slashParts = String(group)
|
|
1771
|
+
.split('/')
|
|
1772
|
+
.map(item => item.trim())
|
|
1773
|
+
.filter(Boolean);
|
|
1774
|
+
if (columnCount > 1 && slashParts.length === columnCount) {
|
|
1775
|
+
return slashParts.map(parseClaimScalar);
|
|
1776
|
+
}
|
|
1777
|
+
return [parseClaimScalar(group)];
|
|
1778
|
+
});
|
|
1779
|
+
}
|
|
1780
|
+
}
|
|
1781
|
+
if (columnCount > 1) {
|
|
1782
|
+
const values = splitClaimList(rawValue);
|
|
1783
|
+
if (values.length >= columnCount) {
|
|
1784
|
+
const normalizedValues = values.length === columnCount
|
|
1785
|
+
? values
|
|
1786
|
+
: [
|
|
1787
|
+
...values.slice(0, columnCount - 1),
|
|
1788
|
+
values.slice(columnCount - 1).join(', '),
|
|
1789
|
+
];
|
|
1790
|
+
return [normalizedValues.map(parseClaimScalar)];
|
|
1791
|
+
}
|
|
1792
|
+
}
|
|
1793
|
+
return [[parseClaimScalar(rawValue)]];
|
|
1794
|
+
}
|
|
1795
|
+
function parseClaimReferencesFromRecord(record) {
|
|
1739
1796
|
const evidenceRefId = String(readValueFromAliases(record, [
|
|
1740
1797
|
'evidenceRefId', 'evidence_ref_id', 'evidenceId', 'evidence_id',
|
|
1741
1798
|
]) || '').trim();
|
|
@@ -1746,25 +1803,40 @@ function parseClaimReferenceFromRecord(record) {
|
|
|
1746
1803
|
'sourceToolCallId', 'source_tool_call_id', 'toolCallId', 'tool_call_id',
|
|
1747
1804
|
]) || '').trim();
|
|
1748
1805
|
const rowIndexRaw = readValueFromAliases(record, ['rowIndex', 'row_index']);
|
|
1749
|
-
const
|
|
1806
|
+
const rowIndices = parseClaimRowIndices(rowIndexRaw);
|
|
1750
1807
|
const rowSelector = parseClaimRowSelector(readValueFromAliases(record, ['rowSelector', 'row_selector']));
|
|
1751
|
-
const
|
|
1752
|
-
const
|
|
1808
|
+
const columnRaw = readValueFromAliases(record, ['column', 'col']);
|
|
1809
|
+
const columns = splitClaimList(columnRaw);
|
|
1810
|
+
const rawValue = readValueFromAliases(record, ['value']);
|
|
1753
1811
|
const artifactId = String(readValueFromAliases(record, ['artifactId', 'artifact_id']) || '').trim();
|
|
1754
1812
|
const sourceArtifactId = String(readValueFromAliases(record, ['sourceArtifactId', 'source_artifact_id']) || '').trim();
|
|
1755
1813
|
if (!evidenceRefId && !sourceRef && !sourceToolCallId && !artifactId && !sourceArtifactId)
|
|
1756
|
-
return
|
|
1757
|
-
|
|
1814
|
+
return [];
|
|
1815
|
+
const base = {
|
|
1758
1816
|
...(evidenceRefId ? { evidenceRefId } : {}),
|
|
1759
|
-
...(rowIndex !== undefined ? { rowIndex } : {}),
|
|
1760
|
-
...(rowSelector ? { rowSelector } : {}),
|
|
1761
|
-
...(column ? { column } : {}),
|
|
1762
|
-
...(value !== undefined ? { value } : {}),
|
|
1763
1817
|
...(sourceRef ? { sourceRef } : {}),
|
|
1764
1818
|
...(sourceToolCallId ? { sourceToolCallId } : {}),
|
|
1765
1819
|
...(artifactId ? { artifactId } : {}),
|
|
1766
1820
|
...(sourceArtifactId ? { sourceArtifactId } : {}),
|
|
1767
1821
|
};
|
|
1822
|
+
const rowTargets = rowIndices.length > 0 ? rowIndices : [undefined];
|
|
1823
|
+
const columnTargets = columns.length > 0 ? columns : [undefined];
|
|
1824
|
+
const tupleValues = parseClaimTupleValues(rawValue, rowTargets.length, columnTargets.length);
|
|
1825
|
+
const refs = [];
|
|
1826
|
+
rowTargets.forEach((rowIndex, rowOffset) => {
|
|
1827
|
+
columnTargets.forEach((column, columnOffset) => {
|
|
1828
|
+
const value = tupleValues[rowOffset]?.[columnOffset]
|
|
1829
|
+
?? (rowTargets.length === 1 ? tupleValues[0]?.[columnOffset] : undefined);
|
|
1830
|
+
refs.push({
|
|
1831
|
+
...base,
|
|
1832
|
+
...(rowIndex !== undefined ? { rowIndex } : {}),
|
|
1833
|
+
...(rowSelector ? { rowSelector } : {}),
|
|
1834
|
+
...(column ? { column } : {}),
|
|
1835
|
+
...(value !== undefined ? { value: value } : {}),
|
|
1836
|
+
});
|
|
1837
|
+
});
|
|
1838
|
+
});
|
|
1839
|
+
return refs;
|
|
1768
1840
|
}
|
|
1769
1841
|
function parseClaimKind(value) {
|
|
1770
1842
|
const normalized = String(value || '').trim();
|
|
@@ -1838,8 +1910,7 @@ function parseClaimItemsFromUnknown(value) {
|
|
|
1838
1910
|
? referencesSource
|
|
1839
1911
|
.map(ref => toRecord(ref))
|
|
1840
1912
|
.filter((ref) => Boolean(ref))
|
|
1841
|
-
.
|
|
1842
|
-
.filter((ref) => Boolean(ref))
|
|
1913
|
+
.flatMap(ref => parseClaimReferencesFromRecord(ref))
|
|
1843
1914
|
: [];
|
|
1844
1915
|
const artifactRefs = parseClaimArtifactRefs(readValueFromAliases(record, ['artifactRefs', 'artifact_refs']));
|
|
1845
1916
|
if (references.length === 0 && (!artifactRefs || artifactRefs.length === 0))
|
|
@@ -1885,15 +1956,57 @@ function formatClaimReferenceMarkdown(ref) {
|
|
|
1885
1956
|
parts.push(`value=${String(ref.value)}`);
|
|
1886
1957
|
return parts.join('; ');
|
|
1887
1958
|
}
|
|
1888
|
-
function
|
|
1889
|
-
const
|
|
1959
|
+
function parseClaimReferencesFromMarkdownLine(line) {
|
|
1960
|
+
const identifierKeys = new Set([
|
|
1961
|
+
'evidence_ref_id',
|
|
1962
|
+
'evidenceRefId',
|
|
1963
|
+
'evidence_id',
|
|
1964
|
+
'evidenceId',
|
|
1965
|
+
'source_ref',
|
|
1966
|
+
'sourceRef',
|
|
1967
|
+
'ref',
|
|
1968
|
+
'source_tool_call_id',
|
|
1969
|
+
'sourceToolCallId',
|
|
1970
|
+
'tool_call_id',
|
|
1971
|
+
'toolCallId',
|
|
1972
|
+
'artifact_id',
|
|
1973
|
+
'artifactId',
|
|
1974
|
+
'source_artifact_id',
|
|
1975
|
+
'sourceArtifactId',
|
|
1976
|
+
]);
|
|
1977
|
+
const localKeys = new Set(['row_index', 'rowIndex', 'row_selector', 'rowSelector', 'column', 'col', 'value']);
|
|
1978
|
+
const base = {};
|
|
1979
|
+
const groups = [];
|
|
1980
|
+
let current = {};
|
|
1981
|
+
const flush = () => {
|
|
1982
|
+
if (Object.keys(current).length === 0)
|
|
1983
|
+
return;
|
|
1984
|
+
groups.push({ ...base, ...current });
|
|
1985
|
+
current = {};
|
|
1986
|
+
};
|
|
1890
1987
|
for (const part of String(line || '').split(';')) {
|
|
1891
1988
|
const match = part.trim().match(/^([a-zA-Z_]+)\s*=\s*(.*)$/);
|
|
1892
1989
|
if (!match)
|
|
1893
1990
|
continue;
|
|
1894
|
-
|
|
1991
|
+
const key = match[1];
|
|
1992
|
+
const value = match[2].trim();
|
|
1993
|
+
if (identifierKeys.has(key)) {
|
|
1994
|
+
base[key] = value;
|
|
1995
|
+
continue;
|
|
1996
|
+
}
|
|
1997
|
+
if (localKeys.has(key) &&
|
|
1998
|
+
(Object.prototype.hasOwnProperty.call(current, key)
|
|
1999
|
+
|| ((key === 'row_index' || key === 'rowIndex' || key === 'row_selector' || key === 'rowSelector')
|
|
2000
|
+
&& (current.column !== undefined || current.col !== undefined || current.value !== undefined))
|
|
2001
|
+
|| ((key === 'column' || key === 'col') && current.value !== undefined))) {
|
|
2002
|
+
flush();
|
|
2003
|
+
}
|
|
2004
|
+
current[key] = value;
|
|
1895
2005
|
}
|
|
1896
|
-
|
|
2006
|
+
flush();
|
|
2007
|
+
if (groups.length === 0 && Object.keys(base).length > 0)
|
|
2008
|
+
groups.push({ ...base });
|
|
2009
|
+
return groups.flatMap(group => parseClaimReferencesFromRecord(group));
|
|
1897
2010
|
}
|
|
1898
2011
|
function parseClaimItemsFromMarkdownSection(sectionBody) {
|
|
1899
2012
|
const claims = [];
|
|
@@ -1921,8 +2034,8 @@ function parseClaimItemsFromMarkdownSection(sectionBody) {
|
|
|
1921
2034
|
continue;
|
|
1922
2035
|
}
|
|
1923
2036
|
const refLine = line.replace(/^[-*]\s+/, '').trim();
|
|
1924
|
-
const
|
|
1925
|
-
if (
|
|
2037
|
+
const refs = parseClaimReferencesFromMarkdownLine(refLine);
|
|
2038
|
+
if (refs.length > 0) {
|
|
1926
2039
|
if (!current) {
|
|
1927
2040
|
current = {
|
|
1928
2041
|
id: `Q${claims.length + 1}`,
|
|
@@ -1930,7 +2043,7 @@ function parseClaimItemsFromMarkdownSection(sectionBody) {
|
|
|
1930
2043
|
references: [],
|
|
1931
2044
|
};
|
|
1932
2045
|
}
|
|
1933
|
-
current.references.push(
|
|
2046
|
+
current.references.push(...refs);
|
|
1934
2047
|
}
|
|
1935
2048
|
}
|
|
1936
2049
|
flush();
|