@lannguyensi/harness 0.5.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/CHANGELOG.md +552 -0
- package/LICENSE +21 -0
- package/README.md +154 -0
- package/dist/cli/add/index.d.ts +14 -0
- package/dist/cli/add/index.js +71 -0
- package/dist/cli/add/index.js.map +1 -0
- package/dist/cli/add/mutate.d.ts +39 -0
- package/dist/cli/add/mutate.js +36 -0
- package/dist/cli/add/mutate.js.map +1 -0
- package/dist/cli/adopt/derive.d.ts +38 -0
- package/dist/cli/adopt/derive.js +94 -0
- package/dist/cli/adopt/derive.js.map +1 -0
- package/dist/cli/adopt/index.d.ts +20 -0
- package/dist/cli/adopt/index.js +156 -0
- package/dist/cli/adopt/index.js.map +1 -0
- package/dist/cli/apply/apply.d.ts +49 -0
- package/dist/cli/apply/apply.js +333 -0
- package/dist/cli/apply/apply.js.map +1 -0
- package/dist/cli/apply/generate-memory-index.d.ts +17 -0
- package/dist/cli/apply/generate-memory-index.js +167 -0
- package/dist/cli/apply/generate-memory-index.js.map +1 -0
- package/dist/cli/apply/generate-settings.d.ts +15 -0
- package/dist/cli/apply/generate-settings.js +87 -0
- package/dist/cli/apply/generate-settings.js.map +1 -0
- package/dist/cli/apply/index.d.ts +1 -0
- package/dist/cli/apply/index.js +2 -0
- package/dist/cli/apply/index.js.map +1 -0
- package/dist/cli/audit.d.ts +36 -0
- package/dist/cli/audit.js +121 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/describe.d.ts +13 -0
- package/dist/cli/describe.js +26 -0
- package/dist/cli/describe.js.map +1 -0
- package/dist/cli/diff/engine.d.ts +21 -0
- package/dist/cli/diff/engine.js +161 -0
- package/dist/cli/diff/engine.js.map +1 -0
- package/dist/cli/diff/git.d.ts +6 -0
- package/dist/cli/diff/git.js +32 -0
- package/dist/cli/diff/git.js.map +1 -0
- package/dist/cli/diff/index.d.ts +15 -0
- package/dist/cli/diff/index.js +39 -0
- package/dist/cli/diff/index.js.map +1 -0
- package/dist/cli/diff/since-apply.d.ts +57 -0
- package/dist/cli/diff/since-apply.js +255 -0
- package/dist/cli/diff/since-apply.js.map +1 -0
- package/dist/cli/doctor/format.d.ts +2 -0
- package/dist/cli/doctor/format.js +126 -0
- package/dist/cli/doctor/format.js.map +1 -0
- package/dist/cli/doctor/index.d.ts +14 -0
- package/dist/cli/doctor/index.js +281 -0
- package/dist/cli/doctor/index.js.map +1 -0
- package/dist/cli/doctor/types.d.ts +46 -0
- package/dist/cli/doctor/types.js +2 -0
- package/dist/cli/doctor/types.js.map +1 -0
- package/dist/cli/dry-run.d.ts +46 -0
- package/dist/cli/dry-run.js +168 -0
- package/dist/cli/dry-run.js.map +1 -0
- package/dist/cli/exit-codes.d.ts +10 -0
- package/dist/cli/exit-codes.js +15 -0
- package/dist/cli/exit-codes.js.map +1 -0
- package/dist/cli/explain.d.ts +14 -0
- package/dist/cli/explain.js +97 -0
- package/dist/cli/explain.js.map +1 -0
- package/dist/cli/export.d.ts +31 -0
- package/dist/cli/export.js +84 -0
- package/dist/cli/export.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.js +549 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init/index.d.ts +17 -0
- package/dist/cli/init/index.js +57 -0
- package/dist/cli/init/index.js.map +1 -0
- package/dist/cli/init/templates.d.ts +4 -0
- package/dist/cli/init/templates.js +175 -0
- package/dist/cli/init/templates.js.map +1 -0
- package/dist/cli/list.d.ts +12 -0
- package/dist/cli/list.js +118 -0
- package/dist/cli/list.js.map +1 -0
- package/dist/cli/loader.d.ts +24 -0
- package/dist/cli/loader.js +74 -0
- package/dist/cli/loader.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.js +6 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/policy/intercept.d.ts +34 -0
- package/dist/cli/policy/intercept.js +172 -0
- package/dist/cli/policy/intercept.js.map +1 -0
- package/dist/cli/remove/index.d.ts +18 -0
- package/dist/cli/remove/index.js +95 -0
- package/dist/cli/remove/index.js.map +1 -0
- package/dist/cli/remove/mutate.d.ts +9 -0
- package/dist/cli/remove/mutate.js +68 -0
- package/dist/cli/remove/mutate.js.map +1 -0
- package/dist/cli/validate/checks.d.ts +23 -0
- package/dist/cli/validate/checks.js +253 -0
- package/dist/cli/validate/checks.js.map +1 -0
- package/dist/cli/validate/index.d.ts +18 -0
- package/dist/cli/validate/index.js +50 -0
- package/dist/cli/validate/index.js.map +1 -0
- package/dist/cli/validate/types.d.ts +7 -0
- package/dist/cli/validate/types.js +5 -0
- package/dist/cli/validate/types.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/io/atomic-write.d.ts +8 -0
- package/dist/io/atomic-write.js +30 -0
- package/dist/io/atomic-write.js.map +1 -0
- package/dist/io/harness-lock.d.ts +33 -0
- package/dist/io/harness-lock.js +260 -0
- package/dist/io/harness-lock.js.map +1 -0
- package/dist/io/last-apply.d.ts +20 -0
- package/dist/io/last-apply.js +123 -0
- package/dist/io/last-apply.js.map +1 -0
- package/dist/io/lock.d.ts +11 -0
- package/dist/io/lock.js +33 -0
- package/dist/io/lock.js.map +1 -0
- package/dist/io/patch.d.ts +10 -0
- package/dist/io/patch.js +8 -0
- package/dist/io/patch.js.map +1 -0
- package/dist/io/restart-hints.d.ts +5 -0
- package/dist/io/restart-hints.js +59 -0
- package/dist/io/restart-hints.js.map +1 -0
- package/dist/io/three-state.d.ts +7 -0
- package/dist/io/three-state.js +20 -0
- package/dist/io/three-state.js.map +1 -0
- package/dist/io/validate-before-write.d.ts +12 -0
- package/dist/io/validate-before-write.js +23 -0
- package/dist/io/validate-before-write.js.map +1 -0
- package/dist/overrides/index.d.ts +2 -0
- package/dist/overrides/index.js +3 -0
- package/dist/overrides/index.js.map +1 -0
- package/dist/overrides/machines.d.ts +12 -0
- package/dist/overrides/machines.js +46 -0
- package/dist/overrides/machines.js.map +1 -0
- package/dist/overrides/merge.d.ts +6 -0
- package/dist/overrides/merge.js +173 -0
- package/dist/overrides/merge.js.map +1 -0
- package/dist/policies/duration.d.ts +5 -0
- package/dist/policies/duration.js +50 -0
- package/dist/policies/duration.js.map +1 -0
- package/dist/policies/extract.d.ts +50 -0
- package/dist/policies/extract.js +190 -0
- package/dist/policies/extract.js.map +1 -0
- package/dist/policies/index.d.ts +5 -0
- package/dist/policies/index.js +6 -0
- package/dist/policies/index.js.map +1 -0
- package/dist/policies/ledger-client.d.ts +39 -0
- package/dist/policies/ledger-client.js +378 -0
- package/dist/policies/ledger-client.js.map +1 -0
- package/dist/policies/requires.d.ts +44 -0
- package/dist/policies/requires.js +146 -0
- package/dist/policies/requires.js.map +1 -0
- package/dist/policies/timestamp.d.ts +14 -0
- package/dist/policies/timestamp.js +36 -0
- package/dist/policies/timestamp.js.map +1 -0
- package/dist/probes/mcp.d.ts +29 -0
- package/dist/probes/mcp.js +226 -0
- package/dist/probes/mcp.js.map +1 -0
- package/dist/probes/memory.d.ts +24 -0
- package/dist/probes/memory.js +89 -0
- package/dist/probes/memory.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.js +4 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/intercept.d.ts +53 -0
- package/dist/runtime/intercept.js +181 -0
- package/dist/runtime/intercept.js.map +1 -0
- package/dist/runtime/ledger-record.d.ts +43 -0
- package/dist/runtime/ledger-record.js +239 -0
- package/dist/runtime/ledger-record.js.map +1 -0
- package/dist/runtime/session-id.d.ts +10 -0
- package/dist/runtime/session-id.js +37 -0
- package/dist/runtime/session-id.js.map +1 -0
- package/dist/schema/extract.d.ts +5 -0
- package/dist/schema/extract.js +23 -0
- package/dist/schema/extract.js.map +1 -0
- package/dist/schema/grounding.d.ts +65 -0
- package/dist/schema/grounding.js +21 -0
- package/dist/schema/grounding.js.map +1 -0
- package/dist/schema/hooks.d.ts +86 -0
- package/dist/schema/hooks.js +42 -0
- package/dist/schema/hooks.js.map +1 -0
- package/dist/schema/index.d.ts +961 -0
- package/dist/schema/index.js +55 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/memory.d.ts +131 -0
- package/dist/schema/memory.js +38 -0
- package/dist/schema/memory.js.map +1 -0
- package/dist/schema/policies.d.ts +412 -0
- package/dist/schema/policies.js +53 -0
- package/dist/schema/policies.js.map +1 -0
- package/dist/schema/requires.d.ts +115 -0
- package/dist/schema/requires.js +57 -0
- package/dist/schema/requires.js.map +1 -0
- package/dist/schema/tools.d.ts +283 -0
- package/dist/schema/tools.js +66 -0
- package/dist/schema/tools.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../../../src/cli/validate/checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Manifest } from "../../schema/index.js";
|
|
2
|
+
import { type LoaderOptions } from "../loader.js";
|
|
3
|
+
import { type CheckOptions } from "./checks.js";
|
|
4
|
+
import { type Diagnostic } from "./types.js";
|
|
5
|
+
export interface ValidateOptions extends LoaderOptions, CheckOptions {
|
|
6
|
+
strict?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ValidateResult {
|
|
9
|
+
diagnostics: Diagnostic[];
|
|
10
|
+
manifest: Manifest | null;
|
|
11
|
+
errorCount: number;
|
|
12
|
+
warningCount: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function validate(opts?: ValidateOptions): ValidateResult;
|
|
15
|
+
export declare function formatReport(result: ValidateResult): string;
|
|
16
|
+
export type { Diagnostic } from "./types.js";
|
|
17
|
+
export { fmtDiagnostic } from "./types.js";
|
|
18
|
+
export { runAssetChecks } from "./checks.js";
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ManifestParseError, parseManifest } from "../../schema/index.js";
|
|
2
|
+
import { loadMergedRaw } from "../loader.js";
|
|
3
|
+
import { runAssetChecks } from "./checks.js";
|
|
4
|
+
import { fmtDiagnostic } from "./types.js";
|
|
5
|
+
function fromZodIssues(err) {
|
|
6
|
+
return err.issues.map((i) => ({
|
|
7
|
+
severity: "error",
|
|
8
|
+
path: i.path.length === 0 ? "<root>" : i.path.join("."),
|
|
9
|
+
message: i.message,
|
|
10
|
+
}));
|
|
11
|
+
}
|
|
12
|
+
export function validate(opts = {}) {
|
|
13
|
+
const { mergedRaw } = loadMergedRaw(opts);
|
|
14
|
+
let manifest = null;
|
|
15
|
+
let diagnostics = [];
|
|
16
|
+
try {
|
|
17
|
+
manifest = parseManifest(mergedRaw);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
if (err instanceof ManifestParseError) {
|
|
21
|
+
diagnostics = fromZodIssues(err);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
throw err;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (manifest) {
|
|
28
|
+
diagnostics.push(...runAssetChecks(manifest, opts));
|
|
29
|
+
}
|
|
30
|
+
if (opts.strict) {
|
|
31
|
+
for (const d of diagnostics) {
|
|
32
|
+
if (d.severity === "warning")
|
|
33
|
+
d.severity = "error";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const errorCount = diagnostics.filter((d) => d.severity === "error").length;
|
|
37
|
+
const warningCount = diagnostics.filter((d) => d.severity === "warning").length;
|
|
38
|
+
return { diagnostics, manifest, errorCount, warningCount };
|
|
39
|
+
}
|
|
40
|
+
export function formatReport(result) {
|
|
41
|
+
if (result.diagnostics.length === 0)
|
|
42
|
+
return "no validation findings\n";
|
|
43
|
+
const lines = result.diagnostics.map(fmtDiagnostic);
|
|
44
|
+
lines.push("");
|
|
45
|
+
lines.push(`${result.errorCount} error${result.errorCount === 1 ? "" : "s"}, ${result.warningCount} warning${result.warningCount === 1 ? "" : "s"}.`);
|
|
46
|
+
return `${lines.join("\n")}\n`;
|
|
47
|
+
}
|
|
48
|
+
export { fmtDiagnostic } from "./types.js";
|
|
49
|
+
export { runAssetChecks } from "./checks.js";
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/validate/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/validate/types.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,aAAa,CAAC,CAAa;IACzC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACtD,OAAO,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAC3C,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from "./schema/index.js";
|
|
2
|
+
export * from "./overrides/index.js";
|
|
3
|
+
export { describe, isPillar, type DescribeOptions, type DescribeResult, type Pillar } from "./cli/describe.js";
|
|
4
|
+
export { loadManifest, loadMergedRaw, resolvePaths, type LoaderOptions } from "./cli/loader.js";
|
|
5
|
+
export { HarnessExitError, EX_NOINPUT, EX_USAGE, EX_SOFTWARE } from "./cli/exit-codes.js";
|
|
6
|
+
export { validate, formatReport, runAssetChecks, fmtDiagnostic, type Diagnostic } from "./cli/validate/index.js";
|
|
7
|
+
export { doctor, type DoctorOptions } from "./cli/doctor/index.js";
|
|
8
|
+
export { list, isListCategory, type ListCategory, type ListOptions, type ListResult } from "./cli/list.js";
|
|
9
|
+
export { explain, type ExplainOptions, type ExplainResult } from "./cli/explain.js";
|
|
10
|
+
export { diff, diffManifests, formatDiff, type Change, type ChangeKind, type DiffOptions, type DiffResult } from "./cli/diff/index.js";
|
|
11
|
+
export { format as formatDoctor } from "./cli/doctor/format.js";
|
|
12
|
+
export { RealMcpProbe, type McpProbe, type McpProbeResult } from "./probes/mcp.js";
|
|
13
|
+
export { inspectMemory, type MemoryReport, type StaleMemory } from "./probes/memory.js";
|
|
14
|
+
export { intercept, recordPolicyDecision, payloadFromDecision, encodeLedgerContent, decodeLedgerContent, type ClaudeDenyJson, type InterceptOptions, type InterceptResult, type LedgerClient, type LedgerRecordOptions, type PolicyDecision, type PolicyDecisionPayload, type PolicyOutcome, type ToolEvent, } from "./runtime/index.js";
|
|
15
|
+
export { evaluateRequires, RequiresEvaluationError, parseDurationSeconds, InvalidDurationError, validateExtractGrammar, parseExtractExpression, evaluateExtract, substituteTemplate, ExtractGrammarError, queryLedgerByTag, type LedgerClientOptions, type LedgerQueryResult, type QueryLedgerOptions, type EvaluateRequiresOptions, type LedgerEntry, type RequiresEvaluation, type RequiresTrace, type ExtractBuiltins, type ExtractEventContext, type ExtractEvaluation, type ExtractPath, type ExtractSegment, type ExtractTraceEntry, type ExtractTraceSource, type SubstituteTemplateResult, } from "./policies/index.js";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from "./schema/index.js";
|
|
2
|
+
export * from "./overrides/index.js";
|
|
3
|
+
export { describe, isPillar } from "./cli/describe.js";
|
|
4
|
+
export { loadManifest, loadMergedRaw, resolvePaths } from "./cli/loader.js";
|
|
5
|
+
export { HarnessExitError, EX_NOINPUT, EX_USAGE, EX_SOFTWARE } from "./cli/exit-codes.js";
|
|
6
|
+
export { validate, formatReport, runAssetChecks, fmtDiagnostic } from "./cli/validate/index.js";
|
|
7
|
+
export { doctor } from "./cli/doctor/index.js";
|
|
8
|
+
export { list, isListCategory } from "./cli/list.js";
|
|
9
|
+
export { explain } from "./cli/explain.js";
|
|
10
|
+
export { diff, diffManifests, formatDiff } from "./cli/diff/index.js";
|
|
11
|
+
export { format as formatDoctor } from "./cli/doctor/format.js";
|
|
12
|
+
export { RealMcpProbe } from "./probes/mcp.js";
|
|
13
|
+
export { inspectMemory } from "./probes/memory.js";
|
|
14
|
+
export { intercept, recordPolicyDecision, payloadFromDecision, encodeLedgerContent, decodeLedgerContent, } from "./runtime/index.js";
|
|
15
|
+
export { evaluateRequires, RequiresEvaluationError, parseDurationSeconds, InvalidDurationError, validateExtractGrammar, parseExtractExpression, evaluateExtract, substituteTemplate, ExtractGrammarError, queryLedgerByTag, } from "./policies/index.js";
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAA0D,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAsB,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAmB,MAAM,yBAAyB,CAAC;AACjH,OAAO,EAAE,MAAM,EAAsB,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAwD,MAAM,eAAe,CAAC;AAC3G,OAAO,EAAE,OAAO,EAA2C,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAmE,MAAM,qBAAqB,CAAC;AACvI,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAsC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAuC,MAAM,oBAAoB,CAAC;AACxF,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GAUpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GAgBjB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Document, parseDocument } from "yaml";
|
|
2
|
+
export interface AtomicWriteOptions {
|
|
3
|
+
mode?: number;
|
|
4
|
+
}
|
|
5
|
+
export declare function atomicWriteFile(filePath: string, content: string, options?: AtomicWriteOptions): void;
|
|
6
|
+
export declare function withDocument(yamlString: string, mutate: (doc: Document.Parsed) => void): string;
|
|
7
|
+
export { parseDocument };
|
|
8
|
+
export type { Document };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { parseDocument } from "yaml";
|
|
4
|
+
export function atomicWriteFile(filePath, content, options = {}) {
|
|
5
|
+
const dir = path.dirname(filePath);
|
|
6
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
7
|
+
const base = path.basename(filePath);
|
|
8
|
+
const tmpPath = path.join(dir, `.${base}.${process.pid}.${Date.now()}.tmp`);
|
|
9
|
+
const fd = fs.openSync(tmpPath, "w", options.mode ?? 0o644);
|
|
10
|
+
try {
|
|
11
|
+
fs.writeSync(fd, content);
|
|
12
|
+
fs.fsyncSync(fd);
|
|
13
|
+
}
|
|
14
|
+
finally {
|
|
15
|
+
fs.closeSync(fd);
|
|
16
|
+
}
|
|
17
|
+
fs.renameSync(tmpPath, filePath);
|
|
18
|
+
}
|
|
19
|
+
export function withDocument(yamlString, mutate) {
|
|
20
|
+
const doc = parseDocument(yamlString);
|
|
21
|
+
mutate(doc);
|
|
22
|
+
// flowCollectionPadding:false matches our manifest style ([a, b], not [ a, b ]).
|
|
23
|
+
// lineWidth:0 disables 80-col folding so long flow-sequences (e.g. an
|
|
24
|
+
// mcp[].command path > 80 chars) are not silently rewritten to block style.
|
|
25
|
+
// Together these make a no-op round-trip on a manifest authored in our
|
|
26
|
+
// convention byte-equivalent.
|
|
27
|
+
return doc.toString({ flowCollectionPadding: false, lineWidth: 0 });
|
|
28
|
+
}
|
|
29
|
+
export { parseDocument };
|
|
30
|
+
//# sourceMappingURL=atomic-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-write.js","sourceRoot":"","sources":["../../src/io/atomic-write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAY,aAAa,EAAE,MAAM,MAAM,CAAC;AAM/C,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,OAAe,EACf,UAA8B,EAAE;IAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5E,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1B,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IACD,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,UAAkB,EAClB,MAAsC;IAEtC,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,iFAAiF;IACjF,sEAAsE;IACtE,4EAA4E;IAC5E,uEAAuE;IACvE,8BAA8B;IAC9B,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,qBAAqB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Manifest } from "../schema/index.js";
|
|
2
|
+
export interface AssetEntry {
|
|
3
|
+
kind: "asset";
|
|
4
|
+
path: string;
|
|
5
|
+
sha256: string;
|
|
6
|
+
}
|
|
7
|
+
export interface MemoryDirEntry {
|
|
8
|
+
kind: "memory-dir";
|
|
9
|
+
path: string;
|
|
10
|
+
sha256: string;
|
|
11
|
+
file_count: number;
|
|
12
|
+
}
|
|
13
|
+
export type LockEntry = AssetEntry | MemoryDirEntry;
|
|
14
|
+
export declare const LOCK_BASENAME = "harness.lock";
|
|
15
|
+
export declare function computeAssetEntry(absolutePath: string): AssetEntry;
|
|
16
|
+
export declare function computeMemoryDirEntry(absoluteDirPath: string): MemoryDirEntry;
|
|
17
|
+
export declare function serializeLock(entries: LockEntry[]): string;
|
|
18
|
+
export declare function parseLock(content: string): LockEntry[];
|
|
19
|
+
export declare function writeLock(lockPath: string, entries: LockEntry[]): void;
|
|
20
|
+
export declare function readLock(lockPath: string): LockEntry[] | null;
|
|
21
|
+
export type DriftReason = "missing" | "modified";
|
|
22
|
+
export interface DriftedAsset {
|
|
23
|
+
entry: LockEntry;
|
|
24
|
+
reason: DriftReason;
|
|
25
|
+
currentSha?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function computeDrift(entries: LockEntry[]): DriftedAsset[];
|
|
28
|
+
export interface BuildLockOptions {
|
|
29
|
+
homeDir?: string;
|
|
30
|
+
projectName?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function collectManifestAssetPaths(manifest: Manifest, opts?: BuildLockOptions): string[];
|
|
33
|
+
export declare function buildLockEntries(manifest: Manifest, opts?: BuildLockOptions): LockEntry[];
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
// `harness.lock` writer + reader. See ARCHITECTURE.md §7 (drift handling) and
|
|
2
|
+
// §10/lock-file bullet, and ROADMAP "Open decisions resolved here #3".
|
|
3
|
+
//
|
|
4
|
+
// Lock format is line-oriented JSON (NDJSON) for diff-friendliness:
|
|
5
|
+
// {"kind":"asset","path":"…","sha256":"…"}
|
|
6
|
+
// {"kind":"memory-dir","path":"…","sha256":"…","file_count":N}
|
|
7
|
+
//
|
|
8
|
+
// Tool-asset files (hook scripts, MCP entrypoints, skill SKILL.md, memory
|
|
9
|
+
// router binary) get one entry per file. Memory directories under
|
|
10
|
+
// memory.directories[] are aggregated Merkle-style: the directory's hash is
|
|
11
|
+
// sha256(L), where L = `<basename>:<hex-sha256-of-content>` joined with a
|
|
12
|
+
// single `\n` between entries, sorted ascending by basename, no trailing
|
|
13
|
+
// newline. Empty directories hash to sha256("").
|
|
14
|
+
// A new memory file or a content change produces exactly one diff line per
|
|
15
|
+
// affected directory.
|
|
16
|
+
//
|
|
17
|
+
// Stat errors during asset/memory-dir collection are treated as "not present"
|
|
18
|
+
// and silently omitted from the lock. This means a permission-denied path
|
|
19
|
+
// (EACCES) will not appear in the lock; that is intentional today (most stat
|
|
20
|
+
// failures are ENOENT in practice), but a future revision may choose to
|
|
21
|
+
// surface EACCES as a diagnostic.
|
|
22
|
+
//
|
|
23
|
+
// `mcp[]` and `memory.router` entries with `enabled: false` are skipped: per
|
|
24
|
+
// ARCHITECTURE §3, disabled MCP entries are removed from the generated
|
|
25
|
+
// runtime config, so locking their assets would tie apply-time drift checks
|
|
26
|
+
// to assets the user has explicitly opted out of.
|
|
27
|
+
import * as crypto from "node:crypto";
|
|
28
|
+
import * as fs from "node:fs";
|
|
29
|
+
import * as os from "node:os";
|
|
30
|
+
import * as path from "node:path";
|
|
31
|
+
import { atomicWriteFile } from "./atomic-write.js";
|
|
32
|
+
export const LOCK_BASENAME = "harness.lock";
|
|
33
|
+
function sha256Hex(input) {
|
|
34
|
+
return crypto.createHash("sha256").update(input).digest("hex");
|
|
35
|
+
}
|
|
36
|
+
function expandHome(p, homeDir) {
|
|
37
|
+
const home = homeDir ?? os.homedir();
|
|
38
|
+
if (p === "~")
|
|
39
|
+
return home;
|
|
40
|
+
if (p.startsWith("~/"))
|
|
41
|
+
return path.join(home, p.slice(2));
|
|
42
|
+
return p;
|
|
43
|
+
}
|
|
44
|
+
export function computeAssetEntry(absolutePath) {
|
|
45
|
+
const buf = fs.readFileSync(absolutePath);
|
|
46
|
+
return { kind: "asset", path: absolutePath, sha256: sha256Hex(buf) };
|
|
47
|
+
}
|
|
48
|
+
export function computeMemoryDirEntry(absoluteDirPath) {
|
|
49
|
+
// Top-level .md files only; non-recursive. Symlinks are skipped via
|
|
50
|
+
// withFileTypes.isFile() (which lstats), so a symlink-to-passwd named
|
|
51
|
+
// *.md cannot leak external content into the lock.
|
|
52
|
+
const dirents = fs.readdirSync(absoluteDirPath, { withFileTypes: true });
|
|
53
|
+
const files = dirents
|
|
54
|
+
.filter((d) => d.isFile() && d.name.endsWith(".md"))
|
|
55
|
+
.map((d) => d.name)
|
|
56
|
+
.sort();
|
|
57
|
+
const lines = files.map((f) => {
|
|
58
|
+
const buf = fs.readFileSync(path.join(absoluteDirPath, f));
|
|
59
|
+
return `${f}:${sha256Hex(buf)}`;
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
kind: "memory-dir",
|
|
63
|
+
path: absoluteDirPath,
|
|
64
|
+
sha256: sha256Hex(lines.join("\n")),
|
|
65
|
+
file_count: files.length,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function sortKey(e) {
|
|
69
|
+
return `${e.kind}\0${e.path}`;
|
|
70
|
+
}
|
|
71
|
+
function byteCompare(a, b) {
|
|
72
|
+
// Locale-independent byte order. localeCompare would give different
|
|
73
|
+
// results across locales (e.g. de_DE may collate ä before/after b
|
|
74
|
+
// depending on the strength), which would make harness.lock non-portable
|
|
75
|
+
// across machines once a hook script with a non-ASCII basename appears.
|
|
76
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
77
|
+
}
|
|
78
|
+
export function serializeLock(entries) {
|
|
79
|
+
const sorted = [...entries].sort((a, b) => byteCompare(sortKey(a), sortKey(b)));
|
|
80
|
+
if (sorted.length === 0)
|
|
81
|
+
return "";
|
|
82
|
+
return `${sorted.map((e) => JSON.stringify(e)).join("\n")}\n`;
|
|
83
|
+
}
|
|
84
|
+
export function parseLock(content) {
|
|
85
|
+
const out = [];
|
|
86
|
+
for (const rawLine of content.split("\n")) {
|
|
87
|
+
const line = rawLine.trim();
|
|
88
|
+
if (!line)
|
|
89
|
+
continue;
|
|
90
|
+
let parsed;
|
|
91
|
+
try {
|
|
92
|
+
parsed = JSON.parse(line);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
throw new Error(`malformed ${LOCK_BASENAME} entry: ${line}`);
|
|
96
|
+
}
|
|
97
|
+
if (!isLockEntry(parsed)) {
|
|
98
|
+
throw new Error(`malformed ${LOCK_BASENAME} entry: ${line}`);
|
|
99
|
+
}
|
|
100
|
+
out.push(parsed);
|
|
101
|
+
}
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
function isLockEntry(x) {
|
|
105
|
+
if (!x || typeof x !== "object")
|
|
106
|
+
return false;
|
|
107
|
+
const e = x;
|
|
108
|
+
if (e.kind === "asset") {
|
|
109
|
+
return typeof e.path === "string" && typeof e.sha256 === "string";
|
|
110
|
+
}
|
|
111
|
+
if (e.kind === "memory-dir") {
|
|
112
|
+
return (typeof e.path === "string" &&
|
|
113
|
+
typeof e.sha256 === "string" &&
|
|
114
|
+
typeof e.file_count === "number");
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
export function writeLock(lockPath, entries) {
|
|
119
|
+
atomicWriteFile(lockPath, serializeLock(entries));
|
|
120
|
+
}
|
|
121
|
+
export function readLock(lockPath) {
|
|
122
|
+
if (!fs.existsSync(lockPath))
|
|
123
|
+
return null;
|
|
124
|
+
return parseLock(fs.readFileSync(lockPath, "utf8"));
|
|
125
|
+
}
|
|
126
|
+
export function computeDrift(entries) {
|
|
127
|
+
const drifted = [];
|
|
128
|
+
for (const e of entries) {
|
|
129
|
+
let stat = null;
|
|
130
|
+
try {
|
|
131
|
+
stat = fs.statSync(e.path);
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
drifted.push({ entry: e, reason: "missing" });
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (e.kind === "asset") {
|
|
138
|
+
if (!stat.isFile()) {
|
|
139
|
+
drifted.push({ entry: e, reason: "missing" });
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
const current = computeAssetEntry(e.path);
|
|
143
|
+
if (current.sha256 !== e.sha256) {
|
|
144
|
+
drifted.push({ entry: e, reason: "modified", currentSha: current.sha256 });
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
if (!stat.isDirectory()) {
|
|
149
|
+
drifted.push({ entry: e, reason: "missing" });
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const current = computeMemoryDirEntry(e.path);
|
|
153
|
+
if (current.sha256 !== e.sha256) {
|
|
154
|
+
drifted.push({ entry: e, reason: "modified", currentSha: current.sha256 });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return drifted;
|
|
159
|
+
}
|
|
160
|
+
// Interpreter binaries that often appear as the first argv of an MCP or
|
|
161
|
+
// router command. They are environmental concerns (the user's runtime), not
|
|
162
|
+
// harness-managed assets. Locking the system Node binary would cause spurious
|
|
163
|
+
// drift on every Node minor-version bump.
|
|
164
|
+
const KNOWN_INTERPRETERS = new Set([
|
|
165
|
+
"node",
|
|
166
|
+
"npx",
|
|
167
|
+
"python",
|
|
168
|
+
"python3",
|
|
169
|
+
"bash",
|
|
170
|
+
"sh",
|
|
171
|
+
"tsx",
|
|
172
|
+
"deno",
|
|
173
|
+
"bun",
|
|
174
|
+
]);
|
|
175
|
+
function isInterpreter(token) {
|
|
176
|
+
return KNOWN_INTERPRETERS.has(path.basename(token));
|
|
177
|
+
}
|
|
178
|
+
export function collectManifestAssetPaths(manifest, opts = {}) {
|
|
179
|
+
const seen = new Set();
|
|
180
|
+
const out = [];
|
|
181
|
+
const consider = (p) => {
|
|
182
|
+
if (isInterpreter(p))
|
|
183
|
+
return;
|
|
184
|
+
const expanded = expandHome(p, opts.homeDir);
|
|
185
|
+
if (!path.isAbsolute(expanded))
|
|
186
|
+
return;
|
|
187
|
+
if (isInterpreter(expanded))
|
|
188
|
+
return;
|
|
189
|
+
let isFile = false;
|
|
190
|
+
try {
|
|
191
|
+
isFile = fs.statSync(expanded).isFile();
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (!isFile)
|
|
197
|
+
return;
|
|
198
|
+
if (seen.has(expanded))
|
|
199
|
+
return;
|
|
200
|
+
seen.add(expanded);
|
|
201
|
+
out.push(expanded);
|
|
202
|
+
};
|
|
203
|
+
for (const h of manifest.hooks) {
|
|
204
|
+
const tok = h.command.trim().split(/\s+/)[0];
|
|
205
|
+
if (tok)
|
|
206
|
+
consider(tok);
|
|
207
|
+
}
|
|
208
|
+
for (const m of manifest.tools.mcp) {
|
|
209
|
+
if (m.enabled === false)
|
|
210
|
+
continue;
|
|
211
|
+
const args = Array.isArray(m.command) ? m.command : m.command.split(/\s+/);
|
|
212
|
+
for (const a of args)
|
|
213
|
+
consider(a);
|
|
214
|
+
}
|
|
215
|
+
if (manifest.memory.router && manifest.memory.router.enabled !== false) {
|
|
216
|
+
for (const a of manifest.memory.router.command)
|
|
217
|
+
consider(a);
|
|
218
|
+
}
|
|
219
|
+
for (const skillName of manifest.tools.skills.enabled) {
|
|
220
|
+
for (const dir of manifest.tools.skills.source_dirs) {
|
|
221
|
+
const candidate = path.join(expandHome(dir, opts.homeDir), skillName, "SKILL.md");
|
|
222
|
+
try {
|
|
223
|
+
if (fs.statSync(candidate).isFile()) {
|
|
224
|
+
consider(candidate);
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
// try next source_dir
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return out;
|
|
234
|
+
}
|
|
235
|
+
export function buildLockEntries(manifest, opts = {}) {
|
|
236
|
+
const entries = [];
|
|
237
|
+
for (const absPath of collectManifestAssetPaths(manifest, opts)) {
|
|
238
|
+
entries.push(computeAssetEntry(absPath));
|
|
239
|
+
}
|
|
240
|
+
for (const dir of manifest.memory.directories) {
|
|
241
|
+
let resolved = expandHome(dir.path, opts.homeDir);
|
|
242
|
+
if (resolved.includes("{project}")) {
|
|
243
|
+
if (!opts.projectName)
|
|
244
|
+
continue;
|
|
245
|
+
resolved = resolved.split("{project}").join(opts.projectName);
|
|
246
|
+
}
|
|
247
|
+
let isDir = false;
|
|
248
|
+
try {
|
|
249
|
+
isDir = fs.statSync(resolved).isDirectory();
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
// skip missing dirs
|
|
253
|
+
}
|
|
254
|
+
if (!isDir)
|
|
255
|
+
continue;
|
|
256
|
+
entries.push(computeMemoryDirEntry(resolved));
|
|
257
|
+
}
|
|
258
|
+
return entries;
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=harness-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-lock.js","sourceRoot":"","sources":["../../src/io/harness-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface LastApplyFileEntry {
|
|
2
|
+
sha256: string;
|
|
3
|
+
content: string;
|
|
4
|
+
}
|
|
5
|
+
export interface MemoryDirSnapshot {
|
|
6
|
+
sha256: string;
|
|
7
|
+
fileHashes: Record<string, string>;
|
|
8
|
+
}
|
|
9
|
+
export interface LastApplyRecord {
|
|
10
|
+
files: Record<string, LastApplyFileEntry>;
|
|
11
|
+
manifest?: LastApplyFileEntry;
|
|
12
|
+
memoryDirs?: Record<string, MemoryDirSnapshot>;
|
|
13
|
+
}
|
|
14
|
+
export declare const LAST_APPLY_BASENAME = ".last-apply";
|
|
15
|
+
export declare function lastApplyPath(generatedDir: string): string;
|
|
16
|
+
export declare function sha256Hex(content: string): string;
|
|
17
|
+
export declare function buildLastApply(files: Record<string, string>): LastApplyRecord;
|
|
18
|
+
export declare function writeLastApply(generatedDir: string, record: LastApplyRecord): void;
|
|
19
|
+
export declare function readLastApply(generatedDir: string): LastApplyRecord | null;
|
|
20
|
+
export declare function verifyLastApplyIntegrity(record: LastApplyRecord): string[];
|