@ai-dossier/core 1.9.0 → 1.11.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.
@@ -0,0 +1,39 @@
1
+ import type { DossierFrontmatter } from './types';
2
+ /** Must stay in sync with evidence-schema.json's `evidence_schema_version` const. */
3
+ export declare const EVIDENCE_SCHEMA_VERSION = "1.0.0";
4
+ /** Parse-time size guard for a sidecar file, ahead of JSON.parse and schema validation. */
5
+ export declare const EVIDENCE_MAX_BYTES: number;
6
+ /** Must stay in sync with evidence-schema.json's `entries.items.properties.rationale.maxLength`. */
7
+ export declare const EVIDENCE_MAX_RATIONALE_CHARS = 500;
8
+ export interface EvidenceRef {
9
+ provider: 'claude-code' | 'codex' | 'opencode' | 'gemini-cli' | 'other';
10
+ session: string;
11
+ event?: string;
12
+ host?: string;
13
+ extra?: Record<string, string>;
14
+ }
15
+ export interface EvidenceEntry {
16
+ anchor: string;
17
+ rationale: string;
18
+ created_at: string;
19
+ evidence: EvidenceRef[];
20
+ }
21
+ export interface EvidenceRecord {
22
+ evidence_schema_version: string;
23
+ dossier: string;
24
+ version: string;
25
+ checksum: {
26
+ algorithm: 'sha256';
27
+ hash: string;
28
+ };
29
+ entries: EvidenceEntry[];
30
+ }
31
+ export declare function validateEvidence(value: unknown): string[];
32
+ export declare function parseEvidence(json: string): EvidenceRecord;
33
+ export declare function createEvidenceRecord(input: {
34
+ dossier: string;
35
+ version: string;
36
+ checksumHash: string;
37
+ }): EvidenceRecord;
38
+ export declare function evidenceMatchesDossier(record: EvidenceRecord, frontmatter: Pick<DossierFrontmatter, 'version' | 'checksum'>, fullName: string): string[];
39
+ //# sourceMappingURL=evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD,qFAAqF;AACrF,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAC/C,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAC7C,oGAAoG;AACpG,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,GAAG,OAAO,CAAC;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,SAAS,EAAE,QAAQ,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAID,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAOzD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAkB1D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,cAAc,CAWjB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,UAAU,CAAC,EAC7D,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CA4BV"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EVIDENCE_MAX_RATIONALE_CHARS = exports.EVIDENCE_MAX_BYTES = exports.EVIDENCE_SCHEMA_VERSION = void 0;
7
+ exports.validateEvidence = validateEvidence;
8
+ exports.parseEvidence = parseEvidence;
9
+ exports.createEvidenceRecord = createEvidenceRecord;
10
+ exports.evidenceMatchesDossier = evidenceMatchesDossier;
11
+ const evidence_schema_json_1 = __importDefault(require("./schema/evidence-schema.json"));
12
+ const ajv_1 = require("./utils/ajv");
13
+ const errors_1 = require("./utils/errors");
14
+ /** Must stay in sync with evidence-schema.json's `evidence_schema_version` const. */
15
+ exports.EVIDENCE_SCHEMA_VERSION = '1.0.0';
16
+ /** Parse-time size guard for a sidecar file, ahead of JSON.parse and schema validation. */
17
+ exports.EVIDENCE_MAX_BYTES = 256 * 1024;
18
+ /** Must stay in sync with evidence-schema.json's `entries.items.properties.rationale.maxLength`. */
19
+ exports.EVIDENCE_MAX_RATIONALE_CHARS = 500;
20
+ const validate = (0, ajv_1.compileSchema)(evidence_schema_json_1.default);
21
+ function validateEvidence(value) {
22
+ const valid = validate(value);
23
+ if (valid) {
24
+ return [];
25
+ }
26
+ return (validate.errors || []).map((err) => `${err.instancePath} ${err.message}`.trim());
27
+ }
28
+ function parseEvidence(json) {
29
+ if (Buffer.byteLength(json, 'utf8') > exports.EVIDENCE_MAX_BYTES) {
30
+ throw new Error(`Evidence record exceeds maximum size of ${exports.EVIDENCE_MAX_BYTES} bytes`);
31
+ }
32
+ let parsed;
33
+ try {
34
+ parsed = JSON.parse(json);
35
+ }
36
+ catch (err) {
37
+ throw new Error(`Failed to parse evidence record JSON: ${(0, errors_1.getErrorMessage)(err)}`);
38
+ }
39
+ const errors = validateEvidence(parsed);
40
+ if (errors.length > 0) {
41
+ throw new Error(errors.join('; '));
42
+ }
43
+ return parsed;
44
+ }
45
+ function createEvidenceRecord(input) {
46
+ return {
47
+ evidence_schema_version: exports.EVIDENCE_SCHEMA_VERSION,
48
+ dossier: input.dossier,
49
+ version: input.version,
50
+ checksum: {
51
+ algorithm: 'sha256',
52
+ hash: input.checksumHash,
53
+ },
54
+ entries: [],
55
+ };
56
+ }
57
+ function evidenceMatchesDossier(record, frontmatter, fullName) {
58
+ if (!frontmatter.checksum?.hash) {
59
+ return ['dossier has no checksum; sign or run checksum --update before attaching evidence'];
60
+ }
61
+ if (!record.checksum?.hash) {
62
+ return ['evidence record has no checksum; parse it with parseEvidence before comparing'];
63
+ }
64
+ const messages = [];
65
+ if (record.dossier !== fullName) {
66
+ messages.push(`evidence record dossier "${record.dossier}" does not match "${fullName}"`);
67
+ }
68
+ if (record.version !== frontmatter.version) {
69
+ messages.push(`evidence record version "${record.version}" does not match dossier version "${frontmatter.version}"`);
70
+ }
71
+ if (record.checksum.hash !== frontmatter.checksum.hash) {
72
+ messages.push(`evidence record checksum "${record.checksum.hash}" does not match dossier checksum "${frontmatter.checksum.hash}"`);
73
+ }
74
+ return messages;
75
+ }
76
+ //# sourceMappingURL=evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,8 @@ export { isOpenCodeUsageStream, parseAgentUsage, parseAnnouncedWait, parseDispat
15
15
  export { calculateChecksum, verifyIntegrity } from './checksum';
