@uzysjung/agent-harness 26.149.0 → 26.150.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.
- package/dist/{chunk-YSW3OLH4.js → chunk-NKBUDHPC.js} +69 -20
- package/dist/chunk-NKBUDHPC.js.map +1 -0
- package/dist/index.js +10 -21
- package/dist/index.js.map +1 -1
- package/dist/trust-tier-drift.js +5 -1
- package/dist/trust-tier-drift.js.map +1 -1
- package/package.json +1 -1
- package/templates/hooks/session-start.sh +57 -3
- package/templates/skills/audit-service-gaps/SKILL.md +6 -7
- package/templates/skills/clear-korean-communication/SKILL.md +8 -13
- package/templates/skills/compaction-handoff/SKILL.md +32 -15
- package/templates/skills/external-model-consult/SKILL.md +13 -24
- package/templates/skills/model-orchestration/SKILL.md +11 -15
- package/templates/skills/north-star/SKILL.md +4 -6
- package/templates/skills/task-brief/SKILL.md +9 -11
- package/dist/chunk-YSW3OLH4.js.map +0 -1
|
@@ -1554,6 +1554,17 @@ function expandTracks(tracks) {
|
|
|
1554
1554
|
}
|
|
1555
1555
|
|
|
1556
1556
|
// src/manifest.ts
|
|
1557
|
+
function buildAssetSpec(ctx) {
|
|
1558
|
+
return {
|
|
1559
|
+
tracks: ctx.tracks,
|
|
1560
|
+
withTauri: isAssetSelected("tauri-desktop", ctx),
|
|
1561
|
+
// v26.55.0 — withEcc gating (ADR-016). withPrune 은 ecc-plugin 사용을 전제한다.
|
|
1562
|
+
withEcc: isAssetSelected("ecc-plugin", ctx) || ctx.options.withPrune === true,
|
|
1563
|
+
// v26.87.0 — internal bundled skills (dev-method + opt-in advisors, v26.95.0). id 별 condition
|
|
1564
|
+
// (has-dev-track vs opt-in)은 isAssetSelected 가 적용한다.
|
|
1565
|
+
selectedInternalSkills: INTERNAL_BUNDLED_SKILL_IDS.filter((id) => isAssetSelected(id, ctx))
|
|
1566
|
+
};
|
|
1567
|
+
}
|
|
1557
1568
|
var all = () => true;
|
|
1558
1569
|
var dev = (s) => hasDevTrack(s.tracks);
|
|
1559
1570
|
var ui = (s) => hasUiTrack(s.tracks);
|
|
@@ -1711,9 +1722,9 @@ function buildManifest(spec) {
|
|
|
1711
1722
|
});
|
|
1712
1723
|
}
|
|
1713
1724
|
m.push({
|
|
1714
|
-
source: "skills/spec-scaling
|
|
1715
|
-
target: ".claude/skills/spec-scaling
|
|
1716
|
-
type: "
|
|
1725
|
+
source: "skills/spec-scaling",
|
|
1726
|
+
target: ".claude/skills/spec-scaling",
|
|
1727
|
+
type: "dir",
|
|
1717
1728
|
applies: all
|
|
1718
1729
|
});
|
|
1719
1730
|
for (const sd of ["market-research", "investor-materials", "investor-outreach"]) {
|
|
@@ -1873,6 +1884,21 @@ function assetCostRows(assetIds, root = resolveBundleRoot()) {
|
|
|
1873
1884
|
bodyTokens: assetBodyTokens(id, root)
|
|
1874
1885
|
})).sort((a, b) => (b.bodyTokens ?? -1) - (a.bodyTokens ?? -1));
|
|
1875
1886
|
}
|
|
1887
|
+
function makeResidentCost(base) {
|
|
1888
|
+
return {
|
|
1889
|
+
...base,
|
|
1890
|
+
perSkillDescriptor: base.perSkillDescriptor ?? {},
|
|
1891
|
+
total: base.rules + base.projectClaudeMd + base.skillDescriptors + base.agentDescriptors,
|
|
1892
|
+
directive: {
|
|
1893
|
+
items: base.items.rules + base.items.claudeMd,
|
|
1894
|
+
tokens: base.rules + base.projectClaudeMd
|
|
1895
|
+
},
|
|
1896
|
+
firing: {
|
|
1897
|
+
items: base.items.skills + base.items.agents,
|
|
1898
|
+
tokens: base.skillDescriptors + base.agentDescriptors
|
|
1899
|
+
}
|
|
1900
|
+
};
|
|
1901
|
+
}
|
|
1876
1902
|
function fileTokens(path2) {
|
|
1877
1903
|
return existsSync3(path2) ? estimateTokens(readFileSync3(path2, "utf8").trim().length) : 0;
|
|
1878
1904
|
}
|
|
@@ -1883,6 +1909,7 @@ function descriptorTokens(path2) {
|
|
|
1883
1909
|
}
|
|
1884
1910
|
function residentCost(entries, root = resolveBundleRoot()) {
|
|
1885
1911
|
const tpl = (source) => join3(root, "templates", source);
|
|
1912
|
+
const perSkill = {};
|
|
1886
1913
|
let rules = 0;
|
|
1887
1914
|
let skillDescriptors = 0;
|
|
1888
1915
|
let agentDescriptors = 0;
|
|
@@ -1897,20 +1924,23 @@ function residentCost(entries, root = resolveBundleRoot()) {
|
|
|
1897
1924
|
agentDescriptors += descriptorTokens(tpl(e.source));
|
|
1898
1925
|
agentItems += 1;
|
|
1899
1926
|
} else if (e.target.startsWith(".claude/skills/")) {
|
|
1900
|
-
|
|
1927
|
+
const t = descriptorTokens(join3(tpl(e.source), "SKILL.md"));
|
|
1928
|
+
skillDescriptors += t;
|
|
1901
1929
|
skillItems += 1;
|
|
1930
|
+
const id = /\.claude\/skills\/([^/]+)/.exec(e.target)?.[1];
|
|
1931
|
+
if (id !== void 0) perSkill[id] = (perSkill[id] ?? 0) + t;
|
|
1902
1932
|
}
|
|
1903
1933
|
}
|
|
1904
1934
|
const harnessAnchor = fileTokens(join3(root, "templates", "CLAUDE.md"));
|
|
1905
1935
|
const projectScaffold = estimateTokens(renderFillScaffold().trim().length);
|
|
1906
1936
|
const projectClaudeMd = harnessAnchor + projectScaffold;
|
|
1907
1937
|
const claudeMdItems = (harnessAnchor > 0 ? 1 : 0) + (projectScaffold > 0 ? 1 : 0);
|
|
1908
|
-
return {
|
|
1938
|
+
return makeResidentCost({
|
|
1909
1939
|
rules,
|
|
1910
1940
|
projectClaudeMd,
|
|
1911
1941
|
skillDescriptors,
|
|
1912
1942
|
agentDescriptors,
|
|
1913
|
-
|
|
1943
|
+
perSkillDescriptor: perSkill,
|
|
1914
1944
|
items: {
|
|
1915
1945
|
rules: ruleItems,
|
|
1916
1946
|
skills: skillItems,
|
|
@@ -1918,7 +1948,7 @@ function residentCost(entries, root = resolveBundleRoot()) {
|
|
|
1918
1948
|
claudeMd: claudeMdItems,
|
|
1919
1949
|
total: ruleItems + skillItems + agentItems + claudeMdItems
|
|
1920
1950
|
}
|
|
1921
|
-
};
|
|
1951
|
+
});
|
|
1922
1952
|
}
|
|
1923
1953
|
function summarizeContextCost(assetIds, root = resolveBundleRoot()) {
|
|
1924
1954
|
let measuredTokens = 0;
|
|
@@ -1937,33 +1967,47 @@ function summarizeContextCost(assetIds, root = resolveBundleRoot()) {
|
|
|
1937
1967
|
function formatResidentCostLine(r, unmeasuredCount) {
|
|
1938
1968
|
if (r.total === 0) return null;
|
|
1939
1969
|
const parts = [
|
|
1940
|
-
`
|
|
1941
|
-
`CLAUDE.md ${r.items.claudeMd} ~${r.projectClaudeMd}`,
|
|
1942
|
-
`
|
|
1943
|
-
`agents ${r.items.agents} ~${r.agentDescriptors}`
|
|
1970
|
+
`directives ${r.directive.items} ~${r.directive.tokens}`,
|
|
1971
|
+
`[rules ${r.items.rules} ~${r.rules} \xB7 CLAUDE.md ${r.items.claudeMd} ~${r.projectClaudeMd}]`,
|
|
1972
|
+
`triggers ${r.firing.items} ~${r.firing.tokens}`,
|
|
1973
|
+
`[skills ${r.items.skills} ~${r.skillDescriptors} \xB7 agents ${r.items.agents} ~${r.agentDescriptors}]`
|
|
1944
1974
|
].join(" \xB7 ");
|
|
1945
1975
|
const external = unmeasuredCount > 0 ? ` \xB7 ${unmeasuredCount} external asset${unmeasuredCount === 1 ? "" : "s"} unmeasured` : "";
|
|
1946
1976
|
return `session-start context cost: ${r.items.total} items resident \xB7 ~${r.total} tokens/session (${parts}${external})`;
|
|
1947
1977
|
}
|
|
1948
1978
|
var RESIDENT_ROWS = [
|
|
1949
|
-
{
|
|
1979
|
+
{
|
|
1980
|
+
// ADR-083 — 축 소계를 **행으로** 낸다. 소계가 없으면 읽는 사람이 네 줄을 머리로 더해야
|
|
1981
|
+
// 하고, 그러면 "무엇을 줄여야 하나"가 표에서 안 보인다.
|
|
1982
|
+
label: "\uC9C0\uC2DC\uBB38",
|
|
1983
|
+
gap: 13,
|
|
1984
|
+
count: (r) => r.directive.items,
|
|
1985
|
+
tokens: (r) => r.directive.tokens
|
|
1986
|
+
},
|
|
1987
|
+
{ label: " rules", gap: 12, count: (r) => r.items.rules, tokens: (r) => r.rules },
|
|
1950
1988
|
{
|
|
1951
1989
|
// 한 행에 두 파일(앵커 + 스캐폴드). 개수 열이 2 를 뱉어 그 사실을 드러낸다 — 라벨로
|
|
1952
1990
|
// 하나만 이름 붙이면 v26.140.0 이전과 같은 거짓 라벨이 된다.
|
|
1953
|
-
label: "CLAUDE.md",
|
|
1954
|
-
gap:
|
|
1991
|
+
label: " CLAUDE.md",
|
|
1992
|
+
gap: 8,
|
|
1955
1993
|
count: (r) => r.items.claudeMd,
|
|
1956
1994
|
tokens: (r) => r.projectClaudeMd
|
|
1957
1995
|
},
|
|
1958
1996
|
{
|
|
1959
|
-
label: "
|
|
1960
|
-
gap:
|
|
1997
|
+
label: "\uBC1C\uD654 \uD45C\uBA74",
|
|
1998
|
+
gap: 10,
|
|
1999
|
+
count: (r) => r.firing.items,
|
|
2000
|
+
tokens: (r) => r.firing.tokens
|
|
2001
|
+
},
|
|
2002
|
+
{
|
|
2003
|
+
label: " skill descriptors",
|
|
2004
|
+
gap: 0,
|
|
1961
2005
|
count: (r) => r.items.skills,
|
|
1962
2006
|
tokens: (r) => r.skillDescriptors
|
|
1963
2007
|
},
|
|
1964
2008
|
{
|
|
1965
|
-
label: "agent descriptors",
|
|
1966
|
-
gap:
|
|
2009
|
+
label: " agent descriptors",
|
|
2010
|
+
gap: 0,
|
|
1967
2011
|
count: (r) => r.items.agents,
|
|
1968
2012
|
tokens: (r) => r.agentDescriptors
|
|
1969
2013
|
}
|
|
@@ -1976,7 +2020,11 @@ function formatResidentCostBlock(r) {
|
|
|
1976
2020
|
(row) => ` ${row.label}${" ".repeat(row.gap)}${n(row.count(r))}\uAC1C ~${row.tokens(r)}`
|
|
1977
2021
|
),
|
|
1978
2022
|
" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
|
|
1979
|
-
` \uC0C1\uC8FC \uD569\uACC4 ${n(r.items.total)}\uAC1C \uC0C1\uC8FC \xB7 ~${r.total} tokens/\uC138\uC158
|
|
2023
|
+
` \uC0C1\uC8FC \uD569\uACC4 ${n(r.items.total)}\uAC1C \uC0C1\uC8FC \xB7 ~${r.total} tokens/\uC138\uC158`,
|
|
2024
|
+
"",
|
|
2025
|
+
" \uC9C0\uC2DC\uBB38 = \uC6B0\uB9AC\uAC00 \uD56D\uC0C1 \uC77D\uD788\uAC8C \uB123\uC740 \uAC83. **\uC791\uC744\uC218\uB85D \uC88B\uC740 \uAC12\uC774 \uC544\uB2C8\uB2E4** \u2014 \uD310\uB2E8\uC740",
|
|
2026
|
+
" '\uBD88\uD544\uC694\uD55C \uC9C0\uC2DC\uBB38\uC774 \uC788\uB098'\uB85C \uD55C\uB2E4. ratchet \uC740 \uC870\uC6A9\uD55C \uC99D\uAC00\uB9CC \uB9C9\uB294\uB2E4.",
|
|
2027
|
+
" \uBC1C\uD654 \uD45C\uBA74 = \uC2A4\uD0AC\xB7\uC5D0\uC774\uC804\uD2B8\uAC00 \uBD88\uB9AC\uB824\uACE0 \uC0C1\uC8FC\uC2DC\uD0A4\uB294 descriptor. \uAE4E\uC73C\uBA74 \uC548 \uBD88\uB9B0\uB2E4."
|
|
1980
2028
|
];
|
|
1981
2029
|
}
|
|
1982
2030
|
|
|
@@ -2029,6 +2077,7 @@ export {
|
|
|
2029
2077
|
renderFillScaffold,
|
|
2030
2078
|
upsertHarnessImport,
|
|
2031
2079
|
stripHarnessImport,
|
|
2080
|
+
buildAssetSpec,
|
|
2032
2081
|
resolveRules,
|
|
2033
2082
|
ALL_RULES,
|
|
2034
2083
|
isCliNeutralTarget,
|
|
@@ -2043,4 +2092,4 @@ export {
|
|
|
2043
2092
|
formatResidentCostLine,
|
|
2044
2093
|
formatResidentCostBlock
|
|
2045
2094
|
};
|
|
2046
|
-
//# sourceMappingURL=chunk-
|
|
2095
|
+
//# sourceMappingURL=chunk-NKBUDHPC.js.map
|