@ai-dossier/core 1.0.1 → 1.0.2
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/README.md +72 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/parser.d.ts +20 -4
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +64 -32
- package/dist/parser.js.map +1 -1
- package/dist/signature.d.ts +4 -4
- package/dist/signature.d.ts.map +1 -1
- package/dist/signature.js +9 -8
- package/dist/signature.js.map +1 -1
- package/dist/signers/ed25519.d.ts +2 -2
- package/dist/signers/ed25519.d.ts.map +1 -1
- package/dist/signers/ed25519.js +4 -3
- package/dist/signers/ed25519.js.map +1 -1
- package/dist/signers/index.d.ts +9 -2
- package/dist/signers/index.d.ts.map +1 -1
- package/dist/signers/index.js.map +1 -1
- package/dist/signers/kms.d.ts +2 -2
- package/dist/signers/kms.d.ts.map +1 -1
- package/dist/signers/kms.js +4 -4
- package/dist/signers/kms.js.map +1 -1
- package/dist/types.d.ts +19 -15
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -4
package/README.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# @ai-dossier/core
|
|
2
|
+
|
|
3
|
+
Core parsing, verification, and linting logic for the [Dossier](https://github.com/imboard-ai/ai-dossier) automation standard.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @ai-dossier/core
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## API
|
|
12
|
+
|
|
13
|
+
### Parsing
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { parseDossierContent, parseDossierFile, validateFrontmatter } from '@ai-dossier/core';
|
|
17
|
+
|
|
18
|
+
// Parse dossier content string
|
|
19
|
+
const { frontmatter, body } = parseDossierContent(content);
|
|
20
|
+
|
|
21
|
+
// Parse from file path
|
|
22
|
+
const parsed = parseDossierFile('./my-dossier.ds.md');
|
|
23
|
+
|
|
24
|
+
// Validate required fields
|
|
25
|
+
const errors = validateFrontmatter(parsed.frontmatter);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Checksum Verification
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { calculateChecksum, verifyIntegrity } from '@ai-dossier/core';
|
|
32
|
+
|
|
33
|
+
const hash = calculateChecksum(body);
|
|
34
|
+
const isValid = verifyIntegrity(body, expectedHash);
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Signature Verification
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { verifySignature, verifyWithEd25519, loadTrustedKeys } from '@ai-dossier/core';
|
|
41
|
+
|
|
42
|
+
// Verify using trusted keys
|
|
43
|
+
const result = await verifySignature(frontmatter, body);
|
|
44
|
+
|
|
45
|
+
// Verify with a specific Ed25519 public key
|
|
46
|
+
const valid = verifyWithEd25519(data, signature, publicKeyPem);
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Linting
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
import { lintDossier, lintDossierFile } from '@ai-dossier/core';
|
|
53
|
+
|
|
54
|
+
const results = lintDossier(content);
|
|
55
|
+
// or
|
|
56
|
+
const results = lintDossierFile('./my-dossier.ds.md');
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Formatting
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { formatDossierContent } from '@ai-dossier/core';
|
|
63
|
+
|
|
64
|
+
const { content, changed } = formatDossierContent(rawContent, {
|
|
65
|
+
sortKeys: true,
|
|
66
|
+
updateChecksum: true,
|
|
67
|
+
});
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## License
|
|
71
|
+
|
|
72
|
+
[AGPL-3.0](https://github.com/imboard-ai/ai-dossier/blob/main/LICENSE)
|
package/dist/index.d.ts
CHANGED
|
@@ -12,9 +12,9 @@ export type { FormatOptions, FormatResult } from './formatter';
|
|
|
12
12
|
export { formatDossierContent, formatDossierFile } from './formatter';
|
|
13
13
|
export type { LintConfig, LintDiagnostic, LintResult, LintRule, LintRuleContext, LintSeverity, RuleSeverityOverride, } from './linter';
|
|
14
14
|
export { defaultRules, LintRuleRegistry, lintDossier, lintDossierFile, loadLintConfig, } from './linter';
|
|
15
|
-
export { parseDossierContent, parseDossierFile, validateFrontmatter } from './parser';
|
|
15
|
+
export { parseDossierContent, parseDossierFile, RECOMMENDED_FIELDS, REQUIRED_FIELDS, VALID_RISK_LEVELS, VALID_STATUSES, validateFrontmatter, } from './parser';
|
|
16
16
|
export { loadTrustedKeys, verifySignature, verifyWithEd25519, verifyWithKms } from './signature';
|
|
17
|
-
export { Ed25519Signer, Ed25519Verifier, getVerifierRegistry, KmsSigner, KmsVerifier, SignatureResult, Signer, Verifier, VerifierRegistry, } from './signers';
|
|
17
|
+
export { Ed25519Signer, Ed25519Verifier, getVerifierRegistry, KmsSigner, KmsVerifier, SignatureResult, Signer, Verifier, VerifierRegistry, VerifyResult, } from './signers';
|
|
18
18
|
export * from './types';
|
|
19
19
|
export { sha256Hash, sha256Hex } from './utils/crypto';
|
|
20
20
|
export { getErrorMessage, getErrorStack } from './utils/errors';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,cAAc,GACf,MAAM,UAAU,CAAC;AAElB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,cAAc,GACf,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,EACL,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,eAAe,EACf,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,YAAY,GACb,MAAM,WAAW,CAAC;AAEnB,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
23
23
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.createDefaultVerificationResult = exports.readFileIfExists = exports.getErrorStack = exports.getErrorMessage = exports.sha256Hex = exports.sha256Hash = exports.VerifierRegistry = exports.KmsVerifier = exports.KmsSigner = exports.getVerifierRegistry = exports.Ed25519Verifier = exports.Ed25519Signer = exports.verifyWithKms = exports.verifyWithEd25519 = exports.verifySignature = exports.loadTrustedKeys = exports.validateFrontmatter = exports.parseDossierFile = exports.parseDossierContent = exports.loadLintConfig = exports.lintDossierFile = exports.lintDossier = exports.LintRuleRegistry = exports.defaultRules = exports.formatDossierFile = exports.formatDossierContent = exports.verifyIntegrity = exports.calculateChecksum = void 0;
|
|
26
|
+
exports.createDefaultVerificationResult = exports.readFileIfExists = exports.getErrorStack = exports.getErrorMessage = exports.sha256Hex = exports.sha256Hash = exports.VerifierRegistry = exports.KmsVerifier = exports.KmsSigner = exports.getVerifierRegistry = exports.Ed25519Verifier = exports.Ed25519Signer = exports.verifyWithKms = exports.verifyWithEd25519 = exports.verifySignature = exports.loadTrustedKeys = 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.verifyIntegrity = exports.calculateChecksum = void 0;
|
|
27
27
|
// Checksum exports
|
|
28
28
|
var checksum_1 = require("./checksum");
|
|
29
29
|
Object.defineProperty(exports, "calculateChecksum", { enumerable: true, get: function () { return checksum_1.calculateChecksum; } });
|
|
@@ -43,6 +43,10 @@ Object.defineProperty(exports, "loadLintConfig", { enumerable: true, get: functi
|
|
|
43
43
|
var parser_1 = require("./parser");
|
|
44
44
|
Object.defineProperty(exports, "parseDossierContent", { enumerable: true, get: function () { return parser_1.parseDossierContent; } });
|
|
45
45
|
Object.defineProperty(exports, "parseDossierFile", { enumerable: true, get: function () { return parser_1.parseDossierFile; } });
|
|
46
|
+
Object.defineProperty(exports, "RECOMMENDED_FIELDS", { enumerable: true, get: function () { return parser_1.RECOMMENDED_FIELDS; } });
|
|
47
|
+
Object.defineProperty(exports, "REQUIRED_FIELDS", { enumerable: true, get: function () { return parser_1.REQUIRED_FIELDS; } });
|
|
48
|
+
Object.defineProperty(exports, "VALID_RISK_LEVELS", { enumerable: true, get: function () { return parser_1.VALID_RISK_LEVELS; } });
|
|
49
|
+
Object.defineProperty(exports, "VALID_STATUSES", { enumerable: true, get: function () { return parser_1.VALID_STATUSES; } });
|
|
46
50
|
Object.defineProperty(exports, "validateFrontmatter", { enumerable: true, get: function () { return parser_1.validateFrontmatter; } });
|
|
47
51
|
// Signature exports
|
|
48
52
|
var signature_1 = require("./signature");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;AAEH,mBAAmB;AACnB,uCAAgE;AAAvD,6GAAA,iBAAiB,OAAA;AAAE,2GAAA,eAAe,OAAA;AAE3C,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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;AAEH,mBAAmB;AACnB,uCAAgE;AAAvD,6GAAA,iBAAiB,OAAA;AAAE,2GAAA,eAAe,OAAA;AAE3C,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;AAErB,oBAAoB;AACpB,yCAAiG;AAAxF,4GAAA,eAAe,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAAE,0GAAA,aAAa,OAAA;AAC3E,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;AAGlB,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,qDAAuE;AAA9D,+HAAA,+BAA+B,OAAA"}
|
package/dist/parser.d.ts
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Dossier parser - extracts frontmatter and body from dossier files
|
|
2
|
+
* Dossier parser - extracts frontmatter and body from dossier files.
|
|
3
|
+
*
|
|
4
|
+
* Supports two frontmatter formats:
|
|
5
|
+
* 1. ---dossier\n{JSON or YAML}\n--- (dossier-specific delimiter)
|
|
6
|
+
* 2. ---\n{YAML}\n--- (standard markdown frontmatter)
|
|
3
7
|
*/
|
|
4
8
|
import type { DossierFrontmatter, ParsedDossier } from './types';
|
|
9
|
+
/** Required fields for a valid dossier frontmatter. */
|
|
10
|
+
export declare const REQUIRED_FIELDS: readonly ["dossier_schema_version", "title", "version"];
|
|
11
|
+
/** Recommended (but optional) fields. */
|
|
12
|
+
export declare const RECOMMENDED_FIELDS: readonly ["objective", "risk_level", "status"];
|
|
13
|
+
/** Valid values for the status field (Title Case, matching DossierStatus type and schema). */
|
|
14
|
+
export declare const VALID_STATUSES: readonly ["Draft", "Stable", "Deprecated", "Experimental"];
|
|
15
|
+
/** Valid values for the risk_level field. */
|
|
16
|
+
export declare const VALID_RISK_LEVELS: readonly ["low", "medium", "high", "critical"];
|
|
5
17
|
/**
|
|
6
|
-
* Parse dossier content into frontmatter and body
|
|
7
|
-
*
|
|
18
|
+
* Parse dossier content into frontmatter and body.
|
|
19
|
+
*
|
|
20
|
+
* Accepts both `---dossier` (JSON/YAML) and standard `---` (YAML) frontmatter.
|
|
8
21
|
*/
|
|
9
22
|
export declare function parseDossierContent(content: string): ParsedDossier;
|
|
10
23
|
/**
|
|
@@ -12,7 +25,10 @@ export declare function parseDossierContent(content: string): ParsedDossier;
|
|
|
12
25
|
*/
|
|
13
26
|
export declare function parseDossierFile(filePath: string): ParsedDossier;
|
|
14
27
|
/**
|
|
15
|
-
* Validate required frontmatter fields
|
|
28
|
+
* Validate required frontmatter fields.
|
|
29
|
+
*
|
|
30
|
+
* Checks for required fields (dossier_schema_version, title, version),
|
|
31
|
+
* and validates enum values for status and risk_level.
|
|
16
32
|
*/
|
|
17
33
|
export declare function validateFrontmatter(frontmatter: DossierFrontmatter): string[];
|
|
18
34
|
//# sourceMappingURL=parser.d.ts.map
|
package/dist/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIjE,uDAAuD;AACvD,eAAO,MAAM,eAAe,yDAA0D,CAAC;AAEvF,yCAAyC;AACzC,eAAO,MAAM,kBAAkB,gDAAiD,CAAC;AAEjF,8FAA8F;AAC9F,eAAO,MAAM,cAAc,4DAA6D,CAAC;AAEzF,6CAA6C;AAC7C,eAAO,MAAM,iBAAiB,gDAAiD,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CA2ClE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAGhE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAgC7E"}
|
package/dist/parser.js
CHANGED
|
@@ -1,35 +1,71 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Dossier parser - extracts frontmatter and body from dossier files
|
|
3
|
+
* Dossier parser - extracts frontmatter and body from dossier files.
|
|
4
|
+
*
|
|
5
|
+
* Supports two frontmatter formats:
|
|
6
|
+
* 1. ---dossier\n{JSON or YAML}\n--- (dossier-specific delimiter)
|
|
7
|
+
* 2. ---\n{YAML}\n--- (standard markdown frontmatter)
|
|
4
8
|
*/
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
5
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.VALID_RISK_LEVELS = exports.VALID_STATUSES = exports.RECOMMENDED_FIELDS = exports.REQUIRED_FIELDS = void 0;
|
|
6
14
|
exports.parseDossierContent = parseDossierContent;
|
|
7
15
|
exports.parseDossierFile = parseDossierFile;
|
|
8
16
|
exports.validateFrontmatter = validateFrontmatter;
|
|
17
|
+
const gray_matter_1 = __importDefault(require("gray-matter"));
|
|
9
18
|
const errors_1 = require("./utils/errors");
|
|
10
19
|
const fs_1 = require("./utils/fs");
|
|
20
|
+
/** Required fields for a valid dossier frontmatter. */
|
|
21
|
+
exports.REQUIRED_FIELDS = ['dossier_schema_version', 'title', 'version'];
|
|
22
|
+
/** Recommended (but optional) fields. */
|
|
23
|
+
exports.RECOMMENDED_FIELDS = ['objective', 'risk_level', 'status'];
|
|
24
|
+
/** Valid values for the status field (Title Case, matching DossierStatus type and schema). */
|
|
25
|
+
exports.VALID_STATUSES = ['Draft', 'Stable', 'Deprecated', 'Experimental'];
|
|
26
|
+
/** Valid values for the risk_level field. */
|
|
27
|
+
exports.VALID_RISK_LEVELS = ['low', 'medium', 'high', 'critical'];
|
|
11
28
|
/**
|
|
12
|
-
* Parse dossier content into frontmatter and body
|
|
13
|
-
*
|
|
29
|
+
* Parse dossier content into frontmatter and body.
|
|
30
|
+
*
|
|
31
|
+
* Accepts both `---dossier` (JSON/YAML) and standard `---` (YAML) frontmatter.
|
|
14
32
|
*/
|
|
15
33
|
function parseDossierContent(content) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (!match) {
|
|
19
|
-
throw new Error('Invalid dossier format. Expected:\n---dossier\n{...}\n---\n[body]');
|
|
34
|
+
if (!content || typeof content !== 'string') {
|
|
35
|
+
throw new Error('Invalid dossier format. Content must be a non-empty string.');
|
|
20
36
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
37
|
+
// Normalize dossier-specific delimiters to standard --- for gray-matter
|
|
38
|
+
let normalized = content;
|
|
39
|
+
if (content.startsWith('---dossier')) {
|
|
40
|
+
// Strip "---dossier" and any trailing text on the same line, keep the newline
|
|
41
|
+
const firstNewline = content.indexOf('\n');
|
|
42
|
+
normalized = `---\n${firstNewline >= 0 ? content.slice(firstNewline + 1) : ''}`;
|
|
43
|
+
}
|
|
44
|
+
else if (content.startsWith('---json')) {
|
|
45
|
+
const firstNewline = content.indexOf('\n');
|
|
46
|
+
normalized = `---\n${firstNewline >= 0 ? content.slice(firstNewline + 1) : ''}`;
|
|
47
|
+
}
|
|
48
|
+
else if (!content.startsWith('---')) {
|
|
49
|
+
throw new Error('Invalid dossier format. Expected:\n---dossier\n{...}\n---\n[body]\nor standard YAML frontmatter (---)');
|
|
50
|
+
}
|
|
51
|
+
let parsed;
|
|
24
52
|
try {
|
|
25
|
-
|
|
53
|
+
parsed = (0, gray_matter_1.default)(normalized);
|
|
26
54
|
}
|
|
27
55
|
catch (err) {
|
|
28
|
-
throw new Error(`Failed to parse frontmatter
|
|
56
|
+
throw new Error(`Failed to parse frontmatter: ${(0, errors_1.getErrorMessage)(err)}`);
|
|
57
|
+
}
|
|
58
|
+
// Verify we actually got frontmatter data
|
|
59
|
+
if (!parsed.data || Object.keys(parsed.data).length === 0) {
|
|
60
|
+
// Check if there was frontmatter content at all
|
|
61
|
+
const hasDelimiters = /^---\s*\r?\n[\s\S]*?\r?\n---/.test(normalized);
|
|
62
|
+
if (!hasDelimiters) {
|
|
63
|
+
throw new Error('Invalid dossier format. Expected:\n---dossier\n{...}\n---\n[body]\nor standard YAML frontmatter (---)');
|
|
64
|
+
}
|
|
29
65
|
}
|
|
30
66
|
return {
|
|
31
|
-
frontmatter,
|
|
32
|
-
body,
|
|
67
|
+
frontmatter: parsed.data,
|
|
68
|
+
body: parsed.content,
|
|
33
69
|
raw: content,
|
|
34
70
|
};
|
|
35
71
|
}
|
|
@@ -41,33 +77,29 @@ function parseDossierFile(filePath) {
|
|
|
41
77
|
return parseDossierContent(content);
|
|
42
78
|
}
|
|
43
79
|
/**
|
|
44
|
-
* Validate required frontmatter fields
|
|
80
|
+
* Validate required frontmatter fields.
|
|
81
|
+
*
|
|
82
|
+
* Checks for required fields (dossier_schema_version, title, version),
|
|
83
|
+
* and validates enum values for status and risk_level.
|
|
45
84
|
*/
|
|
46
85
|
function validateFrontmatter(frontmatter) {
|
|
47
86
|
const errors = [];
|
|
48
|
-
const
|
|
49
|
-
'version',
|
|
50
|
-
'protocol_version',
|
|
51
|
-
'title',
|
|
52
|
-
'objective',
|
|
53
|
-
'risk_level',
|
|
54
|
-
'risk_factors',
|
|
55
|
-
'destructive_operations',
|
|
56
|
-
];
|
|
57
|
-
for (const field of required) {
|
|
87
|
+
for (const field of exports.REQUIRED_FIELDS) {
|
|
58
88
|
if (!(field in frontmatter)) {
|
|
59
89
|
errors.push(`Missing required field: ${field}`);
|
|
60
90
|
}
|
|
61
91
|
}
|
|
62
92
|
// Validate risk_level enum
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
errors.push(`Invalid risk_level: ${frontmatter.risk_level}. Must be one of: ${
|
|
93
|
+
if (frontmatter.risk_level &&
|
|
94
|
+
!exports.VALID_RISK_LEVELS.includes(frontmatter.risk_level.toLowerCase())) {
|
|
95
|
+
errors.push(`Invalid risk_level: ${frontmatter.risk_level}. Must be one of: ${exports.VALID_RISK_LEVELS.join(', ')}`);
|
|
66
96
|
}
|
|
67
|
-
// Validate status enum
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
97
|
+
// Validate status enum (case-insensitive)
|
|
98
|
+
if (frontmatter.status) {
|
|
99
|
+
const statusLower = String(frontmatter.status).toLowerCase();
|
|
100
|
+
if (!exports.VALID_STATUSES.some((s) => s.toLowerCase() === statusLower)) {
|
|
101
|
+
errors.push(`Invalid status: ${frontmatter.status}. Must be one of: ${exports.VALID_STATUSES.join(', ')}`);
|
|
102
|
+
}
|
|
71
103
|
}
|
|
72
104
|
return errors;
|
|
73
105
|
}
|
package/dist/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/signature.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This module provides signature verification for dossiers,
|
|
5
5
|
* supporting multiple signature schemes (Ed25519 and AWS KMS).
|
|
6
6
|
*/
|
|
7
|
-
import type { SignatureResult } from './signers';
|
|
7
|
+
import type { SignatureResult, VerifyResult } from './signers';
|
|
8
8
|
/**
|
|
9
9
|
* Load trusted keys from file
|
|
10
10
|
* Default location: ~/.dossier/trusted-keys.txt
|
|
@@ -17,11 +17,11 @@ export declare function loadTrustedKeys(filePath?: string): Map<string, string>;
|
|
|
17
17
|
* @param signature - Base64-encoded signature
|
|
18
18
|
* @param publicKey - PEM-format Ed25519 public key
|
|
19
19
|
*/
|
|
20
|
-
export declare function verifyWithEd25519(content: string, signature: string, publicKey: string):
|
|
20
|
+
export declare function verifyWithEd25519(content: string, signature: string, publicKey: string): VerifyResult;
|
|
21
21
|
/**
|
|
22
22
|
* Verify signature using AWS KMS (ECDSA-SHA-256)
|
|
23
23
|
*/
|
|
24
|
-
export declare function verifyWithKms(content: string, signature: string, keyId: string, region?: string): Promise<
|
|
24
|
+
export declare function verifyWithKms(content: string, signature: string, keyId: string, region?: string): Promise<VerifyResult>;
|
|
25
25
|
/**
|
|
26
26
|
* Verify signature using the registry pattern
|
|
27
27
|
* This is a convenience function that encapsulates registry lookup
|
|
@@ -29,5 +29,5 @@ export declare function verifyWithKms(content: string, signature: string, keyId:
|
|
|
29
29
|
* @param signature - Signature result object containing algorithm and signature data
|
|
30
30
|
* @returns Promise<boolean> - true if signature is valid, false otherwise
|
|
31
31
|
*/
|
|
32
|
-
export declare function verifySignature(content: string, signature: SignatureResult): Promise<
|
|
32
|
+
export declare function verifySignature(content: string, signature: SignatureResult): Promise<VerifyResult>;
|
|
33
33
|
//# sourceMappingURL=signature.d.ts.map
|
package/dist/signature.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAK/D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA+BtE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,YAAY,CAkBd;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,SAAc,GACnB,OAAO,CAAC,YAAY,CAAC,CAsBvB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,YAAY,CAAC,CAIvB"}
|
package/dist/signature.js
CHANGED
|
@@ -45,8 +45,8 @@ function loadTrustedKeys(filePath) {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
catch (
|
|
49
|
-
|
|
48
|
+
catch (err) {
|
|
49
|
+
console.error(`Warning: failed to parse trusted keys: ${err.message}`);
|
|
50
50
|
}
|
|
51
51
|
return keys;
|
|
52
52
|
}
|
|
@@ -67,10 +67,11 @@ function verifyWithEd25519(content, signature, publicKey) {
|
|
|
67
67
|
type: 'spki',
|
|
68
68
|
});
|
|
69
69
|
// Verify Ed25519 signature (algorithm is null for Ed25519)
|
|
70
|
-
|
|
70
|
+
const valid = (0, node_crypto_1.verify)(null, contentBuffer, publicKeyObject, signatureBuffer);
|
|
71
|
+
return { valid };
|
|
71
72
|
}
|
|
72
|
-
catch (
|
|
73
|
-
return false;
|
|
73
|
+
catch (err) {
|
|
74
|
+
return { valid: false, error: err.message };
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
/**
|
|
@@ -90,10 +91,10 @@ async function verifyWithKms(content, signature, keyId, region = 'us-east-1') {
|
|
|
90
91
|
});
|
|
91
92
|
try {
|
|
92
93
|
const response = await client.send(command);
|
|
93
|
-
return response.SignatureValid === true;
|
|
94
|
+
return { valid: response.SignatureValid === true };
|
|
94
95
|
}
|
|
95
|
-
catch (
|
|
96
|
-
return false;
|
|
96
|
+
catch (err) {
|
|
97
|
+
return { valid: false, error: err.message };
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
/**
|
package/dist/signature.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAgBH,0CA+BC;AAQD,
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Ed25519 Signer and Verifier using Node.js crypto
|
|
3
3
|
*/
|
|
4
|
-
import type { SignatureResult, Signer, Verifier } from './index';
|
|
4
|
+
import type { SignatureResult, Signer, Verifier, VerifyResult } from './index';
|
|
5
5
|
export declare class Ed25519Signer implements Signer {
|
|
6
6
|
readonly algorithm = "ed25519";
|
|
7
7
|
private privateKey;
|
|
@@ -12,6 +12,6 @@ export declare class Ed25519Signer implements Signer {
|
|
|
12
12
|
}
|
|
13
13
|
export declare class Ed25519Verifier implements Verifier {
|
|
14
14
|
supports(algorithm: string): boolean;
|
|
15
|
-
verify(content: string, signature: SignatureResult): Promise<
|
|
15
|
+
verify(content: string, signature: SignatureResult): Promise<VerifyResult>;
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=ed25519.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ed25519.d.ts","sourceRoot":"","sources":["../../src/signers/ed25519.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ed25519.d.ts","sourceRoot":"","sources":["../../src/signers/ed25519.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/E,qBAAa,aAAc,YAAW,MAAM;IAC1C,QAAQ,CAAC,SAAS,aAAa;IAC/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,YAAY,CAAS;gBAEjB,cAAc,EAAE,MAAM;IAiB5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAY/C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;CAGtC;AAED,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI9B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;CAmBjF"}
|
package/dist/signers/ed25519.js
CHANGED
|
@@ -55,10 +55,11 @@ class Ed25519Verifier {
|
|
|
55
55
|
type: 'spki',
|
|
56
56
|
});
|
|
57
57
|
// Verify Ed25519 signature
|
|
58
|
-
|
|
58
|
+
const valid = (0, node_crypto_1.verify)(null, contentBuffer, publicKeyObject, signatureBuffer);
|
|
59
|
+
return { valid };
|
|
59
60
|
}
|
|
60
|
-
catch (
|
|
61
|
-
return false;
|
|
61
|
+
catch (err) {
|
|
62
|
+
return { valid: false, error: err.message };
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ed25519.js","sourceRoot":"","sources":["../../src/signers/ed25519.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,6CAA8E;AAC9E,qCAAuC;AAGvC,MAAa,aAAa;IACf,SAAS,GAAG,SAAS,CAAC;IACvB,UAAU,CAAY;IACtB,YAAY,CAAS;IAE7B,YAAY,cAAsB;QAChC,iCAAiC;QACjC,MAAM,aAAa,GAAG,IAAA,sBAAY,EAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAA,8BAAgB,EAAC;YACjC,GAAG,EAAE,aAAa;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAEH,qBAAqB;QACrB,MAAM,SAAS,GAAG,IAAA,6BAAe,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;YACnC,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,KAAK;SACd,CAAW,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,eAAe,GAAG,IAAA,kBAAI,EAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEnE,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC7C,UAAU,EAAE,IAAI,CAAC,YAAY;YAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF;AArCD,sCAqCC;AAED,MAAa,eAAe;IAC1B,QAAQ,CAAC,SAAiB;QACxB,OAAO,SAAS,KAAK,SAAS,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,SAA0B;QACtD,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACnE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAEnD,oCAAoC;YACpC,MAAM,eAAe,GAAG,IAAA,6BAAe,EAAC;gBACtC,GAAG,EAAE,SAAS,CAAC,UAAU;gBACzB,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;YAEH,2BAA2B;YAC3B,
|
|
1
|
+
{"version":3,"file":"ed25519.js","sourceRoot":"","sources":["../../src/signers/ed25519.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,6CAA8E;AAC9E,qCAAuC;AAGvC,MAAa,aAAa;IACf,SAAS,GAAG,SAAS,CAAC;IACvB,UAAU,CAAY;IACtB,YAAY,CAAS;IAE7B,YAAY,cAAsB;QAChC,iCAAiC;QACjC,MAAM,aAAa,GAAG,IAAA,sBAAY,EAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAA,8BAAgB,EAAC;YACjC,GAAG,EAAE,aAAa;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAEH,qBAAqB;QACrB,MAAM,SAAS,GAAG,IAAA,6BAAe,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;YACnC,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,KAAK;SACd,CAAW,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,eAAe,GAAG,IAAA,kBAAI,EAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEnE,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC7C,UAAU,EAAE,IAAI,CAAC,YAAY;YAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF;AArCD,sCAqCC;AAED,MAAa,eAAe;IAC1B,QAAQ,CAAC,SAAiB;QACxB,OAAO,SAAS,KAAK,SAAS,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,SAA0B;QACtD,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACnE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAEnD,oCAAoC;YACpC,MAAM,eAAe,GAAG,IAAA,6BAAe,EAAC;gBACtC,GAAG,EAAE,SAAS,CAAC,UAAU;gBACzB,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;YAEH,2BAA2B;YAC3B,MAAM,KAAK,GAAG,IAAA,oBAAM,EAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;YAC5E,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACzD,CAAC;IACH,CAAC;CACF;AAxBD,0CAwBC"}
|
package/dist/signers/index.d.ts
CHANGED
|
@@ -23,11 +23,18 @@ export interface Signer {
|
|
|
23
23
|
*/
|
|
24
24
|
readonly algorithm: string;
|
|
25
25
|
}
|
|
26
|
+
export interface VerifyResult {
|
|
27
|
+
valid: boolean;
|
|
28
|
+
error?: string;
|
|
29
|
+
}
|
|
26
30
|
export interface Verifier {
|
|
27
31
|
/**
|
|
28
|
-
* Verify a signature
|
|
32
|
+
* Verify a signature.
|
|
33
|
+
* Returns { valid: true } for valid signatures,
|
|
34
|
+
* { valid: false } for cryptographically invalid signatures,
|
|
35
|
+
* { valid: false, error: '...' } when verification could not complete (e.g., network error).
|
|
29
36
|
*/
|
|
30
|
-
verify(content: string, signature: SignatureResult): Promise<
|
|
37
|
+
verify(content: string, signature: SignatureResult): Promise<VerifyResult>;
|
|
31
38
|
/**
|
|
32
39
|
* Check if this verifier supports the given algorithm
|
|
33
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhD;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhD;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE3E;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC;AAGD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAG/C,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signers/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signers/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAgDH,yBAAyB;AACzB,qCAA2D;AAAlD,wGAAA,aAAa,OAAA;AAAE,0GAAA,eAAe,OAAA;AACvC,6BAA+C;AAAtC,gGAAA,SAAS,OAAA;AAAE,kGAAA,WAAW,OAAA;AAE/B,kBAAkB;AAClB,uCAGoB;AAFlB,+GAAA,mBAAmB,OAAA;AACnB,4GAAA,gBAAgB,OAAA"}
|
package/dist/signers/kms.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AWS KMS Signer and Verifier
|
|
3
3
|
*/
|
|
4
|
-
import type { SignatureResult, Signer, Verifier } from './index';
|
|
4
|
+
import type { SignatureResult, Signer, Verifier, VerifyResult } from './index';
|
|
5
5
|
export declare class KmsSigner implements Signer {
|
|
6
6
|
private keyId;
|
|
7
7
|
readonly algorithm = "ECDSA-SHA-256";
|
|
@@ -13,7 +13,7 @@ export declare class KmsSigner implements Signer {
|
|
|
13
13
|
export declare class KmsVerifier implements Verifier {
|
|
14
14
|
private clients;
|
|
15
15
|
supports(algorithm: string): boolean;
|
|
16
|
-
verify(content: string, signature: SignatureResult): Promise<
|
|
16
|
+
verify(content: string, signature: SignatureResult): Promise<VerifyResult>;
|
|
17
17
|
private getClient;
|
|
18
18
|
private extractRegionFromArn;
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kms.d.ts","sourceRoot":"","sources":["../../src/signers/kms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"kms.d.ts","sourceRoot":"","sources":["../../src/signers/kms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/E,qBAAa,SAAU,YAAW,MAAM;IAKpC,OAAO,CAAC,KAAK;IAJf,QAAQ,CAAC,SAAS,mBAAmB;IACrC,OAAO,CAAC,MAAM,CAAY;gBAGhB,KAAK,EAAE,MAAM,EACrB,MAAM,GAAE,MAAoB;IAKxB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAyC/C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;CAYtC;AAED,qBAAa,WAAY,YAAW,QAAQ;IAC1C,OAAO,CAAC,OAAO,CAAqC;IAEpD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI9B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IA6BhF,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,oBAAoB;CAK7B"}
|
package/dist/signers/kms.js
CHANGED
|
@@ -66,7 +66,7 @@ class KmsVerifier {
|
|
|
66
66
|
}
|
|
67
67
|
async verify(content, signature) {
|
|
68
68
|
if (!signature.key_id) {
|
|
69
|
-
return false;
|
|
69
|
+
return { valid: false };
|
|
70
70
|
}
|
|
71
71
|
try {
|
|
72
72
|
// Extract region from key ARN if available, otherwise use default
|
|
@@ -83,10 +83,10 @@ class KmsVerifier {
|
|
|
83
83
|
SigningAlgorithm: client_kms_1.SigningAlgorithmSpec.ECDSA_SHA_256,
|
|
84
84
|
});
|
|
85
85
|
const response = await client.send(command);
|
|
86
|
-
return response.SignatureValid === true;
|
|
86
|
+
return { valid: response.SignatureValid === true };
|
|
87
87
|
}
|
|
88
|
-
catch (
|
|
89
|
-
return false;
|
|
88
|
+
catch (err) {
|
|
89
|
+
return { valid: false, error: err.message };
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
getClient(region) {
|
package/dist/signers/kms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kms.js","sourceRoot":"","sources":["../../src/signers/kms.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,oDAM6B;AAC7B,4CAA6C;AAG7C,MAAa,SAAS;IAKV;IAJD,SAAS,GAAG,eAAe,CAAC;IAC7B,MAAM,CAAY;IAE1B,YACU,KAAa,EACrB,SAAiB,WAAW;QADpB,UAAK,GAAL,KAAK,CAAQ;QAGrB,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,qCAAqC;QACrC,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;QAEjC,2BAA2B;QAC3B,MAAM,WAAW,GAAG,IAAI,wBAAW,CAAC;YAClC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,QAAQ;YACrB,gBAAgB,EAAE,iCAAoB,CAAC,aAAa;SACrD,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEzE,0BAA0B;QAC1B,MAAM,aAAa,GAAG,IAAI,gCAAmB,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;QAElD,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS;YACT,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,OAAO,GAAG,IAAI,gCAAmB,CAAC;YACtC,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;CACF;AAhED,8BAgEC;AAED,MAAa,WAAW;IACd,OAAO,GAA2B,IAAI,GAAG,EAAE,CAAC;IAEpD,QAAQ,CAAC,SAAiB;QACxB,OAAO,SAAS,KAAK,eAAe,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,SAA0B;QACtD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"kms.js","sourceRoot":"","sources":["../../src/signers/kms.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,30 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TypeScript type definitions for Dossier format
|
|
3
3
|
*/
|
|
4
|
+
export type DossierStatus = 'Draft' | 'Stable' | 'Deprecated' | 'Experimental';
|
|
4
5
|
export interface DossierFrontmatter {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
created: string;
|
|
8
|
-
updated: string;
|
|
6
|
+
dossier_schema_version?: string;
|
|
7
|
+
name?: string;
|
|
9
8
|
title: string;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
version: string;
|
|
10
|
+
protocol_version?: string;
|
|
11
|
+
created?: string;
|
|
12
|
+
updated?: string;
|
|
13
|
+
last_updated?: string;
|
|
14
|
+
objective?: string;
|
|
15
|
+
status?: DossierStatus;
|
|
16
|
+
risk_level?: 'low' | 'medium' | 'high' | 'critical';
|
|
17
|
+
risk_factors?: string[];
|
|
18
|
+
destructive_operations?: string[];
|
|
19
|
+
requires_approval?: boolean;
|
|
16
20
|
checksum?: {
|
|
17
21
|
algorithm: string;
|
|
18
22
|
hash: string;
|
|
19
|
-
calculated_at
|
|
23
|
+
calculated_at?: string;
|
|
20
24
|
};
|
|
21
25
|
signature?: {
|
|
22
26
|
algorithm: string;
|
|
23
27
|
signature: string;
|
|
24
|
-
public_key
|
|
25
|
-
key_id
|
|
26
|
-
signed_by
|
|
27
|
-
signed_at
|
|
28
|
+
public_key?: string;
|
|
29
|
+
key_id?: string;
|
|
30
|
+
signed_by?: string;
|
|
31
|
+
signed_at?: string;
|
|
28
32
|
};
|
|
29
33
|
[key: string]: unknown;
|
|
30
34
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-dossier/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Core verification and parsing logic for dossier automation standard",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
8
|
-
"dist/"
|
|
8
|
+
"dist/",
|
|
9
|
+
"README.md"
|
|
9
10
|
],
|
|
10
11
|
"scripts": {
|
|
11
12
|
"build": "tsc",
|
|
@@ -24,7 +25,7 @@
|
|
|
24
25
|
"security"
|
|
25
26
|
],
|
|
26
27
|
"author": "Yuval Dimnik <yuval.dimnik@gmail.com>",
|
|
27
|
-
"license": "
|
|
28
|
+
"license": "AGPL-3.0-only",
|
|
28
29
|
"repository": {
|
|
29
30
|
"type": "git",
|
|
30
31
|
"url": "https://github.com/imboard-ai/ai-dossier.git",
|
|
@@ -34,13 +35,17 @@
|
|
|
34
35
|
"bugs": {
|
|
35
36
|
"url": "https://github.com/imboard-ai/ai-dossier/issues"
|
|
36
37
|
},
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=18.0.0"
|
|
40
|
+
},
|
|
37
41
|
"publishConfig": {
|
|
38
42
|
"access": "public",
|
|
39
43
|
"registry": "https://registry.npmjs.org"
|
|
40
44
|
},
|
|
41
45
|
"dependencies": {
|
|
42
46
|
"@aws-sdk/client-kms": "^3.927.0",
|
|
43
|
-
"ajv": "^8.18.0"
|
|
47
|
+
"ajv": "^8.18.0",
|
|
48
|
+
"gray-matter": "^4.0.3"
|
|
44
49
|
},
|
|
45
50
|
"devDependencies": {
|
|
46
51
|
"@types/node": "^24.10.0",
|