16
16
  export type { CoherenceContext, CoherenceDiagnostic, CoherenceResult, CoherenceSeverity, DeclaredOutputSchema, StepOutput, } from './coherence';
17
17
  export { validateCoherence, validateStepCoherence } from './coherence';
18
+ export type { EvidenceEntry, EvidenceRecord, EvidenceRef } from './evidence';
19
+ export { createEvidenceRecord, EVIDENCE_MAX_BYTES, EVIDENCE_MAX_RATIONALE_CHARS, EVIDENCE_SCHEMA_VERSION, evidenceMatchesDossier, parseEvidence, validateEvidence, } from './evidence';
18
20
  export type { FormatOptions, FormatResult } from './formatter';
19
21
  export { formatDossierContent, formatDossierFile } from './formatter';
20
22
  export type { LintConfig, LintDiagnostic, LintResult, LintRule, LintRuleContext, LintSeverity, RuleSeverityOverride, } from './linter';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -26,8 +26,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
26
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.VerifierRegistry = exports.KmsVerifier = exports.KmsSigner = exports.getVerifierRegistry = exports.Ed25519Verifier = exports.Ed25519Signer = exports.verifyWithKms = exports.verifyWithEd25519 = exports.verifySignature = exports.trustedKeysFromContent = exports.reportTrustedKeyProblems = exports.parseTrustedKeys = exports.loadTrustedKeys = exports.isKmsKeyIdentifier = exports.findTrustedIdentifier = exports.scanMarkdown = exports.scanDossierFile = exports.scanDossier = exports.SecurityRuleRegistry = exports.defaultSecurityRules = exports.buildReport = exports.runsLogPath = exports.assessVerificationRisk = exports.assessContentRisk = exports.validateFrontmatter = exports.VALID_STATUSES = exports.VALID_RISK_LEVELS = exports.REQUIRED_FIELDS = exports.RECOMMENDED_FIELDS = exports.parseDossierFile = exports.parseDossierContent = exports.loadLintConfig = exports.lintDossierFile = exports.lintDossier = exports.LintRuleRegistry = exports.defaultRules = exports.formatDossierFile = exports.formatDossierContent = exports.validateStepCoherence = exports.validateCoherence = exports.verifyIntegrity = exports.calculateChecksum = exports.usageParserFor = exports.SCHED_DISPATCH_EVENT = exports.parseOpenCodeUsage = exports.parseLastToolUse = exports.parseDispatchApiError = exports.parseAnnouncedWait = exports.parseAgentUsage = exports.isOpenCodeUsageStream = void 0;
30
- exports.createDefaultVerificationResult = exports.scanBodyForUrls = exports.isUrlCoveredByDeclared = exports.isPlaceholderUrl = exports.findUndeclaredUrls = exports.findStaleReferences = exports.collectDeclaredUrls = exports.readFileIfExists = exports.getErrorStack = exports.getErrorMessage = exports.sha256Hex = exports.sha256Hash = exports.VALID_TRACE_STATUSES = exports.createTraceRecorder = exports.resolveTraceConfig = exports.toSpkiPem = exports.signatureCoverage = exports.publicKeysMatch = exports.normalizePublicKey = exports.isSupportedPublicKey = exports.canonicalizeFrontmatter = exports.buildSignedPayload = void 0;
29
+ exports.verifyWithEd25519 = exports.verifySignature = exports.trustedKeysFromContent = exports.reportTrustedKeyProblems = exports.parseTrustedKeys = exports.loadTrustedKeys = exports.isKmsKeyIdentifier = exports.findTrustedIdentifier = exports.scanMarkdown = exports.scanDossierFile = exports.scanDossier = exports.SecurityRuleRegistry = exports.defaultSecurityRules = exports.buildReport = exports.runsLogPath = exports.assessVerificationRisk = exports.assessContentRisk = exports.validateFrontmatter = exports.VALID_STATUSES = exports.VALID_RISK_LEVELS = exports.REQUIRED_FIELDS = exports.RECOMMENDED_FIELDS = exports.parseDossierFile = exports.parseDossierContent = exports.loadLintConfig = exports.lintDossierFile = exports.lintDossier = exports.LintRuleRegistry = exports.defaultRules = exports.formatDossierFile = exports.formatDossierContent = exports.validateEvidence = exports.parseEvidence = exports.evidenceMatchesDossier = exports.EVIDENCE_SCHEMA_VERSION = exports.EVIDENCE_MAX_RATIONALE_CHARS = exports.EVIDENCE_MAX_BYTES = exports.createEvidenceRecord = exports.validateStepCoherence = exports.validateCoherence = exports.verifyIntegrity = exports.calculateChecksum = exports.usageParserFor = exports.SCHED_DISPATCH_EVENT = exports.parseOpenCodeUsage = exports.parseLastToolUse = exports.parseDispatchApiError = exports.parseAnnouncedWait = exports.parseAgentUsage = exports.isOpenCodeUsageStream = void 0;
30
+ exports.createDefaultVerificationResult = exports.scanBodyForUrls = exports.isUrlCoveredByDeclared = exports.isPlaceholderUrl = exports.findUndeclaredUrls = exports.findStaleReferences = exports.collectDeclaredUrls = exports.readFileIfExists = exports.getErrorStack = exports.getErrorMessage = exports.sha256Hex = exports.sha256Hash = exports.VALID_TRACE_STATUSES = exports.createTraceRecorder = exports.resolveTraceConfig = exports.toSpkiPem = exports.signatureCoverage = exports.publicKeysMatch = exports.normalizePublicKey = exports.isSupportedPublicKey = exports.canonicalizeFrontmatter = exports.buildSignedPayload = exports.VerifierRegistry = exports.KmsVerifier = exports.KmsSigner = exports.getVerifierRegistry = exports.Ed25519Verifier = exports.Ed25519Signer = exports.verifyWithKms = void 0;
31
31
  var agent_usage_1 = require("./agent-usage");
