@harness-engineering/cli 2.7.1 → 3.0.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/agents/personas/adversarial-reviewer.yaml +43 -0
- package/dist/agents/personas/frontend-races-reviewer.yaml +54 -0
- package/dist/agents/personas/typescript-strict-reviewer.yaml +53 -0
- package/dist/agents/skills/CHANGELOG.md +12 -0
- package/dist/agents/skills/claude-code/align-design-system/SKILL.md +18 -0
- package/dist/agents/skills/claude-code/align-design-system/skill.yaml +3 -0
- package/dist/agents/skills/claude-code/harness-audit-harness-strength/SKILL.md +188 -0
- package/dist/agents/skills/claude-code/harness-audit-harness-strength/skill.yaml +54 -0
- package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +2 -0
- package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +58 -12
- package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +107 -22
- package/dist/agents/skills/claude-code/harness-code-review/references/confidence-rubric.md +45 -0
- package/dist/agents/skills/claude-code/harness-code-review/references/risk-keywords.md +40 -0
- package/dist/agents/skills/claude-code/harness-code-review/skill.yaml +3 -0
- package/dist/agents/skills/claude-code/harness-compound/SKILL.md +7 -4
- package/dist/agents/skills/claude-code/harness-execution/SKILL.md +1 -1
- package/dist/agents/skills/claude-code/harness-git-workflow/SKILL.md +2 -0
- package/dist/agents/skills/claude-code/harness-ideate/SKILL.md +279 -0
- package/dist/agents/skills/claude-code/harness-ideate/references/scoring.md +88 -0
- package/dist/agents/skills/claude-code/harness-ideate/skill.yaml +66 -0
- package/dist/agents/skills/claude-code/harness-knowledge-pipeline/SKILL.md +2 -0
- package/dist/agents/skills/claude-code/harness-planning/SKILL.md +14 -4
- package/dist/agents/skills/claude-code/harness-pulse/SKILL.md +12 -16
- package/dist/agents/skills/claude-code/harness-roadmap/SKILL.md +62 -4
- package/dist/agents/skills/claude-code/harness-roadmap-pilot/SKILL.md +36 -6
- package/dist/agents/skills/claude-code/harness-strategy/SKILL.md +152 -0
- package/dist/agents/skills/claude-code/harness-strategy/references/interview.md +122 -0
- package/dist/agents/skills/claude-code/harness-strategy/skill.yaml +54 -0
- package/dist/agents/skills/claude-code/harness-test-advisor/SKILL.md +80 -2
- package/dist/agents/skills/claude-code/harness-test-advisor/skill.yaml +4 -1
- package/dist/agents/skills/claude-code/initialize-harness-project/SKILL.md +86 -18
- package/dist/agents/skills/claude-code/initialize-harness-project/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/outcome-eval/SKILL.md +97 -0
- package/dist/agents/skills/claude-code/outcome-eval/skill.yaml +51 -0
- package/dist/agents/skills/codex/align-design-system/SKILL.md +18 -0
- package/dist/agents/skills/codex/align-design-system/skill.yaml +3 -0
- package/dist/agents/skills/codex/harness-audit-harness-strength/SKILL.md +188 -0
- package/dist/agents/skills/codex/harness-audit-harness-strength/skill.yaml +54 -0
- package/dist/agents/skills/codex/harness-autopilot/SKILL.md +2 -0
- package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +58 -12
- package/dist/agents/skills/codex/harness-code-review/SKILL.md +107 -22
- package/dist/agents/skills/codex/harness-code-review/references/confidence-rubric.md +45 -0
- package/dist/agents/skills/codex/harness-code-review/references/risk-keywords.md +40 -0
- package/dist/agents/skills/codex/harness-code-review/skill.yaml +3 -0
- package/dist/agents/skills/codex/harness-compound/SKILL.md +7 -4
- package/dist/agents/skills/codex/harness-execution/SKILL.md +1 -1
- package/dist/agents/skills/codex/harness-git-workflow/SKILL.md +2 -0
- package/dist/agents/skills/codex/harness-ideate/SKILL.md +279 -0
- package/dist/agents/skills/codex/harness-ideate/references/scoring.md +88 -0
- package/dist/agents/skills/codex/harness-ideate/skill.yaml +66 -0
- package/dist/agents/skills/codex/harness-knowledge-pipeline/SKILL.md +2 -0
- package/dist/agents/skills/codex/harness-planning/SKILL.md +14 -4
- package/dist/agents/skills/codex/harness-pulse/SKILL.md +12 -16
- package/dist/agents/skills/codex/harness-roadmap/SKILL.md +62 -4
- package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +36 -6
- package/dist/agents/skills/codex/harness-strategy/SKILL.md +152 -0
- package/dist/agents/skills/codex/harness-strategy/references/interview.md +122 -0
- package/dist/agents/skills/codex/harness-strategy/skill.yaml +54 -0
- package/dist/agents/skills/codex/harness-test-advisor/SKILL.md +80 -2
- package/dist/agents/skills/codex/harness-test-advisor/skill.yaml +4 -1
- package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +86 -18
- package/dist/agents/skills/codex/initialize-harness-project/skill.yaml +1 -0
- package/dist/agents/skills/codex/outcome-eval/SKILL.md +97 -0
- package/dist/agents/skills/codex/outcome-eval/skill.yaml +51 -0
- package/dist/agents/skills/cursor/align-design-system/SKILL.md +18 -0
- package/dist/agents/skills/cursor/align-design-system/skill.yaml +3 -0
- package/dist/agents/skills/cursor/harness-audit-harness-strength/SKILL.md +188 -0
- package/dist/agents/skills/cursor/harness-audit-harness-strength/skill.yaml +54 -0
- package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +2 -0
- package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +58 -12
- package/dist/agents/skills/cursor/harness-code-review/SKILL.md +107 -22
- package/dist/agents/skills/cursor/harness-code-review/references/confidence-rubric.md +45 -0
- package/dist/agents/skills/cursor/harness-code-review/references/risk-keywords.md +40 -0
- package/dist/agents/skills/cursor/harness-code-review/skill.yaml +3 -0
- package/dist/agents/skills/cursor/harness-compound/SKILL.md +7 -4
- package/dist/agents/skills/cursor/harness-execution/SKILL.md +1 -1
- package/dist/agents/skills/cursor/harness-git-workflow/SKILL.md +2 -0
- package/dist/agents/skills/cursor/harness-ideate/SKILL.md +279 -0
- package/dist/agents/skills/cursor/harness-ideate/references/scoring.md +88 -0
- package/dist/agents/skills/cursor/harness-ideate/skill.yaml +66 -0
- package/dist/agents/skills/cursor/harness-knowledge-pipeline/SKILL.md +2 -0
- package/dist/agents/skills/cursor/harness-planning/SKILL.md +14 -4
- package/dist/agents/skills/cursor/harness-pulse/SKILL.md +12 -16
- package/dist/agents/skills/cursor/harness-roadmap/SKILL.md +62 -4
- package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +36 -6
- package/dist/agents/skills/cursor/harness-strategy/SKILL.md +152 -0
- package/dist/agents/skills/cursor/harness-strategy/references/interview.md +122 -0
- package/dist/agents/skills/cursor/harness-strategy/skill.yaml +54 -0
- package/dist/agents/skills/cursor/harness-test-advisor/SKILL.md +80 -2
- package/dist/agents/skills/cursor/harness-test-advisor/skill.yaml +4 -1
- package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +86 -18
- package/dist/agents/skills/cursor/initialize-harness-project/skill.yaml +1 -0
- package/dist/agents/skills/cursor/outcome-eval/SKILL.md +97 -0
- package/dist/agents/skills/cursor/outcome-eval/skill.yaml +51 -0
- package/dist/agents/skills/gemini-cli/align-design-system/SKILL.md +18 -0
- package/dist/agents/skills/gemini-cli/align-design-system/skill.yaml +3 -0
- package/dist/agents/skills/gemini-cli/harness-audit-harness-strength/SKILL.md +188 -0
- package/dist/agents/skills/gemini-cli/harness-audit-harness-strength/skill.yaml +54 -0
- package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +2 -0
- package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +58 -12
- package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +107 -22
- package/dist/agents/skills/gemini-cli/harness-code-review/references/confidence-rubric.md +45 -0
- package/dist/agents/skills/gemini-cli/harness-code-review/references/risk-keywords.md +40 -0
- package/dist/agents/skills/gemini-cli/harness-code-review/skill.yaml +3 -0
- package/dist/agents/skills/gemini-cli/harness-compound/SKILL.md +7 -4
- package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +1 -1
- package/dist/agents/skills/gemini-cli/harness-git-workflow/SKILL.md +2 -0
- package/dist/agents/skills/gemini-cli/harness-ideate/SKILL.md +279 -0
- package/dist/agents/skills/gemini-cli/harness-ideate/references/scoring.md +88 -0
- package/dist/agents/skills/gemini-cli/harness-ideate/skill.yaml +66 -0
- package/dist/agents/skills/gemini-cli/harness-knowledge-pipeline/SKILL.md +2 -0
- package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +14 -4
- package/dist/agents/skills/gemini-cli/harness-pulse/SKILL.md +12 -16
- package/dist/agents/skills/gemini-cli/harness-roadmap/SKILL.md +62 -4
- package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +36 -6
- package/dist/agents/skills/gemini-cli/harness-strategy/SKILL.md +152 -0
- package/dist/agents/skills/gemini-cli/harness-strategy/references/interview.md +122 -0
- package/dist/agents/skills/gemini-cli/harness-strategy/skill.yaml +54 -0
- package/dist/agents/skills/gemini-cli/harness-test-advisor/SKILL.md +80 -2
- package/dist/agents/skills/gemini-cli/harness-test-advisor/skill.yaml +4 -1
- package/dist/agents/skills/gemini-cli/initialize-harness-project/SKILL.md +86 -18
- package/dist/agents/skills/gemini-cli/initialize-harness-project/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/outcome-eval/SKILL.md +97 -0
- package/dist/agents/skills/gemini-cli/outcome-eval/skill.yaml +51 -0
- package/dist/agents/skills/package.json +1 -1
- package/dist/agents/skills/tests/harness-strategy.test.ts +145 -0
- package/dist/agents/skills/tests/harness-test-advisor.test.ts +94 -0
- package/dist/agents-md-XOJE5ETA.js +13 -0
- package/dist/analyzer-V633GUHY-MBCQWKDU.js +26 -0
- package/dist/{architecture-LUR2I67H.js → architecture-JEZPJ725.js} +6 -6
- package/dist/{assess-project-OJWECOP2.js → assess-project-RHXOQNMM.js} +1 -1
- package/dist/bin/harness-mcp.js +17 -17
- package/dist/bin/harness.js +27 -27
- package/dist/{check-phase-gate-HS5KYLRO.js → check-phase-gate-GNDOMS35.js} +6 -6
- package/dist/{chunk-6UHDQP2N.js → chunk-2N4OENGE.js} +1 -1
- package/dist/{chunk-O2ASYKA6.js → chunk-3ISHDWO7.js} +2 -2
- package/dist/{chunk-GGSNWH7P.js → chunk-527G27VI.js} +5 -5
- package/dist/{chunk-N5NSSLMU.js → chunk-6WQCLCBO.js} +2 -2
- package/dist/{chunk-OH3NXXUY.js → chunk-BDGTZRZ6.js} +11 -1
- package/dist/{chunk-Z3TMCCZB.js → chunk-BYVT5LVO.js} +9 -9
- package/dist/{chunk-TIH53QXY.js → chunk-CLI4K2CH.js} +1 -1
- package/dist/{chunk-VSIRUZQP.js → chunk-DE5U6KOL.js} +2 -2
- package/dist/{chunk-FXZI6NJ2.js → chunk-GGKRA7A7.js} +51 -4
- package/dist/{chunk-RJ2WEES5.js → chunk-GSP2XIVS.js} +2 -2
- package/dist/{chunk-CZPOPMMI.js → chunk-HEIMJJI4.js} +3 -3
- package/dist/{chunk-7AF6C5GE.js → chunk-HWTUUQOW.js} +3 -3
- package/dist/{chunk-FC4JPM6W.js → chunk-KAJOS3BA.js} +3 -3
- package/dist/{chunk-NIVWM7OW.js → chunk-MGUPSE6D.js} +10 -10
- package/dist/{chunk-WZY5U6NS.js → chunk-N24HCQA4.js} +3351 -887
- package/dist/{chunk-Y4T6ENKQ.js → chunk-N55WOGN3.js} +86 -17
- package/dist/{chunk-INBTDBV2.js → chunk-NWLGL3IR.js} +1 -1
- package/dist/{chunk-FEKBXX2J.js → chunk-ONCPJGHY.js} +9 -9
- package/dist/{chunk-PTHX545Q.js → chunk-PC2R5RUJ.js} +2 -2
- package/dist/{chunk-H2ZJOJ7A.js → chunk-PP6ZRL5T.js} +316 -42
- package/dist/{chunk-LECXPXS3.js → chunk-QBC7DI4Q.js} +2 -2
- package/dist/{chunk-B2VAYLYI.js → chunk-UX3PQKVZ.js} +8 -3
- package/dist/{chunk-7PLIWP7U.js → chunk-WWEVS7RO.js} +4409 -743
- package/dist/{chunk-LGYXR2KZ.js → chunk-XFU6SB2Q.js} +1122 -689
- package/dist/{chunk-KN3EMDZ5.js → chunk-XX4OLNWQ.js} +23 -3
- package/dist/{chunk-VI4IS55S.js → chunk-YQSYCBAH.js} +6 -6
- package/dist/{chunk-LYIPI2SJ.js → chunk-Z4AWEIBY.js} +6 -6
- package/dist/{ci-workflow-MDSTHJOY.js → ci-workflow-ORZ4F45F.js} +5 -5
- package/dist/{dist-E3SAAHCM.js → dist-ICW4QUEW.js} +5 -1
- package/dist/{dist-72ID44UE.js → dist-LHINSVK4.js} +136 -4
- package/dist/{dist-R3TOOPJ7.js → dist-OWHMNL4W.js} +1 -1
- package/dist/{docs-2RFOJ6XY.js → docs-AU3DXFFO.js} +6 -6
- package/dist/engine-6GPWOYQH.js +13 -0
- package/dist/{entropy-3UX6644G.js → entropy-VLKDRMRT.js} +5 -5
- package/dist/{feedback-CVCFYND4.js → feedback-YXYY44ZC.js} +1 -1
- package/dist/{generate-agent-definitions-HZ3XENWO.js → generate-agent-definitions-XIHQPKG3.js} +6 -6
- package/dist/{glob-helper-EX4YZKZO.js → glob-helper-GLZAURJC.js} +1 -1
- package/dist/{graph-loader-EIFEOUVI.js → graph-loader-HHXN5FLP.js} +1 -1
- package/dist/hooks/cost-tracker.js +29 -6
- package/dist/index.d.ts +202 -0
- package/dist/index.js +27 -27
- package/dist/{loader-6RHWU5FH.js → loader-YAN56MT3.js} +5 -5
- package/dist/{mcp-OYR26JDI.js → mcp-RK3SFVYB.js} +17 -17
- package/dist/{performance-JJMIRXCH.js → performance-64DPTLLQ.js} +6 -6
- package/dist/{review-pipeline-BHQZIXWZ.js → review-pipeline-NENG6LW7.js} +5 -5
- package/dist/{runtime-DALTAVTN.js → runtime-FFIIRT2T.js} +5 -5
- package/dist/{scan-LYKLM4EQ.js → scan-P7YFKB77.js} +1 -1
- package/dist/{security-RMLMYFPB.js → security-3PIBN35B.js} +1 -1
- package/dist/templates/basic/harness.config.json.hbs +34 -0
- package/dist/templates/ci/README.md +86 -0
- package/dist/templates/ci/required-review.ruleset.json +20 -0
- package/dist/templates/ci/required-review.yml.hbs +57 -0
- package/dist/templates/ci/template.json +5 -0
- package/dist/templates/intermediate/harness.config.json.hbs +36 -0
- package/dist/templates/orchestrator/harness.orchestrator.md +9 -0
- package/dist/{tool-tiers-B7JC2XC3.js → tool-tiers-OKK5FE57.js} +2 -0
- package/dist/{validate-R7DZRDFK.js → validate-7IAF2ES3.js} +6 -6
- package/dist/validate-cross-check-QPSAOZKD.js +13 -0
- package/package.json +8 -8
- package/dist/agents-md-FKMKH6ZF.js +0 -13
- package/dist/analyzer-H3AHBFSL-KPOPJYRB.js +0 -26
- package/dist/engine-BSFKOGPN.js +0 -13
- package/dist/validate-cross-check-AUUZFNVL.js +0 -13
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: outcome-eval
|
|
2
|
+
version: '0.1.0'
|
|
3
|
+
description: >-
|
|
4
|
+
LLM-judgment skill that produces a structured, confidence-rated verdict on
|
|
5
|
+
whether an implementation satisfied its spec. Reads the spec's acceptance
|
|
6
|
+
section, the change diff, and test output; emits an OutcomeVerdict
|
|
7
|
+
(SATISFIED | NOT_SATISFIED | INCONCLUSIVE) with confidence, rationale, and
|
|
8
|
+
unmet criteria. Authority is derived in TypeScript, never from the LLM: a
|
|
9
|
+
high-confidence NOT_SATISFIED blocks ship; every other verdict is advisory.
|
|
10
|
+
The verdict persists as an execution_outcome node and feeds skill-effectiveness
|
|
11
|
+
baselines. The harness's first blocking post-execution spec-satisfaction gate.
|
|
12
|
+
stability: draft
|
|
13
|
+
cognitive_mode: constructive-architect
|
|
14
|
+
triggers:
|
|
15
|
+
- manual
|
|
16
|
+
- on_pr
|
|
17
|
+
platforms:
|
|
18
|
+
- claude-code
|
|
19
|
+
tools:
|
|
20
|
+
- Bash
|
|
21
|
+
- Read
|
|
22
|
+
- Glob
|
|
23
|
+
- Grep
|
|
24
|
+
mcp:
|
|
25
|
+
tool: outcome_eval
|
|
26
|
+
# specPath, diff, and testOutput are ALL required. diff/testOutput are the
|
|
27
|
+
# evidence the judge reasons over: omitting them degrades the verdict to
|
|
28
|
+
# INCONCLUSIVE/advisory (never blocking), so the agent MUST supply them.
|
|
29
|
+
input:
|
|
30
|
+
specPath: 'string (required) — absolute or repo-relative path to the spec markdown to judge against'
|
|
31
|
+
diff: 'string (required) — unified diff of the change under judgment (git diff); omission degrades the verdict to INCONCLUSIVE/advisory'
|
|
32
|
+
testOutput: 'string (required) — captured test-runner stdout+stderr; omission degrades the verdict to INCONCLUSIVE/advisory'
|
|
33
|
+
model: 'string (optional) — model override for the outcome-eval LLM call'
|
|
34
|
+
path: 'string (optional) — project root used to resolve the knowledge graph (default cwd)'
|
|
35
|
+
type: rigid
|
|
36
|
+
tier: 2
|
|
37
|
+
phases:
|
|
38
|
+
- name: gather
|
|
39
|
+
description: Collect the unified diff (git diff), capture test output, resolve the spec path
|
|
40
|
+
required: true
|
|
41
|
+
- name: resolve
|
|
42
|
+
description: Resolve the judgment section (Success Criteria -> User-Visible Behavior -> Overview)
|
|
43
|
+
required: true
|
|
44
|
+
- name: judge
|
|
45
|
+
description: Invoke OutcomeEvaluator.evaluate(); LLM returns verdict/confidence/rationale/unmetCriteria; authority derived in TS
|
|
46
|
+
required: true
|
|
47
|
+
- name: gate
|
|
48
|
+
description: Render the verdict; on a blocking verdict (NOT_SATISFIED + high confidence) halt before Ship
|
|
49
|
+
required: true
|
|
50
|
+
state:
|
|
51
|
+
persistent: false
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
// agents/skills/tests/harness-strategy.test.ts
|
|
2
|
+
//
|
|
3
|
+
// Contract tests for the harness-strategy skill. The skill prose itself is
|
|
4
|
+
// executed by an agent (not by node), so behavioral correctness is
|
|
5
|
+
// human-judged in practice. Phase 2 of the strategic-anchor spec owns:
|
|
6
|
+
// - the three pushback rules are *named and cited* in references/interview.md
|
|
7
|
+
// - the 2-round cap is documented
|
|
8
|
+
// - the anti-pattern fixtures exist for each rule
|
|
9
|
+
// - the writer integration is documented in SKILL.md
|
|
10
|
+
//
|
|
11
|
+
// Generic structure, schema, and platform-parity coverage lives in sibling files
|
|
12
|
+
// (structure.test.ts, schema.test.ts, references.test.ts, platform-parity.test.ts).
|
|
13
|
+
|
|
14
|
+
import { describe, it, expect } from 'vitest';
|
|
15
|
+
import { readFileSync, existsSync } from 'fs';
|
|
16
|
+
import { resolve, dirname } from 'path';
|
|
17
|
+
import { fileURLToPath } from 'url';
|
|
18
|
+
import { ALLOWED_PLATFORMS } from './schema';
|
|
19
|
+
|
|
20
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
21
|
+
const SKILLS_DIR = resolve(__dirname, '..');
|
|
22
|
+
|
|
23
|
+
const SKILL_NAME = 'harness-strategy';
|
|
24
|
+
|
|
25
|
+
function skillFile(platform: string, file: string): string {
|
|
26
|
+
return resolve(SKILLS_DIR, platform, SKILL_NAME, file);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
describe('harness-strategy skill — Phase 2 contract', () => {
|
|
30
|
+
describe('skill files exist in every supported platform', () => {
|
|
31
|
+
for (const platform of ALLOWED_PLATFORMS) {
|
|
32
|
+
it(`${platform}/${SKILL_NAME}/SKILL.md exists`, () => {
|
|
33
|
+
expect(existsSync(skillFile(platform, 'SKILL.md'))).toBe(true);
|
|
34
|
+
});
|
|
35
|
+
it(`${platform}/${SKILL_NAME}/skill.yaml exists`, () => {
|
|
36
|
+
expect(existsSync(skillFile(platform, 'skill.yaml'))).toBe(true);
|
|
37
|
+
});
|
|
38
|
+
it(`${platform}/${SKILL_NAME}/references/interview.md exists`, () => {
|
|
39
|
+
expect(existsSync(skillFile(platform, 'references/interview.md'))).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
describe('references/interview.md documents the three pushback rules', () => {
|
|
45
|
+
const interview = readFileSync(skillFile('claude-code', 'references/interview.md'), 'utf-8');
|
|
46
|
+
|
|
47
|
+
it('names "Fluff detection"', () => {
|
|
48
|
+
expect(interview).toMatch(/Fluff detection/);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('names "Goal-as-strategy"', () => {
|
|
52
|
+
expect(interview).toMatch(/Goal-as-strategy/);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('names "Feature-list-as-strategy"', () => {
|
|
56
|
+
expect(interview).toMatch(/Feature-list-as-strategy/);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('includes a repair script keyword for each rule', () => {
|
|
60
|
+
// Each rule's repair script anchors on a specific keyword the agent
|
|
61
|
+
// quotes when pushing back. Test these by name to keep prose tweaks
|
|
62
|
+
// free while catching accidental rule deletion.
|
|
63
|
+
expect(interview).toMatch(/concrete diagnosis/i);
|
|
64
|
+
expect(interview).toMatch(/\bbet\b/);
|
|
65
|
+
expect(interview).toMatch(/coherent action/i);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('documents the 2-round cap explicitly', () => {
|
|
69
|
+
expect(interview).toMatch(/2[ -]?[Rr]ound|two[ -]?round|AT MOST TWICE|at most twice/);
|
|
70
|
+
expect(interview).toMatch(/cap/i);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('documents separation from docs/roadmap.md', () => {
|
|
74
|
+
expect(interview).toMatch(/docs\/roadmap\.md/);
|
|
75
|
+
expect(interview).toMatch(/[Dd]ecision 1/);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('includes anti-pattern fixtures for each rule', () => {
|
|
79
|
+
expect(interview).toMatch(/Fluff detection fixture/);
|
|
80
|
+
expect(interview).toMatch(/Goal-as-strategy fixture/);
|
|
81
|
+
expect(interview).toMatch(/Feature-list-as-strategy fixture/);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
describe('SKILL.md documents the writer integration', () => {
|
|
86
|
+
const skillMd = readFileSync(skillFile('claude-code', 'SKILL.md'), 'utf-8');
|
|
87
|
+
|
|
88
|
+
it('references writeStrategyDoc as the sanctioned write path', () => {
|
|
89
|
+
expect(skillMd).toMatch(/writeStrategyDoc/);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('references @harness-engineering/core as the import source', () => {
|
|
93
|
+
expect(skillMd).toMatch(/@harness-engineering\/core/);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it('documents the stdin-piped Node one-liner pattern', () => {
|
|
97
|
+
// The pattern protects against shell injection from user-supplied
|
|
98
|
+
// section bodies. SKILL.md must show the stdin route, not a shell-arg
|
|
99
|
+
// route, so the agent doesn't paste user input into the command line.
|
|
100
|
+
expect(skillMd).toMatch(/readFileSync\(0/);
|
|
101
|
+
expect(skillMd).toMatch(/JSON\.parse/);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it('documents Phase 0 routing for present-but-invalid files', () => {
|
|
105
|
+
expect(skillMd).toMatch(/present-but-invalid|present and invalid/i);
|
|
106
|
+
expect(skillMd).toMatch(/STRATEGY\.md\.bak\.[<{]/);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it('documents the four downstream consumers in the handoff phase', () => {
|
|
110
|
+
expect(skillMd).toMatch(/harness-brainstorming/);
|
|
111
|
+
expect(skillMd).toMatch(/harness-ideate/);
|
|
112
|
+
expect(skillMd).toMatch(/harness-roadmap-pilot/);
|
|
113
|
+
expect(skillMd).toMatch(/BusinessKnowledgeIngestor/);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
describe('skill.yaml metadata', () => {
|
|
118
|
+
const yamlPath = skillFile('claude-code', 'skill.yaml');
|
|
119
|
+
const yaml = readFileSync(yamlPath, 'utf-8');
|
|
120
|
+
|
|
121
|
+
it('declares type: rigid (configuration-interviewer)', () => {
|
|
122
|
+
expect(yaml).toMatch(/type:\s*rigid/);
|
|
123
|
+
expect(yaml).toMatch(/cognitive_mode:\s*configuration-interviewer/);
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
it('declares the four required platforms', () => {
|
|
127
|
+
expect(yaml).toMatch(/claude-code/);
|
|
128
|
+
expect(yaml).toMatch(/gemini-cli/);
|
|
129
|
+
expect(yaml).toMatch(/cursor/);
|
|
130
|
+
expect(yaml).toMatch(/codex/);
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
it('declares manual-only trigger (strategy is never auto-fired)', () => {
|
|
134
|
+
expect(yaml).toMatch(/triggers:\s*\n\s*-\s*manual\s*\n/);
|
|
135
|
+
// No other triggers allowed — strategy is human-owned.
|
|
136
|
+
expect(yaml).not.toMatch(/-\s*on_/);
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
it('declares persistent state with STRATEGY.md and .bak files', () => {
|
|
140
|
+
expect(yaml).toMatch(/persistent:\s*true/);
|
|
141
|
+
expect(yaml).toMatch(/STRATEGY\.md\s*$/m);
|
|
142
|
+
expect(yaml).toMatch(/STRATEGY\.md\.bak/);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
});
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// agents/skills/tests/harness-test-advisor.test.ts
|
|
2
|
+
//
|
|
3
|
+
// Contract tests for the harness-test-advisor skill. Locks in the Coverage
|
|
4
|
+
// Audit mode contract from GH issue 488: skill exposes an audit entry point,
|
|
5
|
+
// SKILL.md documents the three audit phases (INVENTORY, QUALITY REVIEW,
|
|
6
|
+
// GAP REPORT), and the canary plugin agents are named as the remediation
|
|
7
|
+
// path. Generic schema/structure/parity checks live in the sibling
|
|
8
|
+
// *.test.ts files.
|
|
9
|
+
|
|
10
|
+
import { describe, it, expect } from 'vitest';
|
|
11
|
+
import { readFileSync } from 'fs';
|
|
12
|
+
import { resolve, dirname } from 'path';
|
|
13
|
+
import { fileURLToPath } from 'url';
|
|
14
|
+
import { parse } from 'yaml';
|
|
15
|
+
|
|
16
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
17
|
+
const SKILLS_DIR = resolve(__dirname, '..');
|
|
18
|
+
|
|
19
|
+
const SKILL_NAME = 'harness-test-advisor';
|
|
20
|
+
const PLATFORMS = ['claude-code', 'gemini-cli', 'cursor', 'codex'] as const;
|
|
21
|
+
|
|
22
|
+
function readSkillYaml(platform: string): Record<string, unknown> {
|
|
23
|
+
const path = resolve(SKILLS_DIR, platform, SKILL_NAME, 'skill.yaml');
|
|
24
|
+
return parse(readFileSync(path, 'utf-8'));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function readSkillMd(platform: string): string {
|
|
28
|
+
return readFileSync(resolve(SKILLS_DIR, platform, SKILL_NAME, 'SKILL.md'), 'utf-8');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
describe('harness-test-advisor Coverage Audit metadata', () => {
|
|
32
|
+
it.each(PLATFORMS)('%s skill.yaml exposes an audit CLI arg', (platform) => {
|
|
33
|
+
const meta = readSkillYaml(platform) as {
|
|
34
|
+
cli: { args: Array<{ name: string }> };
|
|
35
|
+
};
|
|
36
|
+
const argNames = meta.cli.args.map((a) => a.name);
|
|
37
|
+
expect(argNames).toContain('audit');
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it.each(PLATFORMS)(
|
|
41
|
+
'%s skill.yaml description advertises coverage audit alongside selection',
|
|
42
|
+
(platform) => {
|
|
43
|
+
const meta = readSkillYaml(platform) as { description: string };
|
|
44
|
+
expect(meta.description).toMatch(/coverage/i);
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
describe('harness-test-advisor SKILL.md surfaces Coverage Audit mode', () => {
|
|
50
|
+
it.each(PLATFORMS)('%s SKILL.md advertises Coverage Audit in When to Use', (platform) => {
|
|
51
|
+
const body = readSkillMd(platform);
|
|
52
|
+
const whenToUse = body.split('## Prerequisites')[0] ?? '';
|
|
53
|
+
expect(whenToUse).toMatch(/Coverage Audit/);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
const AUDIT_PHASES = ['INVENTORY', 'QUALITY REVIEW', 'GAP REPORT'];
|
|
57
|
+
|
|
58
|
+
it.each(PLATFORMS)('%s SKILL.md declares the three Coverage Audit phases', (platform) => {
|
|
59
|
+
const body = readSkillMd(platform);
|
|
60
|
+
for (const phase of AUDIT_PHASES) {
|
|
61
|
+
expect(body, `missing Coverage Audit phase "${phase}" in ${platform}`).toContain(phase);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
const CANARY_SKILLS = [
|
|
66
|
+
'canary:canary-review-test',
|
|
67
|
+
'canary:canary-write-test',
|
|
68
|
+
'canary:canary-pick-framework',
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
it.each(PLATFORMS)('%s SKILL.md routes audit follow-ups to canary plugin skills', (platform) => {
|
|
72
|
+
const body = readSkillMd(platform);
|
|
73
|
+
for (const skill of CANARY_SKILLS) {
|
|
74
|
+
expect(body, `missing canary skill reference "${skill}" in ${platform}`).toContain(skill);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
describe('harness-test-advisor wires the canary MCP tools (deterministic path)', () => {
|
|
80
|
+
// The audit probes the canary CLI for graceful degradation and uses the
|
|
81
|
+
// deterministic framework recommender — separate from the generative plugin path.
|
|
82
|
+
const CANARY_MCP_TOOLS = ['canary_probe', 'canary_recommend_framework'];
|
|
83
|
+
|
|
84
|
+
it.each(PLATFORMS)('%s SKILL.md declares an audit PROBE phase', (platform) => {
|
|
85
|
+
expect(readSkillMd(platform)).toMatch(/Audit Phase 0: PROBE/);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it.each(PLATFORMS)('%s SKILL.md references both canary MCP tools', (platform) => {
|
|
89
|
+
const body = readSkillMd(platform);
|
|
90
|
+
for (const tool of CANARY_MCP_TOOLS) {
|
|
91
|
+
expect(body, `missing canary MCP tool "${tool}" in ${platform}`).toContain(tool);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
generateAgentsMd
|
|
3
|
+
} from "./chunk-QBC7DI4Q.js";
|
|
4
|
+
import "./chunk-N24HCQA4.js";
|
|
5
|
+
import "./chunk-N55WOGN3.js";
|
|
6
|
+
import "./chunk-BDGTZRZ6.js";
|
|
7
|
+
import "./chunk-PP6ZRL5T.js";
|
|
8
|
+
import "./chunk-QCLOIUMX.js";
|
|
9
|
+
import "./chunk-XARGEOJV.js";
|
|
10
|
+
import "./chunk-KFQGP6VL.js";
|
|
11
|
+
export {
|
|
12
|
+
generateAgentsMd
|
|
13
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EntropyAnalyzer,
|
|
3
|
+
init_chunk_MUWJHO2S,
|
|
4
|
+
init_chunk_S4DTDJ6J
|
|
5
|
+
} from "./chunk-N55WOGN3.js";
|
|
6
|
+
import "./chunk-BDGTZRZ6.js";
|
|
7
|
+
import "./chunk-PP6ZRL5T.js";
|
|
8
|
+
import {
|
|
9
|
+
init_chunk_7P6ASYW6
|
|
10
|
+
} from "./chunk-XARGEOJV.js";
|
|
11
|
+
import {
|
|
12
|
+
__esm
|
|
13
|
+
} from "./chunk-KFQGP6VL.js";
|
|
14
|
+
|
|
15
|
+
// ../core/dist/analyzer-V633GUHY.mjs
|
|
16
|
+
var init_analyzer_V633GUHY = __esm({
|
|
17
|
+
"../core/dist/analyzer-V633GUHY.mjs"() {
|
|
18
|
+
init_chunk_S4DTDJ6J();
|
|
19
|
+
init_chunk_MUWJHO2S();
|
|
20
|
+
init_chunk_7P6ASYW6();
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
init_analyzer_V633GUHY();
|
|
24
|
+
export {
|
|
25
|
+
EntropyAnalyzer
|
|
26
|
+
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
checkDependenciesDefinition,
|
|
3
3
|
handleCheckDependencies
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-527G27VI.js";
|
|
5
|
+
import "./chunk-DE5U6KOL.js";
|
|
6
6
|
import "./chunk-RC3OI5NK.js";
|
|
7
7
|
import "./chunk-W6Y7ZW3Y.js";
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-N24HCQA4.js";
|
|
9
|
+
import "./chunk-N55WOGN3.js";
|
|
10
|
+
import "./chunk-BDGTZRZ6.js";
|
|
11
|
+
import "./chunk-PP6ZRL5T.js";
|
|
12
12
|
import "./chunk-QCLOIUMX.js";
|
|
13
13
|
import "./chunk-XARGEOJV.js";
|
|
14
14
|
import "./chunk-KFQGP6VL.js";
|
package/dist/bin/harness-mcp.js
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
startServer
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-WWEVS7RO.js";
|
|
5
|
+
import "../chunk-HEIMJJI4.js";
|
|
6
|
+
import "../chunk-XX4OLNWQ.js";
|
|
7
|
+
import "../chunk-YQSYCBAH.js";
|
|
8
|
+
import "../chunk-Z4AWEIBY.js";
|
|
9
|
+
import "../chunk-ONCPJGHY.js";
|
|
10
10
|
import "../chunk-IOW3MW2K.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-BYVT5LVO.js";
|
|
12
12
|
import "../chunk-3ISINLYT.js";
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-CLI4K2CH.js";
|
|
14
|
+
import "../chunk-HWTUUQOW.js";
|
|
15
|
+
import "../chunk-527G27VI.js";
|
|
16
|
+
import "../chunk-DE5U6KOL.js";
|
|
17
|
+
import "../chunk-MGUPSE6D.js";
|
|
18
18
|
import "../chunk-RC3OI5NK.js";
|
|
19
19
|
import "../chunk-W6Y7ZW3Y.js";
|
|
20
20
|
import "../chunk-27AJKSQY.js";
|
|
21
21
|
import "../chunk-6B6UN6SG.js";
|
|
22
22
|
import "../chunk-HIK6OEUF.js";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-GGKRA7A7.js";
|
|
24
24
|
import "../chunk-ZCZD7FHU.js";
|
|
25
25
|
import "../chunk-EBJQ6N4M.js";
|
|
26
26
|
import "../chunk-3WGJMBKH.js";
|
|
27
|
-
import "../chunk-
|
|
28
|
-
import "../chunk-
|
|
29
|
-
import "../chunk-
|
|
30
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-N24HCQA4.js";
|
|
28
|
+
import "../chunk-N55WOGN3.js";
|
|
29
|
+
import "../chunk-BDGTZRZ6.js";
|
|
30
|
+
import "../chunk-PP6ZRL5T.js";
|
|
31
31
|
import "../chunk-QCLOIUMX.js";
|
|
32
32
|
import "../chunk-XARGEOJV.js";
|
|
33
33
|
import "../chunk-KFQGP6VL.js";
|
package/dist/bin/harness.js
CHANGED
|
@@ -3,38 +3,38 @@ import {
|
|
|
3
3
|
createProgram,
|
|
4
4
|
installCommandTelemetry,
|
|
5
5
|
printFirstRunWelcome
|
|
6
|
-
} from "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
6
|
+
} from "../chunk-XFU6SB2Q.js";
|
|
7
|
+
import "../chunk-6WQCLCBO.js";
|
|
8
|
+
import "../chunk-QBC7DI4Q.js";
|
|
9
|
+
import "../chunk-GSP2XIVS.js";
|
|
10
|
+
import "../chunk-3ISHDWO7.js";
|
|
11
|
+
import "../chunk-NWLGL3IR.js";
|
|
12
12
|
import "../chunk-KET4QQZB.js";
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-2N4OENGE.js";
|
|
14
|
+
import "../chunk-UX3PQKVZ.js";
|
|
15
15
|
import "../chunk-CQ553GZO.js";
|
|
16
16
|
import "../chunk-ZP5E7YET.js";
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-PC2R5RUJ.js";
|
|
18
18
|
import "../chunk-GISMXMVL.js";
|
|
19
19
|
import "../chunk-WWACIIBA.js";
|
|
20
20
|
import "../chunk-TEFCFC4H.js";
|
|
21
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-KAJOS3BA.js";
|
|
22
22
|
import {
|
|
23
23
|
dispatchSkillsFromGit
|
|
24
|
-
} from "../chunk-
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
27
|
-
import "../chunk-
|
|
28
|
-
import "../chunk-
|
|
29
|
-
import "../chunk-
|
|
24
|
+
} from "../chunk-WWEVS7RO.js";
|
|
25
|
+
import "../chunk-HEIMJJI4.js";
|
|
26
|
+
import "../chunk-XX4OLNWQ.js";
|
|
27
|
+
import "../chunk-YQSYCBAH.js";
|
|
28
|
+
import "../chunk-Z4AWEIBY.js";
|
|
29
|
+
import "../chunk-ONCPJGHY.js";
|
|
30
30
|
import "../chunk-IOW3MW2K.js";
|
|
31
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-BYVT5LVO.js";
|
|
32
32
|
import "../chunk-3ISINLYT.js";
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
35
|
-
import "../chunk-
|
|
36
|
-
import "../chunk-
|
|
37
|
-
import "../chunk-
|
|
33
|
+
import "../chunk-CLI4K2CH.js";
|
|
34
|
+
import "../chunk-HWTUUQOW.js";
|
|
35
|
+
import "../chunk-527G27VI.js";
|
|
36
|
+
import "../chunk-DE5U6KOL.js";
|
|
37
|
+
import "../chunk-MGUPSE6D.js";
|
|
38
38
|
import "../chunk-RC3OI5NK.js";
|
|
39
39
|
import "../chunk-W6Y7ZW3Y.js";
|
|
40
40
|
import "../chunk-27AJKSQY.js";
|
|
@@ -43,7 +43,7 @@ import "../chunk-HIK6OEUF.js";
|
|
|
43
43
|
import {
|
|
44
44
|
findConfigFile,
|
|
45
45
|
loadConfig
|
|
46
|
-
} from "../chunk-
|
|
46
|
+
} from "../chunk-GGKRA7A7.js";
|
|
47
47
|
import "../chunk-ZCZD7FHU.js";
|
|
48
48
|
import "../chunk-EBJQ6N4M.js";
|
|
49
49
|
import {
|
|
@@ -56,13 +56,13 @@ import {
|
|
|
56
56
|
readCheckState,
|
|
57
57
|
shouldRunCheck,
|
|
58
58
|
spawnBackgroundCheck
|
|
59
|
-
} from "../chunk-
|
|
59
|
+
} from "../chunk-N24HCQA4.js";
|
|
60
60
|
import {
|
|
61
61
|
CLI_VERSION
|
|
62
62
|
} from "../chunk-BM3PWGXQ.js";
|
|
63
|
-
import "../chunk-
|
|
64
|
-
import "../chunk-
|
|
65
|
-
import "../chunk-
|
|
63
|
+
import "../chunk-N55WOGN3.js";
|
|
64
|
+
import "../chunk-BDGTZRZ6.js";
|
|
65
|
+
import "../chunk-PP6ZRL5T.js";
|
|
66
66
|
import "../chunk-QCLOIUMX.js";
|
|
67
67
|
import "../chunk-XARGEOJV.js";
|
|
68
68
|
import "../chunk-KFQGP6VL.js";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createCheckPhaseGateCommand,
|
|
3
3
|
runCheckPhaseGate
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-KAJOS3BA.js";
|
|
5
|
+
import "./chunk-GGKRA7A7.js";
|
|
6
6
|
import "./chunk-ZCZD7FHU.js";
|
|
7
7
|
import "./chunk-EBJQ6N4M.js";
|
|
8
8
|
import "./chunk-3WGJMBKH.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-N24HCQA4.js";
|
|
10
|
+
import "./chunk-N55WOGN3.js";
|
|
11
|
+
import "./chunk-BDGTZRZ6.js";
|
|
12
|
+
import "./chunk-PP6ZRL5T.js";
|
|
13
13
|
import "./chunk-QCLOIUMX.js";
|
|
14
14
|
import "./chunk-XARGEOJV.js";
|
|
15
15
|
import "./chunk-KFQGP6VL.js";
|
|
@@ -41,7 +41,7 @@ async function runScan(projectPath) {
|
|
|
41
41
|
KnowledgeIngestor,
|
|
42
42
|
GitIngestor,
|
|
43
43
|
RequirementIngestor
|
|
44
|
-
} = await import("./dist-
|
|
44
|
+
} = await import("./dist-OWHMNL4W.js");
|
|
45
45
|
const store = new GraphStore();
|
|
46
46
|
const start = Date.now();
|
|
47
47
|
const ingestOptions = loadIngestOptions(projectPath);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveProjectConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DE5U6KOL.js";
|
|
4
4
|
import {
|
|
5
5
|
resultToMcpResponse
|
|
6
6
|
} from "./chunk-RC3OI5NK.js";
|
|
@@ -38,7 +38,7 @@ async function handleCheckDependencies(input) {
|
|
|
38
38
|
const configResult = resolveProjectConfig(projectPath);
|
|
39
39
|
if (!configResult.ok) return resultToMcpResponse(configResult);
|
|
40
40
|
try {
|
|
41
|
-
const { validateDependencies, TypeScriptParser } = await import("./dist-
|
|
41
|
+
const { validateDependencies, TypeScriptParser } = await import("./dist-LHINSVK4.js");
|
|
42
42
|
const config = configResult.value;
|
|
43
43
|
const rawLayers = Array.isArray(config.layers) ? config.layers : [];
|
|
44
44
|
const layers = rawLayers.map((l) => ({
|
|
@@ -47,11 +47,11 @@ async function handleCheckDependencies(input) {
|
|
|
47
47
|
allowedDependencies: l.allowedDependencies
|
|
48
48
|
}));
|
|
49
49
|
const parser = new TypeScriptParser();
|
|
50
|
-
const { loadGraphStore } = await import("./graph-loader-
|
|
50
|
+
const { loadGraphStore } = await import("./graph-loader-HHXN5FLP.js");
|
|
51
51
|
const store = await loadGraphStore(projectPath);
|
|
52
52
|
let graphDependencyData;
|
|
53
53
|
if (store) {
|
|
54
|
-
const { GraphConstraintAdapter } = await import("./dist-
|
|
54
|
+
const { GraphConstraintAdapter } = await import("./dist-OWHMNL4W.js");
|
|
55
55
|
const adapter = new GraphConstraintAdapter(store);
|
|
56
56
|
const graphData = adapter.computeDependencyGraph();
|
|
57
57
|
graphDependencyData = {
|
|
@@ -69,7 +69,7 @@ async function handleCheckDependencies(input) {
|
|
|
69
69
|
if (store) {
|
|
70
70
|
const designTokenNodes = store.findNodes({ type: "design_token" });
|
|
71
71
|
if (designTokenNodes.length > 0) {
|
|
72
|
-
const { DesignConstraintAdapter } = await import("./dist-
|
|
72
|
+
const { DesignConstraintAdapter } = await import("./dist-OWHMNL4W.js");
|
|
73
73
|
const designAdapter = new DesignConstraintAdapter(store);
|
|
74
74
|
const fileNodes = store.findNodes({ type: "file" });
|
|
75
75
|
for (const fileNode of fileNodes) {
|
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
} from "./chunk-KET4QQZB.js";
|
|
4
4
|
import {
|
|
5
5
|
init_dist
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-N24HCQA4.js";
|
|
7
7
|
import {
|
|
8
8
|
Err,
|
|
9
9
|
Ok
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-BDGTZRZ6.js";
|
|
11
11
|
|
|
12
12
|
// src/persona/generators/runtime.ts
|
|
13
13
|
init_dist();
|
|
@@ -21,7 +21,7 @@ function isOk(result) {
|
|
|
21
21
|
function isErr(result) {
|
|
22
22
|
return result.ok === false;
|
|
23
23
|
}
|
|
24
|
-
var STANDARD_COGNITIVE_MODES, DEFAULT_SKILL_CONTEXT_BUDGET, SESSION_SECTION_NAMES, TrajectoryMetadataSchema, PromptCacheStatsSchema, OTLPKeyValueSchema, OTLPSpanSchema, TokenScopeSchema, BridgeKindSchema, AuthTokenSchema, AuthTokenPublicSchema, AuthAuditEntrySchema, WebhookSubscriptionSchema, WebhookSubscriptionPublicSchema, GatewayEventSchema, WebhookDeliveryStatusSchema, WebhookDeliverySchema, INDEXED_FILE_KINDS, SessionSummarySchema, INSIGHTS_KEYS, SESSIONS_DEFAULTS, NotificationSinkKindSchema, NotificationSeveritySchema, NotificationActionSchema, NotificationEnvelopeSchema, NotificationSinkConfigSchema, NotificationsConfigSchema, NotificationDeliveryResultSchema, SkillProvenanceSchema, ProposalKindSchema, ProposalStatusSchema, ProposalGateFindingSchema, ProposalGateSchema, ProposalDecisionSchema, ProposalContentSchema, ProposalSourceSchema, SkillProposalSchema, EmitSkillProposalInputSchema, EditProposalInputSchema;
|
|
24
|
+
var STANDARD_COGNITIVE_MODES, DEFAULT_SKILL_CONTEXT_BUDGET, SESSION_SECTION_NAMES, TrajectoryMetadataSchema, PromptCacheStatsSchema, OTLPKeyValueSchema, OTLPSpanSchema, REQUIRED_STRATEGY_SECTIONS, OPTIONAL_STRATEGY_SECTIONS, TokenScopeSchema, BridgeKindSchema, AuthTokenSchema, AuthTokenPublicSchema, AuthAuditEntrySchema, WebhookSubscriptionSchema, WebhookSubscriptionPublicSchema, GatewayEventSchema, WebhookDeliveryStatusSchema, WebhookDeliverySchema, INDEXED_FILE_KINDS, SessionSummarySchema, INSIGHTS_KEYS, SESSIONS_DEFAULTS, NotificationSinkKindSchema, NotificationSeveritySchema, NotificationActionSchema, NotificationEnvelopeSchema, NotificationSinkConfigSchema, NotificationsConfigSchema, NotificationDeliveryResultSchema, SkillProvenanceSchema, ProposalKindSchema, ProposalStatusSchema, ProposalGateFindingSchema, ProposalGateSchema, ProposalDecisionSchema, ProposalContentSchema, ProposalSourceSchema, SkillProposalSchema, EmitSkillProposalInputSchema, EditProposalInputSchema;
|
|
25
25
|
var init_dist = __esm({
|
|
26
26
|
"../types/dist/index.mjs"() {
|
|
27
27
|
STANDARD_COGNITIVE_MODES = [
|
|
@@ -96,6 +96,14 @@ var init_dist = __esm({
|
|
|
96
96
|
attributes: z.array(OTLPKeyValueSchema),
|
|
97
97
|
status: z.object({ code: z.number().int() }).optional()
|
|
98
98
|
});
|
|
99
|
+
REQUIRED_STRATEGY_SECTIONS = [
|
|
100
|
+
"Target problem",
|
|
101
|
+
"Our approach",
|
|
102
|
+
"Who it's for",
|
|
103
|
+
"Key metrics",
|
|
104
|
+
"Tracks"
|
|
105
|
+
];
|
|
106
|
+
OPTIONAL_STRATEGY_SECTIONS = ["Milestones", "Not working on", "Marketing"];
|
|
99
107
|
TokenScopeSchema = z2.enum([
|
|
100
108
|
"admin",
|
|
101
109
|
"trigger-job",
|
|
@@ -347,6 +355,8 @@ export {
|
|
|
347
355
|
PromptCacheStatsSchema,
|
|
348
356
|
OTLPKeyValueSchema,
|
|
349
357
|
OTLPSpanSchema,
|
|
358
|
+
REQUIRED_STRATEGY_SECTIONS,
|
|
359
|
+
OPTIONAL_STRATEGY_SECTIONS,
|
|
350
360
|
TokenScopeSchema,
|
|
351
361
|
BridgeKindSchema,
|
|
352
362
|
AuthTokenSchema,
|