@dzhechkov/harness-core 0.8.6 → 0.8.10
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/.dz-manifest.json +257 -53
- package/README.md +48 -1
- package/dist/amendment-trace.d.ts.map +1 -1
- package/dist/amendment-trace.js +12 -1
- package/dist/amendment-trace.js.map +1 -1
- package/dist/compounding.d.ts +54 -0
- package/dist/compounding.d.ts.map +1 -1
- package/dist/compounding.js +221 -1
- package/dist/compounding.js.map +1 -1
- package/dist/eta.d.ts +92 -0
- package/dist/eta.d.ts.map +1 -0
- package/dist/eta.js +488 -0
- package/dist/eta.js.map +1 -0
- package/dist/feature-adr-checkpoints.js +1 -1
- package/dist/feature-adr-decision-recall.d.ts +167 -0
- package/dist/feature-adr-decision-recall.d.ts.map +1 -0
- package/dist/feature-adr-decision-recall.js +519 -0
- package/dist/feature-adr-decision-recall.js.map +1 -0
- package/dist/feature-adr-landing.d.ts +37 -0
- package/dist/feature-adr-landing.d.ts.map +1 -0
- package/dist/feature-adr-landing.js +59 -0
- package/dist/feature-adr-landing.js.map +1 -0
- package/dist/feature-adr-routing.d.ts +2 -2
- package/dist/feature-adr-routing.d.ts.map +1 -1
- package/dist/feature-adr-routing.js +7 -11
- package/dist/feature-adr-routing.js.map +1 -1
- package/dist/guard-promotion.d.ts +41 -0
- package/dist/guard-promotion.d.ts.map +1 -1
- package/dist/guard-promotion.js +218 -4
- package/dist/guard-promotion.js.map +1 -1
- package/dist/guard-volume.d.ts +108 -0
- package/dist/guard-volume.d.ts.map +1 -0
- package/dist/guard-volume.js +536 -0
- package/dist/guard-volume.js.map +1 -0
- package/dist/guard.d.ts +9 -0
- package/dist/guard.d.ts.map +1 -1
- package/dist/guard.js +55 -4
- package/dist/guard.js.map +1 -1
- package/dist/index.d.ts +16 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/integration-apply.d.ts +25 -0
- package/dist/integration-apply.d.ts.map +1 -0
- package/dist/integration-apply.js +299 -0
- package/dist/integration-apply.js.map +1 -0
- package/dist/integration-evidence.d.ts +46 -0
- package/dist/integration-evidence.d.ts.map +1 -0
- package/dist/integration-evidence.js +44 -0
- package/dist/integration-evidence.js.map +1 -0
- package/dist/integration-probe-worker.d.ts +22 -0
- package/dist/integration-probe-worker.d.ts.map +1 -0
- package/dist/integration-probe-worker.js +334 -0
- package/dist/integration-probe-worker.js.map +1 -0
- package/dist/integrations-verify.d.ts +60 -0
- package/dist/integrations-verify.d.ts.map +1 -0
- package/dist/integrations-verify.js +194 -0
- package/dist/integrations-verify.js.map +1 -0
- package/dist/lesson-generalization.d.ts +29 -0
- package/dist/lesson-generalization.d.ts.map +1 -0
- package/dist/lesson-generalization.js +84 -0
- package/dist/lesson-generalization.js.map +1 -0
- package/dist/operations.d.ts +27 -0
- package/dist/operations.d.ts.map +1 -1
- package/dist/operations.js +178 -2
- package/dist/operations.js.map +1 -1
- package/dist/patterns.d.ts +27 -1
- package/dist/patterns.d.ts.map +1 -1
- package/dist/patterns.js +211 -45
- package/dist/patterns.js.map +1 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +20 -17
- package/dist/setup.js.map +1 -1
- package/dist/target-integrations.d.ts +65 -0
- package/dist/target-integrations.d.ts.map +1 -0
- package/dist/target-integrations.js +152 -0
- package/dist/target-integrations.js.map +1 -0
- package/dist/vector-tier.d.ts +6 -1
- package/dist/vector-tier.d.ts.map +1 -1
- package/dist/vector-tier.js +32 -7
- package/dist/vector-tier.js.map +1 -1
- package/package.json +9 -8
- package/sbom.json +562 -52
- package/src/amendment-trace.ts +12 -1
- package/src/compounding.ts +300 -1
- package/src/eta.ts +590 -0
- package/src/feature-adr-checkpoints.ts +1 -1
- package/src/feature-adr-decision-recall.ts +652 -0
- package/src/feature-adr-landing.ts +109 -0
- package/src/feature-adr-routing.ts +7 -11
- package/src/guard-promotion.ts +245 -4
- package/src/guard-volume.ts +752 -0
- package/src/guard.ts +70 -4
- package/src/index.ts +63 -2
- package/src/integration-apply.ts +332 -0
- package/src/integration-evidence.ts +89 -0
- package/src/integration-probe-worker.ts +310 -0
- package/src/integration-receipts/claude-code/mcp/2.1.235.json +35 -0
- package/src/integrations-verify.ts +258 -0
- package/src/lesson-generalization.ts +115 -0
- package/src/operations.ts +199 -2
- package/src/patterns.ts +252 -43
- package/src/setup.ts +20 -17
- package/src/target-integrations.ts +225 -0
- package/src/vector-tier.ts +44 -14
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type LessonForm = 'specific' | 'class';
|
|
2
|
+
export type LessonMatchedForm = 'specific' | 'class' | 'both';
|
|
3
|
+
export interface LessonFormsInput {
|
|
4
|
+
readonly specific: string;
|
|
5
|
+
readonly classForm?: string;
|
|
6
|
+
readonly classAdvisory?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface LessonFormRankedHit<T> {
|
|
9
|
+
readonly key: string;
|
|
10
|
+
readonly value: T;
|
|
11
|
+
readonly matchedForm: LessonForm;
|
|
12
|
+
}
|
|
13
|
+
export interface MergedLessonFormHit<T> {
|
|
14
|
+
readonly key: string;
|
|
15
|
+
readonly value: T;
|
|
16
|
+
readonly matchedForm: LessonMatchedForm;
|
|
17
|
+
readonly score: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function normalizeLessonForms(specific: string, classInput?: unknown): LessonFormsInput;
|
|
20
|
+
export declare function validateClassTemplate(specific: string, classTemplate: string): {
|
|
21
|
+
readonly ok: true;
|
|
22
|
+
} | {
|
|
23
|
+
readonly ok: false;
|
|
24
|
+
readonly reason: string;
|
|
25
|
+
};
|
|
26
|
+
export declare function lessonPairIdOf(specific: string, classTemplate: string, ts: string): string;
|
|
27
|
+
export declare function mergeLessonMatchedForms(left: LessonMatchedForm | undefined, right: LessonMatchedForm | undefined): LessonMatchedForm | undefined;
|
|
28
|
+
export declare function mergeLessonFormHits<T>(specificHits: readonly LessonFormRankedHit<T>[], classHits: readonly LessonFormRankedHit<T>[], limit: number): MergedLessonFormHit<T>[];
|
|
29
|
+
//# sourceMappingURL=lesson-generalization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-generalization.d.ts","sourceRoot":"","sources":["../src/lesson-generalization.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAC9C,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAQ7F;AAUD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAwBzE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAM1F;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,KAAK,EAAE,iBAAiB,GAAG,SAAS,GACnC,iBAAiB,GAAG,SAAS,CAI/B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,YAAY,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAC/C,SAAS,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAC5C,KAAK,EAAE,MAAM,GACZ,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAsB1B"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
export function normalizeLessonForms(specific, classInput) {
|
|
3
|
+
if (classInput === undefined || (typeof classInput === 'string' && classInput.trim() === '')) {
|
|
4
|
+
return { specific };
|
|
5
|
+
}
|
|
6
|
+
if (typeof classInput !== 'string') {
|
|
7
|
+
return { specific, classAdvisory: 'class form must be text; the specific lesson was kept' };
|
|
8
|
+
}
|
|
9
|
+
return { specific, classForm: classInput.trim() };
|
|
10
|
+
}
|
|
11
|
+
function normalizedText(value) {
|
|
12
|
+
return value.normalize('NFC').toLocaleLowerCase('und').replace(/\s+/gu, ' ').trim();
|
|
13
|
+
}
|
|
14
|
+
function escapedLiteral(value) {
|
|
15
|
+
return normalizedText(value).replace(/[.*+?^${}()|[\]\\]/g, '\\$&').replace(/\s+/g, '\\s+');
|
|
16
|
+
}
|
|
17
|
+
export function validateClassTemplate(specific, classTemplate) {
|
|
18
|
+
const slot = /:([A-Za-z][A-Za-z0-9_-]*)/g;
|
|
19
|
+
const parts = [];
|
|
20
|
+
let slots = 0;
|
|
21
|
+
let cursor = 0;
|
|
22
|
+
for (const match of classTemplate.matchAll(slot)) {
|
|
23
|
+
const index = match.index ?? 0;
|
|
24
|
+
const literal = classTemplate.slice(cursor, index);
|
|
25
|
+
if (literal.includes(':'))
|
|
26
|
+
return { ok: false, reason: 'invalid :slot name' };
|
|
27
|
+
parts.push(escapedLiteral(literal), '(.+?)');
|
|
28
|
+
slots += 1;
|
|
29
|
+
cursor = index + match[0].length;
|
|
30
|
+
}
|
|
31
|
+
const tail = classTemplate.slice(cursor);
|
|
32
|
+
if (tail.includes(':'))
|
|
33
|
+
return { ok: false, reason: 'invalid :slot name' };
|
|
34
|
+
if (slots === 0)
|
|
35
|
+
return { ok: false, reason: 'class form must contain at least one :slot' };
|
|
36
|
+
parts.push(escapedLiteral(tail));
|
|
37
|
+
try {
|
|
38
|
+
return new RegExp(`^${parts.join('')}$`, 'u').test(normalizedText(specific))
|
|
39
|
+
? { ok: true }
|
|
40
|
+
: { ok: false, reason: 'class form does not syntactically cover the specific lesson' };
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return { ok: false, reason: 'class form contains an invalid template' };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function lessonPairIdOf(specific, classTemplate, ts) {
|
|
47
|
+
const digest = createHash('sha256')
|
|
48
|
+
.update(`${specific}\u0000${classTemplate}\u0000${ts}`)
|
|
49
|
+
.digest('hex')
|
|
50
|
+
.slice(0, 16);
|
|
51
|
+
return `lesson-pair:${digest}`;
|
|
52
|
+
}
|
|
53
|
+
export function mergeLessonMatchedForms(left, right) {
|
|
54
|
+
if (left === undefined)
|
|
55
|
+
return right;
|
|
56
|
+
if (right === undefined || left === right)
|
|
57
|
+
return left;
|
|
58
|
+
return 'both';
|
|
59
|
+
}
|
|
60
|
+
export function mergeLessonFormHits(specificHits, classHits, limit) {
|
|
61
|
+
const merged = new Map();
|
|
62
|
+
const add = (hit, rank) => {
|
|
63
|
+
const current = merged.get(hit.key) ?? { value: hit.value, specific: false, classForm: false, score: 0 };
|
|
64
|
+
if (hit.matchedForm === 'specific')
|
|
65
|
+
current.specific = true;
|
|
66
|
+
else
|
|
67
|
+
current.classForm = true;
|
|
68
|
+
current.score += 1 / (60 + rank + 1);
|
|
69
|
+
merged.set(hit.key, current);
|
|
70
|
+
};
|
|
71
|
+
specificHits.forEach(add);
|
|
72
|
+
classHits.forEach(add);
|
|
73
|
+
const safeLimit = Number.isFinite(limit) ? Math.max(0, Math.trunc(limit)) : merged.size;
|
|
74
|
+
return [...merged.entries()]
|
|
75
|
+
.sort((a, b) => b[1].score - a[1].score || a[0].localeCompare(b[0]))
|
|
76
|
+
.slice(0, safeLimit)
|
|
77
|
+
.map(([key, hit]) => ({
|
|
78
|
+
key,
|
|
79
|
+
value: hit.value,
|
|
80
|
+
matchedForm: hit.specific && hit.classForm ? 'both' : hit.classForm ? 'class' : 'specific',
|
|
81
|
+
score: hit.score,
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=lesson-generalization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-generalization.js","sourceRoot":"","sources":["../src/lesson-generalization.ts"],"names":[],"mappings":"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"}
|
package/dist/operations.d.ts
CHANGED
|
@@ -9,6 +9,9 @@ import { type CodexHooksPaths, type HooksListHookMetadata } from './codex-hooks.
|
|
|
9
9
|
import { type CodexHookTrustStatus, type VetoProbeEvidence, type VetoProbeResult } from './codex-hooks-verify.js';
|
|
10
10
|
import type { SkillApplyFailure, SkillLoadFailure } from './skills.js';
|
|
11
11
|
import type { TargetName } from './targets.js';
|
|
12
|
+
import { type IntegrationOutcome, type IntegrationManifestSource } from './target-integrations.js';
|
|
13
|
+
import { type IntegrationApplyFault } from './integration-apply.js';
|
|
14
|
+
import { type IntegrationProcessPort } from './integrations-verify.js';
|
|
12
15
|
import { type AgentsMdBudget, type PolicyDriftFinding, type PolicySource } from './agents-policy.js';
|
|
13
16
|
/** Options for {@link runInit}. */
|
|
14
17
|
export interface InitOptions {
|
|
@@ -23,6 +26,24 @@ export interface InitOptions {
|
|
|
23
26
|
readonly select?: readonly string[];
|
|
24
27
|
/** When set, generate platform-specific enrichment files alongside SKILL.md. */
|
|
25
28
|
readonly enrich?: boolean;
|
|
29
|
+
/** Exact content-bound digest printed by the first integration-aware run. */
|
|
30
|
+
readonly allowIntegrations?: string;
|
|
31
|
+
/** Explicit hook opt-out; maps hooks to not-requested. */
|
|
32
|
+
readonly noHooks?: boolean;
|
|
33
|
+
/** Explicit skills-only opt-out, even when selected skills carry manifests. */
|
|
34
|
+
readonly noIntegrations?: boolean;
|
|
35
|
+
/** Live verification is load-bearing; requesting this flag makes requested integrations refuse. */
|
|
36
|
+
readonly noVerify?: boolean;
|
|
37
|
+
/** Injectable process boundary for deterministic integration tests. */
|
|
38
|
+
readonly integrationProcessPort?: IntegrationProcessPort;
|
|
39
|
+
/** Test-only fault at the carrier/ownership-journal durability boundary. */
|
|
40
|
+
readonly integrationApplyFault?: IntegrationApplyFault;
|
|
41
|
+
/**
|
|
42
|
+
* Install-level manifest sources. The CLI supplies this only on the first
|
|
43
|
+
* per-directory run so companion planning, authorization, and probing happen
|
|
44
|
+
* exactly once across every discovered skill pack.
|
|
45
|
+
*/
|
|
46
|
+
readonly integrationManifestSources?: readonly IntegrationManifestSource[];
|
|
26
47
|
}
|
|
27
48
|
/** Per-skill outcome of {@link runInit}. */
|
|
28
49
|
export interface InitSkillResult {
|
|
@@ -64,6 +85,10 @@ export interface InitReport {
|
|
|
64
85
|
* any per-skill loop.
|
|
65
86
|
*/
|
|
66
87
|
readonly applyFailures: readonly SkillApplyFailure[];
|
|
88
|
+
/** Exactly two ordered companion outcomes: MCP, then hooks. */
|
|
89
|
+
readonly integrations: readonly [IntegrationOutcome, IntegrationOutcome];
|
|
90
|
+
/** Safe digest used by `--allow-integrations`; absent when no manifest exists. */
|
|
91
|
+
readonly integrationDigest?: string;
|
|
67
92
|
}
|
|
68
93
|
/** Options for {@link runInitAgentsMd} / {@link runInitGeminiMd}. */
|
|
69
94
|
export interface AgentsMdInitOptions {
|
|
@@ -78,6 +103,8 @@ export interface AgentsMdInitOptions {
|
|
|
78
103
|
readonly projectRoot: string;
|
|
79
104
|
/** When set, install only these skill ids (a preset selection). */
|
|
80
105
|
readonly select?: readonly string[] | undefined;
|
|
106
|
+
readonly noHooks?: boolean;
|
|
107
|
+
readonly noIntegrations?: boolean;
|
|
81
108
|
}
|
|
82
109
|
/** The parts of a single-file managed-Markdown target that vary by filename. */
|
|
83
110
|
interface SingleFileMdConfig {
|
package/dist/operations.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,EAUL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAE3B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAkBjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAM5B,mCAAmC;AACnC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gFAAgF;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"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"}
|
package/dist/operations.js
CHANGED
|
@@ -30,6 +30,9 @@ import { computeRiskScore } from './risk-scoring.js';
|
|
|
30
30
|
import { applyEmitResult } from './apply.js';
|
|
31
31
|
import { describeSkillLoadFailure, discoverSkillIds, loadSkillFromDir } from './skills.js';
|
|
32
32
|
import { TARGETS } from './targets.js';
|
|
33
|
+
import { TARGET_INTEGRATIONS, aggregateIntegrationManifests, notRequestedOutcomes, refusedOutcome, staticPolicyOutcomes, } from './target-integrations.js';
|
|
34
|
+
import { applyIntegrationFragments, IntegrationApplyError } from './integration-apply.js';
|
|
35
|
+
import { verifyTargetIntegration } from './integrations-verify.js';
|
|
33
36
|
import { AGENTS_MD_BUDGET_WARN_FRACTION, CODEX_PROJECT_DOC_MAX_BYTES, POLICY_SOURCES, detectPolicyDrift, extractPolicyBlocks, measureAgentsMdBudget, renderPolicySections, } from './agents-policy.js';
|
|
34
37
|
// ---------------------------------------------------------------------------
|
|
35
38
|
// Platform enrichment — optional extras beyond SKILL.md
|
|
@@ -204,6 +207,28 @@ function runInitSingleFileMd(options, config) {
|
|
|
204
207
|
}
|
|
205
208
|
}
|
|
206
209
|
const missing = selection === undefined ? [] : selection.filter((id) => !discovered.has(id));
|
|
210
|
+
let aggregate = { manifest: undefined, digest: undefined };
|
|
211
|
+
try {
|
|
212
|
+
if (options.noIntegrations !== true) {
|
|
213
|
+
aggregate = aggregateIntegrationManifests(picked.map(({ id, skillsDir }) => ({ skillId: id, skillDir: skillsDir })));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
const remediation = error instanceof Error ? error.message : String(error);
|
|
218
|
+
return {
|
|
219
|
+
target: config.target,
|
|
220
|
+
skillsDir: joinedDir,
|
|
221
|
+
projectRoot: options.projectRoot,
|
|
222
|
+
skills: [],
|
|
223
|
+
missing,
|
|
224
|
+
failures: [],
|
|
225
|
+
applyFailures: [],
|
|
226
|
+
integrations: [
|
|
227
|
+
refusedOutcome(config.target, 'mcp', 'MANIFEST_INVALID', remediation),
|
|
228
|
+
refusedOutcome(config.target, 'hooks', 'MANIFEST_INVALID', remediation),
|
|
229
|
+
],
|
|
230
|
+
};
|
|
231
|
+
}
|
|
207
232
|
// Skip-and-collect: one unloadable skill must not discard the whole aggregation.
|
|
208
233
|
const failures = [];
|
|
209
234
|
const loaded = [];
|
|
@@ -232,7 +257,19 @@ function runInitSingleFileMd(options, config) {
|
|
|
232
257
|
});
|
|
233
258
|
// No apply failures are possible here: the single write is outside every per-skill
|
|
234
259
|
// loop, so a write error propagates as itself rather than being attributed to a skill.
|
|
235
|
-
return {
|
|
260
|
+
return {
|
|
261
|
+
target: config.target,
|
|
262
|
+
skillsDir: joinedDir,
|
|
263
|
+
projectRoot: options.projectRoot,
|
|
264
|
+
skills,
|
|
265
|
+
missing,
|
|
266
|
+
failures,
|
|
267
|
+
applyFailures: [],
|
|
268
|
+
integrations: options.noIntegrations === true
|
|
269
|
+
? notRequestedOutcomes(config.target)
|
|
270
|
+
: staticPolicyOutcomes(config.target, aggregate.manifest, options.noHooks === true),
|
|
271
|
+
...(aggregate.digest !== undefined ? { integrationDigest: aggregate.digest } : {}),
|
|
272
|
+
};
|
|
236
273
|
}
|
|
237
274
|
/**
|
|
238
275
|
* Aggregate every selected skill into ONE root `AGENTS.md`, merging into any
|
|
@@ -352,6 +389,8 @@ export async function runInit(options) {
|
|
|
352
389
|
skillsDirs: [options.skillsDir],
|
|
353
390
|
projectRoot: options.projectRoot,
|
|
354
391
|
select: options.select,
|
|
392
|
+
...(options.noHooks !== undefined ? { noHooks: options.noHooks } : {}),
|
|
393
|
+
...(options.noIntegrations !== undefined ? { noIntegrations: options.noIntegrations } : {}),
|
|
355
394
|
});
|
|
356
395
|
}
|
|
357
396
|
// gemini is likewise a flattening single-file target — aggregate into ONE root
|
|
@@ -361,6 +400,8 @@ export async function runInit(options) {
|
|
|
361
400
|
skillsDirs: [options.skillsDir],
|
|
362
401
|
projectRoot: options.projectRoot,
|
|
363
402
|
select: options.select,
|
|
403
|
+
...(options.noHooks !== undefined ? { noHooks: options.noHooks } : {}),
|
|
404
|
+
...(options.noIntegrations !== undefined ? { noIntegrations: options.noIntegrations } : {}),
|
|
364
405
|
});
|
|
365
406
|
}
|
|
366
407
|
const adapter = TARGETS[options.target];
|
|
@@ -371,6 +412,84 @@ export async function runInit(options) {
|
|
|
371
412
|
const missing = selection === undefined
|
|
372
413
|
? []
|
|
373
414
|
: selection.filter((id) => !discovered.includes(id));
|
|
415
|
+
const manifestSources = options.integrationManifestSources
|
|
416
|
+
?? ids.map((id) => ({ skillId: id, skillDir: options.skillsDir }));
|
|
417
|
+
let aggregate = { manifest: undefined, digest: undefined };
|
|
418
|
+
try {
|
|
419
|
+
if (options.noIntegrations !== true)
|
|
420
|
+
aggregate = aggregateIntegrationManifests(manifestSources);
|
|
421
|
+
}
|
|
422
|
+
catch (error) {
|
|
423
|
+
const remediation = error instanceof Error ? error.message : String(error);
|
|
424
|
+
return {
|
|
425
|
+
target: options.target,
|
|
426
|
+
skillsDir: options.skillsDir,
|
|
427
|
+
projectRoot: options.projectRoot,
|
|
428
|
+
skills: [],
|
|
429
|
+
missing,
|
|
430
|
+
failures: [],
|
|
431
|
+
applyFailures: [],
|
|
432
|
+
integrations: [
|
|
433
|
+
refusedOutcome(options.target, 'mcp', 'MANIFEST_INVALID', remediation),
|
|
434
|
+
refusedOutcome(options.target, 'hooks', 'MANIFEST_INVALID', remediation),
|
|
435
|
+
],
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
let integrations = notRequestedOutcomes(options.target);
|
|
439
|
+
let eligibleClaudePlan;
|
|
440
|
+
if (aggregate.manifest !== undefined && options.noIntegrations !== true) {
|
|
441
|
+
if (options.target !== 'claude-code') {
|
|
442
|
+
integrations = staticPolicyOutcomes(options.target, aggregate.manifest, options.noHooks === true);
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
const mcpRequested = Object.keys(aggregate.manifest.mcpServers ?? {}).length > 0;
|
|
446
|
+
const hooksRequested = (aggregate.manifest.hooks?.length ?? 0) > 0 && options.noHooks !== true;
|
|
447
|
+
let mcpOutcome = { target: options.target, component: 'mcp', status: 'not-requested', registrations: [] };
|
|
448
|
+
if (mcpRequested) {
|
|
449
|
+
if (options.noVerify === true) {
|
|
450
|
+
mcpOutcome = refusedOutcome(options.target, 'mcp', 'NO_QUALIFYING_LIVE_RECEIPT', '--no-verify cannot authorize integration emission; rerun with live verification enabled');
|
|
451
|
+
}
|
|
452
|
+
else if (aggregate.digest === undefined || options.allowIntegrations !== aggregate.digest) {
|
|
453
|
+
mcpOutcome = refusedOutcome(options.target, 'mcp', 'INTEGRATION_AUTHORIZATION_REQUIRED', `rerun with --allow-integrations ${aggregate.digest ?? '<missing-digest>'}`);
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
const plan = TARGET_INTEGRATIONS['claude-code'].plan(aggregate.manifest, { target: 'claude-code' });
|
|
457
|
+
const refusal = plan.refusals.find((row) => row.component === 'mcp');
|
|
458
|
+
if (refusal !== undefined) {
|
|
459
|
+
mcpOutcome = refusedOutcome(options.target, 'mcp', refusal.reasonCode, refusal.remediation);
|
|
460
|
+
}
|
|
461
|
+
else {
|
|
462
|
+
const preflight = verifyTargetIntegration({
|
|
463
|
+
target: 'claude-code',
|
|
464
|
+
component: 'mcp',
|
|
465
|
+
projectRoot: options.projectRoot,
|
|
466
|
+
phase: 'preflight',
|
|
467
|
+
...(options.integrationProcessPort !== undefined ? { processPort: options.integrationProcessPort } : {}),
|
|
468
|
+
});
|
|
469
|
+
if (!preflight.ok) {
|
|
470
|
+
mcpOutcome = refusedOutcome(options.target, 'mcp', preflight.reasonCode ?? 'LIVE_PROBE_FAILED', preflight.remediation ?? 'live preflight did not qualify');
|
|
471
|
+
}
|
|
472
|
+
else {
|
|
473
|
+
eligibleClaudePlan = plan;
|
|
474
|
+
mcpOutcome = {
|
|
475
|
+
target: options.target,
|
|
476
|
+
component: 'mcp',
|
|
477
|
+
status: 'emitted',
|
|
478
|
+
registrations: [],
|
|
479
|
+
carrier: { scope: 'project', path: '.mcp.json' },
|
|
480
|
+
...(preflight.runtimeVersion !== undefined ? { runtimeVersion: preflight.runtimeVersion } : {}),
|
|
481
|
+
...(preflight.evidenceVersion !== undefined ? { evidenceVersion: preflight.evidenceVersion } : {}),
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
const hookOutcome = hooksRequested
|
|
488
|
+
? refusedOutcome(options.target, 'hooks', 'NO_ACTIVATION_RECEIPT', 'record a nonce canary and negative-control activation receipt')
|
|
489
|
+
: { target: options.target, component: 'hooks', status: 'not-requested', registrations: [] };
|
|
490
|
+
integrations = [mcpOutcome, hookOutcome];
|
|
491
|
+
}
|
|
492
|
+
}
|
|
374
493
|
// Skip-and-collect (D1): one unparseable SKILL.md must not discard the whole install.
|
|
375
494
|
// Same shape as `runVerify`'s long-standing per-id try/catch below.
|
|
376
495
|
//
|
|
@@ -407,7 +526,64 @@ export async function runInit(options) {
|
|
|
407
526
|
applyFailures.push({ id, reason: error instanceof Error ? error.message : String(error) });
|
|
408
527
|
}
|
|
409
528
|
}
|
|
410
|
-
|
|
529
|
+
if (eligibleClaudePlan !== undefined && integrations[0].status === 'emitted') {
|
|
530
|
+
try {
|
|
531
|
+
applyIntegrationFragments({
|
|
532
|
+
projectRoot: options.projectRoot,
|
|
533
|
+
fragments: eligibleClaudePlan.fragments,
|
|
534
|
+
...(options.integrationApplyFault !== undefined ? { injectFault: options.integrationApplyFault } : {}),
|
|
535
|
+
});
|
|
536
|
+
const registrations = Object.keys(aggregate.manifest?.mcpServers ?? {});
|
|
537
|
+
const observed = [];
|
|
538
|
+
let failedObservation;
|
|
539
|
+
for (const registrationId of registrations) {
|
|
540
|
+
const result = verifyTargetIntegration({
|
|
541
|
+
target: 'claude-code',
|
|
542
|
+
component: 'mcp',
|
|
543
|
+
projectRoot: options.projectRoot,
|
|
544
|
+
registrationId,
|
|
545
|
+
phase: 'post-write',
|
|
546
|
+
...(options.integrationProcessPort !== undefined ? { processPort: options.integrationProcessPort } : {}),
|
|
547
|
+
});
|
|
548
|
+
if (!result.ok) {
|
|
549
|
+
failedObservation = result;
|
|
550
|
+
break;
|
|
551
|
+
}
|
|
552
|
+
observed.push(...result.registrations);
|
|
553
|
+
}
|
|
554
|
+
if (failedObservation !== undefined) {
|
|
555
|
+
integrations = [
|
|
556
|
+
{
|
|
557
|
+
...refusedOutcome(options.target, 'mcp', failedObservation.reasonCode ?? 'POST_WRITE_REGISTRATION_NOT_OBSERVED', failedObservation.remediation ?? 'registration was written but not observed'),
|
|
558
|
+
carrier: { scope: 'project', path: '.mcp.json' },
|
|
559
|
+
applied: true,
|
|
560
|
+
},
|
|
561
|
+
integrations[1],
|
|
562
|
+
];
|
|
563
|
+
}
|
|
564
|
+
else {
|
|
565
|
+
integrations = [{ ...integrations[0], registrations: observed }, integrations[1]];
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
catch (error) {
|
|
569
|
+
const reasonCode = error instanceof IntegrationApplyError ? error.reasonCode : 'APPLY_FAILED';
|
|
570
|
+
integrations = [{
|
|
571
|
+
...refusedOutcome(options.target, 'mcp', reasonCode, error instanceof Error ? error.message : String(error)),
|
|
572
|
+
...(error instanceof IntegrationApplyError && error.applied ? { applied: true } : {}),
|
|
573
|
+
}, integrations[1]];
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
return {
|
|
577
|
+
target: options.target,
|
|
578
|
+
skillsDir: options.skillsDir,
|
|
579
|
+
projectRoot: options.projectRoot,
|
|
580
|
+
skills,
|
|
581
|
+
missing,
|
|
582
|
+
failures,
|
|
583
|
+
applyFailures,
|
|
584
|
+
integrations,
|
|
585
|
+
...(aggregate.digest !== undefined ? { integrationDigest: aggregate.digest } : {}),
|
|
586
|
+
};
|
|
411
587
|
}
|
|
412
588
|
/** Compile every skill for `target` and report whether each verifies. */
|
|
413
589
|
export async function runVerify(options) {
|