32
32
  Object.defineProperty(exports, "isOpenCodeUsageStream", { enumerable: true, get: function () { return agent_usage_1.isOpenCodeUsageStream; } });
33
33
  Object.defineProperty(exports, "parseAgentUsage", { enumerable: true, get: function () { return agent_usage_1.parseAgentUsage; } });
@@ -44,6 +44,14 @@ Object.defineProperty(exports, "verifyIntegrity", { enumerable: true, get: funct
44
44
  var coherence_1 = require("./coherence");
45
45
  Object.defineProperty(exports, "validateCoherence", { enumerable: true, get: function () { return coherence_1.validateCoherence; } });
46
46
  Object.defineProperty(exports, "validateStepCoherence", { enumerable: true, get: function () { return coherence_1.validateStepCoherence; } });
47
+ var evidence_1 = require("./evidence");
48
+ Object.defineProperty(exports, "createEvidenceRecord", { enumerable: true, get: function () { return evidence_1.createEvidenceRecord; } });
49
+ Object.defineProperty(exports, "EVIDENCE_MAX_BYTES", { enumerable: true, get: function () { return evidence_1.EVIDENCE_MAX_BYTES; } });
50
+ Object.defineProperty(exports, "EVIDENCE_MAX_RATIONALE_CHARS", { enumerable: true, get: function () { return evidence_1.EVIDENCE_MAX_RATIONALE_CHARS; } });
51
+ Object.defineProperty(exports, "EVIDENCE_SCHEMA_VERSION", { enumerable: true, get: function () { return evidence_1.EVIDENCE_SCHEMA_VERSION; } });
52
+ Object.defineProperty(exports, "evidenceMatchesDossier", { enumerable: true, get: function () { return evidence_1.evidenceMatchesDossier; } });
53
+ Object.defineProperty(exports, "parseEvidence", { enumerable: true, get: function () { return evidence_1.parseEvidence; } });
54
+ Object.defineProperty(exports, "validateEvidence", { enumerable: true, get: function () { return evidence_1.validateEvidence; } });
47
55
  // Formatter exports
48
56
  var formatter_1 = require("./formatter");
49
57
  Object.defineProperty(exports, "formatDossierContent", { enumerable: true, get: function () { return formatter_1.formatDossierContent; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;AAIH,6CASuB;AARrB,oHAAA,qBAAqB,OAAA;AACrB,8GAAA,eAAe,OAAA;AACf,iHAAA,kBAAkB,OAAA;AAClB,oHAAA,qBAAqB,OAAA;AACrB,+GAAA,gBAAgB,OAAA;AAChB,iHAAA,kBAAkB,OAAA;AAClB,mHAAA,oBAAoB,OAAA;AACpB,6GAAA,cAAc,OAAA;AAEhB,mBAAmB;AACnB,uCAAgE;AAAvD,6GAAA,iBAAiB,OAAA;AAAE,2GAAA,eAAe,OAAA;AAU3C,yCAAuE;AAA9D,8GAAA,iBAAiB,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAGjD,uCAQoB;AAPlB,gHAAA,oBAAoB,OAAA;AACpB,8GAAA,kBAAkB,OAAA;AAClB,wHAAA,4BAA4B,OAAA;AAC5B,mHAAA,uBAAuB,OAAA;AACvB,kHAAA,sBAAsB,OAAA;AACtB,yGAAA,aAAa,OAAA;AACb,4GAAA,gBAAgB,OAAA;AAGlB,oBAAoB;AACpB,yCAAsE;AAA7D,iHAAA,oBAAoB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAUhD,iBAAiB;AACjB,mCAMkB;AALhB,sGAAA,YAAY,OAAA;AACZ,0GAAA,gBAAgB,OAAA;AAChB,qGAAA,WAAW,OAAA;AACX,yGAAA,eAAe,OAAA;AACf,wGAAA,cAAc,OAAA;AAEhB,iBAAiB;AACjB,mCAQkB;AAPhB,6GAAA,mBAAmB,OAAA;AACnB,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,yGAAA,eAAe,OAAA;AACf,2GAAA,iBAAiB,OAAA;AACjB,wGAAA,cAAc,OAAA;AACd,6GAAA,mBAAmB,OAAA;AASrB,0BAA0B;AAC1B,qDAA8E;AAArE,oHAAA,iBAAiB,OAAA;AAAE,yHAAA,sBAAsB,OAAA;AAGlD,iDAA8C;AAArC,4GAAA,WAAW,OAAA;AAYpB,uDAO4B;AAN1B,+GAAA,WAAW,OAAA;AACX,wHAAA,oBAAoB,OAAA;AACpB,wHAAA,oBAAoB,OAAA;AACpB,+GAAA,WAAW,OAAA;AACX,mHAAA,eAAe,OAAA;AACf,gHAAA,YAAY,OAAA;AAId,yCAUqB;AATnB,kHAAA,qBAAqB,OAAA;AACrB,+GAAA,kBAAkB,OAAA;AAClB,4GAAA,eAAe,OAAA;AACf,6GAAA,gBAAgB,OAAA;AAChB,qHAAA,wBAAwB,OAAA;AACxB,mHAAA,sBAAsB,OAAA;AACtB,4GAAA,eAAe,OAAA;AACf,8GAAA,iBAAiB,OAAA;AACjB,0GAAA,aAAa,OAAA;AAEf,iDAAiD;AACjD,qCAWmB;AAVjB,wGAAA,aAAa,OAAA;AACb,0GAAA,eAAe,OAAA;AACf,8GAAA,mBAAmB,OAAA;AACnB,oGAAA,SAAS,OAAA;AACT,sGAAA,WAAW,OAAA;AAIX,2GAAA,gBAAgB,OAAA;AAKlB,qDAQ2B;AAPzB,qHAAA,kBAAkB,OAAA;AAClB,0HAAA,uBAAuB,OAAA;AACvB,uHAAA,oBAAoB,OAAA;AACpB,qHAAA,kBAAkB,OAAA;AAClB,kHAAA,eAAe,OAAA;AACf,oHAAA,iBAAiB,OAAA;AACjB,4GAAA,SAAS,OAAA;AASX,+CAAoD;AAA3C,kHAAA,kBAAkB,OAAA;AAW3B,mDAA6E;AAApE,qHAAA,mBAAmB,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAClD,eAAe;AACf,0CAAwB;AACxB,mBAAmB;AACnB,yCAAuD;AAA9C,oGAAA,UAAU,OAAA;AAAE,mGAAA,SAAS,OAAA;AAC9B,kBAAkB;AAClB,yCAAgE;AAAvD,yGAAA,eAAe,OAAA;AAAE,uGAAA,aAAa,OAAA;AACvC,wBAAwB;AACxB,iCAA8C;AAArC,sGAAA,gBAAgB,OAAA;AACzB,yBAAyB;AACzB,mDAO6B;AAN3B,kHAAA,mBAAmB,OAAA;AACnB,kHAAA,mBAAmB,OAAA;AACnB,iHAAA,kBAAkB,OAAA;AAClB,+GAAA,gBAAgB,OAAA;AAChB,qHAAA,sBAAsB,OAAA;AACtB,8GAAA,eAAe,OAAA;AAEjB,yBAAyB;AACzB,qDAAuE;AAA9D,+HAAA,+BAA+B,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-valid.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/schema-valid.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAKzC,eAAO,MAAM,eAAe,EAAE,QAiD7B,CAAC"}
1
+ {"version":3,"file":"schema-valid.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/schema-valid.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIzC,eAAO,MAAM,eAAe,EAAE,QAiD7B,CAAC"}
@@ -4,10 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.schemaValidRule = void 0;
7
- const ajv_1 = __importDefault(require("ajv"));
8
7
  const dossier_schema_json_1 = __importDefault(require("../../schema/dossier-schema.json"));
9
- const ajv = new ajv_1.default({ allErrors: true, strict: false, validateFormats: false });
10
- const validate = ajv.compile(dossier_schema_json_1.default);
8
+ const ajv_1 = require("../../utils/ajv");
9
+ const validate = (0, ajv_1.compileSchema)(dossier_schema_json_1.default);
11
10
  exports.schemaValidRule = {
12
11
  id: 'schema-valid',
13
12
  description: 'Validate frontmatter against the full JSON Schema',
@@ -1 +1 @@
1
- {"version":3,"file":"schema-valid.js","sourceRoot":"","sources":["../../../src/linter/rules/schema-valid.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AACtB,2FAA6D;AAG7D,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;AAChF,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,6BAAa,CAAC,CAAC;AAE/B,QAAA,eAAe,GAAa;IACvC,EAAE,EAAE,cAAc;IAClB,WAAW,EAAE,mDAAmD;IAChE,eAAe,EAAE,OAAO;IACxB,GAAG,CAAC,OAAO;QACT,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAE1D,4CAA4C;YAC5C,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBACrD,OAAO;oBACL,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,sEAAsE;oBAC/E,KAAK,EAAE,WAAW;iBACnB,CAAC;YACJ,CAAC;YAED,IAAI,OAAe,CAAC;YACpB,IAAI,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO,GAAG,2BAA2B,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACpE,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBAClC,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,oBAAoB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzF,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBACnC,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACrF,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;gBACvC,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,0BAA0B,GAAG,CAAC,MAAM,CAAC,KAAK,cAAc,CAAC;YACxF,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;gBACvC,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,yBAAyB,GAAG,CAAC,MAAM,CAAC,KAAK,cAAc,CAAC;YACvF,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACrC,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,kCAAkC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;YAClD,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,cAAc;gBACtB,QAAQ,EAAE,OAAgB;gBAC1B,OAAO;gBACP,KAAK,EAAE,KAAK,IAAI,SAAS;aAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"schema-valid.js","sourceRoot":"","sources":["../../../src/linter/rules/schema-valid.ts"],"names":[],"mappings":";;;;;;AAAA,2FAA6D;AAC7D,yCAAgD;AAGhD,MAAM,QAAQ,GAAG,IAAA,mBAAa,EAAC,6BAAa,CAAC,CAAC;AAEjC,QAAA,eAAe,GAAa;IACvC,EAAE,EAAE,cAAc;IAClB,WAAW,EAAE,mDAAmD;IAChE,eAAe,EAAE,OAAO;IACxB,GAAG,CAAC,OAAO;QACT,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAE1D,4CAA4C;YAC5C,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBACrD,OAAO;oBACL,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,sEAAsE;oBAC/E,KAAK,EAAE,WAAW;iBACnB,CAAC;YACJ,CAAC;YAED,IAAI,OAAe,CAAC;YACpB,IAAI,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO,GAAG,2BAA2B,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACpE,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBAClC,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,oBAAoB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzF,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBACnC,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACrF,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;gBACvC,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,0BAA0B,GAAG,CAAC,MAAM,CAAC,KAAK,cAAc,CAAC;YACxF,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;gBACvC,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,yBAAyB,GAAG,CAAC,MAAM,CAAC,KAAK,cAAc,CAAC;YACvF,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACrC,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,kCAAkC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;YAClD,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,cAAc;gBACtB,QAAQ,EAAE,OAAgB;gBAC1B,OAAO;gBACP,KAAK,EAAE,KAAK,IAAI,SAAS;aAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -92,6 +92,16 @@ export interface RunLogEntry {
92
92
  * historical dispatch is no longer recorded anywhere.
93
93
  */
94
94
  tier?: string | null;
95
+ /**
96
+ * The host agent session this `ai-dossier run` was invoked from (#769),
97
+ * e.g. Claude Code's `CLAUDE_CODE_SESSION_ID` — the join key `ai-dossier
98
+ * usage` uses to attribute dossier runs to the session (and so the
99
+ * model/tokens) that executed them. Null/absent outside an agent host and
100
+ * on sched dispatch entries.
101
+ */
102
+ session_id?: string | null;
103
+ /** The host agent that invoked this run (#769): `claude-code` | `opencode`; null/absent outside an agent host. */
104
+ agent?: string | null;
95
105
  }
96
106
  /**
97
107
  * `~/.dossier/runs.jsonl` — the single location both writers (`cli`'s
@@ -1 +1 @@
1
- {"version":3,"file":"run-log-entry.d.ts","sourceRoot":"","sources":["../src/run-log-entry.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,CAAC;IACpE,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kGAAkG;IAClG,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;IACxC,qIAAqI;IACrI,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iIAAiI;IACjI,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,8FAA8F;IAC9F,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAqB,GAAG,MAAM,CAE/D"}
1
+ {"version":3,"file":"run-log-entry.d.ts","sourceRoot":"","sources":["../src/run-log-entry.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,CAAC;IACpE,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kGAAkG;IAClG,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;IACxC,qIAAqI;IACrI,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iIAAiI;IACjI,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,8FAA8F;IAC9F,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kHAAkH;IAClH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAqB,GAAG,MAAM,CAE/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-log-entry.js","sourceRoot":"","sources":["../src/run-log-entry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2GA,kCAEC;AA7GD,4CAA8B;AAC9B,gDAAkC;AAkGlC;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAC,OAAe,EAAE,CAAC,OAAO,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"run-log-entry.js","sourceRoot":"","sources":["../src/run-log-entry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqHA,kCAEC;AAvHD,4CAA8B;AAC9B,gDAAkC;AA4GlC;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAC,OAAe,EAAE,CAAC,OAAO,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,115 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://github.com/imboard-ai/ai-dossier/schema/evidence/v1.0.0",
4
+ "title": "Dossier Authoring Evidence Schema",
5
+ "description": "JSON Schema for a dossier's authoring-evidence sidecar record — per-rule rationale plus pointers to the agent session(s) where the decision was made. Never loaded by `ai-dossier run`; keyed by the dossier's body checksum.",
6
+ "type": "object",
7
+ "required": ["evidence_schema_version", "dossier", "version", "checksum", "entries"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "evidence_schema_version": {
11
+ "type": "string",
12
+ "description": "Version of the Authoring Evidence Schema specification being used",
13
+ "const": "1.0.0"
14
+ },
15
+ "dossier": {
16
+ "type": "string",
17
+ "description": "Fully-qualified dossier name (namespace/name)",
18
+ "pattern": "^[a-z0-9][a-z0-9-]*(/[a-z0-9][a-z0-9-]*)+$"
19
+ },
20
+ "version": {
21
+ "type": "string",
22
+ "description": "Semantic version of the dossier this evidence record applies to",
23
+ "pattern": "^\\d+\\.\\d+\\.\\d+(-[0-9A-Za-z.-]+)?$"
24
+ },
25
+ "checksum": {
26
+ "type": "object",
27
+ "description": "Body checksum of the dossier version this evidence record applies to",
28
+ "required": ["algorithm", "hash"],
29
+ "additionalProperties": false,
30
+ "properties": {
31
+ "algorithm": {
32
+ "type": "string",
33
+ "description": "Hash algorithm used",
34
+ "const": "sha256"
35
+ },
36
+ "hash": {
37
+ "type": "string",
38
+ "description": "SHA256 hash of dossier body content (after frontmatter)",
39
+ "pattern": "^[a-f0-9]{64}$"
40
+ }
41
+ }
42
+ },
43
+ "entries": {
44
+ "type": "array",
45
+ "description": "Per-rule/section authoring evidence entries",
46
+ "maxItems": 200,
47
+ "items": {
48
+ "type": "object",
49
+ "required": ["anchor", "rationale", "created_at", "evidence"],
50
+ "additionalProperties": false,
51
+ "properties": {
52
+ "anchor": {
53
+ "type": "string",
54
+ "description": "Free text naming the rule/heading in the dossier body this entry documents",
55
+ "minLength": 1,
56
+ "maxLength": 200
57
+ },
58
+ "rationale": {
59
+ "type": "string",
60
+ "description": "Short rationale for why the rule/section reads the way it does",
61
+ "minLength": 1,
62
+ "maxLength": 500
63
+ },
64
+ "created_at": {
65
+ "type": "string",
66
+ "description": "ISO 8601 timestamp when this entry was recorded",
67
+ "maxLength": 40
68
+ },
69
+ "evidence": {
70
+ "type": "array",
71
+ "description": "Pointers to the agent session(s) where this decision was made",
72
+ "minItems": 0,
73
+ "maxItems": 20,
74
+ "items": {
75
+ "type": "object",
76
+ "required": ["provider", "session"],
77
+ "additionalProperties": false,
78
+ "properties": {
79
+ "provider": {
80
+ "type": "string",
81
+ "description": "Agent provider that produced the session",
82
+ "enum": ["claude-code", "codex", "opencode", "gemini-cli", "other"]
83
+ },
84
+ "session": {
85
+ "type": "string",
86
+ "description": "Provider-native session id (e.g. Claude Code's session UUID)",
87
+ "minLength": 1,
88
+ "maxLength": 200
89
+ },
90
+ "event": {
91
+ "type": "string",
92
+ "description": "Provider-native per-message/tool-call id within the session",
93
+ "minLength": 1,
94
+ "maxLength": 200
95
+ },
96
+ "host": {
97
+ "type": "string",
98
+ "description": "Machine the session ran on (evidence refs are only resolvable there)",
99
+ "minLength": 1,
100
+ "maxLength": 64
101
+ },
102
+ "extra": {
103
+ "type": "object",
104
+ "description": "Optional tool-specific locator IDs (e.g. ctx); never the only locator",
105
+ "maxProperties": 20,
106
+ "additionalProperties": { "type": "string", "maxLength": 500 }
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
@@ -0,0 +1,4 @@
1
+ import { type ValidateFunction } from 'ajv';
2
+ /** Shared Ajv config for compiling dossier-family JSON Schemas (draft-07, permissive). */
3
+ export declare function compileSchema<T = unknown>(schema: object): ValidateFunction<T>;
4
+ //# sourceMappingURL=ajv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ajv.d.ts","sourceRoot":"","sources":["../../src/utils/ajv.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAEjD,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAG9E"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.compileSchema = compileSchema;
7
+ const ajv_1 = __importDefault(require("ajv"));
8
+ /** Shared Ajv config for compiling dossier-family JSON Schemas (draft-07, permissive). */
9
+ function compileSchema(schema) {
10
+ const ajv = new ajv_1.default({ allErrors: true, strict: false, validateFormats: false });
11
+ return ajv.compile(schema);
12
+ }
13
+ //# sourceMappingURL=ajv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ajv.js","sourceRoot":"","sources":["../../src/utils/ajv.ts"],"names":[],"mappings":";;;;;AAGA,sCAGC;AAND,8CAAiD;AAEjD,0FAA0F;AAC1F,SAAgB,aAAa,CAAc,MAAc;IACvD,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IAChF,OAAO,GAAG,CAAC,OAAO,CAAI,MAAM,CAAC,CAAC;AAChC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-dossier/core",
3
- "version": "1.9.0",
3
+ "version": "1.11.0",
4
4
  "description": "Parsing, verification, and signing for dossiers — portable, signed, versioned skills for any LLM tool.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",