@ai-dossier/core 1.16.0-next.637.1 → 1.17.0-next.638.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/formatter/formatter.d.ts.map +1 -1
- package/dist/formatter/formatter.js +34 -18
- package/dist/formatter/formatter.js.map +1 -1
- package/dist/formatter/index.js +1 -1
- package/dist/formatter/index.js.map +1 -1
- package/dist/formatter/types.d.ts +9 -0
- package/dist/formatter/types.d.ts.map +1 -1
- package/dist/formatter/types.js +1 -0
- package/dist/formatter/types.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/linter/index.d.ts.map +1 -1
- package/dist/linter/index.js +38 -20
- package/dist/linter/index.js.map +1 -1
- package/dist/linter/rules/index.d.ts +2 -1
- package/dist/linter/rules/index.d.ts.map +1 -1
- package/dist/linter/rules/index.js +6 -1
- package/dist/linter/rules/index.js.map +1 -1
- package/dist/linter/rules/spec-shape.d.ts +9 -0
- package/dist/linter/rules/spec-shape.d.ts.map +1 -0
- package/dist/linter/rules/spec-shape.js +156 -0
- package/dist/linter/rules/spec-shape.js.map +1 -0
- package/dist/linter/types.d.ts +5 -0
- package/dist/linter/types.d.ts.map +1 -1
- package/dist/signers/index.d.ts +2 -1
- package/dist/signers/index.d.ts.map +1 -1
- package/dist/signers/index.js.map +1 -1
- package/dist/signing-payload.d.ts +6 -0
- package/dist/signing-payload.d.ts.map +1 -1
- package/dist/signing-payload.js +10 -4
- package/dist/signing-payload.js.map +1 -1
- package/dist/spec-shape.d.ts +8 -4
- package/dist/spec-shape.d.ts.map +1 -1
- package/dist/spec-shape.js +5 -3
- package/dist/spec-shape.js.map +1 -1
- package/dist/spec-writer.d.ts +63 -0
- package/dist/spec-writer.d.ts.map +1 -0
- package/dist/spec-writer.js +215 -0
- package/dist/spec-writer.js.map +1 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/formatter/formatter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/formatter/formatter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAmG3D,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC/B,YAAY,CAkDd"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.formatDossierContent = formatDossierContent;
|
|
4
4
|
const checksum_1 = require("../checksum");
|
|
5
5
|
const parser_1 = require("../parser");
|
|
6
|
-
const
|
|
6
|
+
const spec_writer_1 = require("../spec-writer");
|
|
7
7
|
const types_1 = require("./types");
|
|
8
8
|
/**
|
|
9
9
|
* Conventional key ordering for dossier frontmatter.
|
|
@@ -95,27 +95,43 @@ function ensureFinalNewline(text) {
|
|
|
95
95
|
function formatDossierContent(content, options) {
|
|
96
96
|
const opts = { ...types_1.defaultFormatOptions, ...options };
|
|
97
97
|
const parsed = (0, parser_1.parseDossierContent)(content);
|
|
98
|
-
|
|
99
|
-
throw new Error(spec_shape_1.SPEC_SHAPE_WRITE_UNSUPPORTED);
|
|
100
|
-
}
|
|
101
|
-
let frontmatter = parsed.frontmatter;
|
|
102
|
-
if (opts.sortKeys) {
|
|
103
|
-
frontmatter = sortFrontmatterKeys(frontmatter);
|
|
104
|
-
}
|
|
98
|
+
let frontmatter = { ...parsed.frontmatter };
|
|
105
99
|
// Normalize body: trim trailing whitespace per line, then trim trailing newlines from body
|
|
106
100
|
const body = trimTrailingWhitespace(parsed.body).replace(/\n+$/, '');
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
101
|
+
// Checksum block with the hash of the normalized body, when enabled
|
|
102
|
+
let checksum;
|
|
103
|
+
if (opts.updateChecksum && frontmatter.checksum && typeof frontmatter.checksum === 'object') {
|
|
104
|
+
checksum = {
|
|
105
|
+
...frontmatter.checksum,
|
|
106
|
+
hash: (0, checksum_1.calculateChecksum)(body),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
let result;
|
|
110
|
+
if (parsed.shape === 'spec') {
|
|
111
|
+
// Re-serialize the on-disk object as it is — key order and every value's
|
|
112
|
+
// exact string — so only the checksum (when the body changed) can alter what
|
|
113
|
+
// a v3 signature covers. Re-encoding the logical view would change more.
|
|
114
|
+
const raw = checksum
|
|
115
|
+
? (0, spec_writer_1.withSpecField)(parsed.rawFrontmatter, 'checksum', checksum)
|
|
116
|
+
: parsed.rawFrontmatter;
|
|
117
|
+
result = (0, spec_writer_1.serializeSpecDossier)(raw, body);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
if (opts.sortKeys) {
|
|
121
|
+
frontmatter = sortFrontmatterKeys(frontmatter);
|
|
122
|
+
}
|
|
123
|
+
if (checksum) {
|
|
124
|
+
frontmatter.checksum = checksum;
|
|
125
|
+
}
|
|
126
|
+
if (opts.toSpec && !frontmatter.signature) {
|
|
127
|
+
result = (0, spec_writer_1.renderSpecDossier)((0, spec_writer_1.withSkillIdentity)(frontmatter, opts.nameSource), body);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Legacy layout: JSON with controlled indentation
|
|
131
|
+
const jsonStr = JSON.stringify(frontmatter, null, opts.indent);
|
|
132
|
+
result = `---dossier\n${jsonStr}\n---\n${body}`;
|
|
113
133
|
}
|
|
114
134
|
}
|
|
115
|
-
// Serialize frontmatter with controlled indentation
|
|
116
|
-
const jsonStr = JSON.stringify(frontmatter, null, opts.indent);
|
|
117
|
-
// Build the formatted output
|
|
118
|
-
let result = `---dossier\n${jsonStr}\n---\n${body}`;
|
|
119
135
|
// Ensure final newline
|
|
120
136
|
result = ensureFinalNewline(result);
|
|
121
137
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/formatter/formatter.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/formatter/formatter.ts"],"names":[],"mappings":"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"}
|
package/dist/formatter/index.js
CHANGED
|
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "formatDossierContent", { enumerable: true, get:
|
|
|
23
23
|
__exportStar(require("./types"), exports);
|
|
24
24
|
function formatDossierFile(filePath, options) {
|
|
25
25
|
const content = (0, node_fs_1.readFileSync)(filePath, 'utf8');
|
|
26
|
-
const result = (0, formatter_1.formatDossierContent)(content, options);
|
|
26
|
+
const result = (0, formatter_1.formatDossierContent)(content, { nameSource: filePath, ...options });
|
|
27
27
|
if (result.changed) {
|
|
28
28
|
(0, node_fs_1.writeFileSync)(filePath, result.formatted, 'utf8');
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAOA,8CAYC;AAnBD,qCAAsD;AACtD,2CAAmD;AAGnD,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAC7B,0CAAwB;AAExB,SAAgB,iBAAiB,CAC/B,QAAgB,EAChB,OAAgC;IAEhC,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAA,gCAAoB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAOA,8CAYC;AAnBD,qCAAsD;AACtD,2CAAmD;AAGnD,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAC7B,0CAAwB;AAExB,SAAgB,iBAAiB,CAC/B,QAAgB,EAChB,OAAgC;IAEhC,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAA,gCAAoB,EAAC,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAEnF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAA,uBAAa,EAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
export interface FormatOptions {
|
|
2
|
+
/** JSON indentation; applies only to output kept in the legacy layout. */
|
|
2
3
|
indent: number;
|
|
3
4
|
sortKeys: boolean;
|
|
4
5
|
updateChecksum: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Write the Agent Skills (spec) layout. Spec-shaped input always stays spec-shaped;
|
|
8
|
+
* legacy input is converted unless it carries a signature, which a conversion
|
|
9
|
+
* would orphan (re-sign with `ai-dossier sign` to convert a signed dossier).
|
|
10
|
+
*/
|
|
11
|
+
toSpec: boolean;
|
|
12
|
+
/** Registry path or file path the Agent Skills `name` is derived from when absent. */
|
|
13
|
+
nameSource?: string;
|
|
5
14
|
}
|
|
6
15
|
export interface FormatResult {
|
|
7
16
|
formatted: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/formatter/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/formatter/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB,EAAE,aAKlC,CAAC"}
|
package/dist/formatter/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/formatter/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/formatter/types.ts"],"names":[],"mappings":";;;AAoBa,QAAA,oBAAoB,GAAkB;IACjD,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,IAAI;IACd,cAAc,EAAE,IAAI;IACpB,MAAM,EAAE,IAAI;CACb,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -36,9 +36,10 @@ export type { TrustedKeyEntry, TrustedKeyProblem } from './signature';
|
|
|
36
36
|
export { findTrustedIdentifier, isKmsKeyIdentifier, loadTrustedKeys, parseTrustedKeys, reportTrustedKeyProblems, trustedKeysFromContent, verifySignature, verifyWithEd25519, verifyWithKms, } from './signature';
|
|
37
37
|
export { Ed25519Signer, Ed25519Verifier, getVerifierRegistry, KmsSigner, KmsVerifier, SignatureResult, Signer, Verifier, VerifierRegistry, VerifyResult, } from './signers';
|
|
38
38
|
export type { SignatureCoverage } from './signing-payload';
|
|
39
|
-
export { buildSignedPayload, buildVerificationPayload, canonicalizeFrontmatter, canonicalizeSpecFrontmatter, isSupportedPublicKey, normalizePublicKey, publicKeysMatch, SIGNATURE_COVERAGES, signatureCoverage, toSpkiPem, } from './signing-payload';
|
|
39
|
+
export { buildSignedPayload, buildVerificationPayload, canonicalizeFrontmatter, canonicalizeSpecFrontmatter, isSupportedPublicKey, normalizePublicKey, publicKeysMatch, SIGNATURE_COVERAGES, SIGNATURE_PAYLOAD_TAG_V2, SIGNATURE_PAYLOAD_TAG_V3, signatureCoverage, toSpkiPem, } from './signing-payload';
|
|
40
40
|
export type { FrontmatterShape } from './spec-shape';
|
|
41
41
|
export { DOSSIER_METADATA_PREFIX, decodeSpecValue, encodeSpecValue, fromSpecFrontmatter, isSpecShapedFrontmatter, SPEC_SHAPE_WRITE_UNSUPPORTED, SPEC_TOP_LEVEL_FIELDS, SpecShapeError, toSpecFrontmatter, } from './spec-shape';
|
|
42
|
+
export { buildSpecFrontmatter, deriveSkillName, foreignMetadata, renderSpecDossier, serializeSpecDossier, withSkillIdentity, withSpecField, } from './spec-writer';
|
|
42
43
|
export type { ConfigLayer as TraceConfigLayer, ResolvedTraceConfig, TraceConfigOptions, TraceConfigSource, } from './trace-config';
|
|
43
44
|
export { resolveTraceConfig } from './trace-config';
|
|
44
45
|
export type { DossierTraceInfo, StepInput as TraceStepInput, TraceInput, TraceRecorder, TraceRecorderOptions, TraceStatus, TraceUpdate, } from './trace-recorder';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
@@ -27,8 +27,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
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.toPortablePath = exports.resolvePortablePath = exports.redactHomePaths = exports.REPO_PATH_TOKEN = exports.parseWorktreePorcelain = exports.LOCAL_PATH_TOKEN = exports.isPortablePath = exports.containsHomePath = exports.anchorFromCommonDir = 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.levelForScore = exports.DRY_RUN_SCHEMA_VERSION = exports.DRY_RUN_DISCLAIMER = exports.analyzeDryRun = 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.
|
|
31
|
-
exports.createDefaultVerificationResult = exports.scanBodyForUrls = exports.isUrlCoveredByDeclared = exports.isPlaceholderUrl = exports.findUndeclaredUrls = exports.findStaleReferences = void 0;
|
|
30
|
+
exports.createTraceRecorder = exports.resolveTraceConfig = exports.withSpecField = exports.withSkillIdentity = exports.serializeSpecDossier = exports.renderSpecDossier = exports.foreignMetadata = exports.deriveSkillName = exports.buildSpecFrontmatter = exports.toSpecFrontmatter = exports.SpecShapeError = exports.SPEC_TOP_LEVEL_FIELDS = exports.SPEC_SHAPE_WRITE_UNSUPPORTED = exports.isSpecShapedFrontmatter = exports.fromSpecFrontmatter = exports.encodeSpecValue = exports.decodeSpecValue = exports.DOSSIER_METADATA_PREFIX = exports.toSpkiPem = exports.signatureCoverage = exports.SIGNATURE_PAYLOAD_TAG_V3 = exports.SIGNATURE_PAYLOAD_TAG_V2 = exports.SIGNATURE_COVERAGES = exports.publicKeysMatch = exports.normalizePublicKey = exports.isSupportedPublicKey = exports.canonicalizeSpecFrontmatter = exports.canonicalizeFrontmatter = exports.buildVerificationPayload = exports.buildSignedPayload = 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 = void 0;
|
|
31
|
+
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.TRUSTED_AUTHOR_ASSOCIATIONS = exports.isTrustedAuthorAssociation = exports.VALID_TRACE_STATUSES = void 0;
|
|
32
32
|
var agent_usage_1 = require("./agent-usage");
|
|
33
33
|
Object.defineProperty(exports, "isOpenCodeUsageStream", { enumerable: true, get: function () { return agent_usage_1.isOpenCodeUsageStream; } });
|
|
34
34
|
Object.defineProperty(exports, "parseAgentUsage", { enumerable: true, get: function () { return agent_usage_1.parseAgentUsage; } });
|
|
@@ -128,6 +128,8 @@ Object.defineProperty(exports, "isSupportedPublicKey", { enumerable: true, get:
|
|
|
128
128
|
Object.defineProperty(exports, "normalizePublicKey", { enumerable: true, get: function () { return signing_payload_1.normalizePublicKey; } });
|
|
129
129
|
Object.defineProperty(exports, "publicKeysMatch", { enumerable: true, get: function () { return signing_payload_1.publicKeysMatch; } });
|
|
130
130
|
Object.defineProperty(exports, "SIGNATURE_COVERAGES", { enumerable: true, get: function () { return signing_payload_1.SIGNATURE_COVERAGES; } });
|
|
131
|
+
Object.defineProperty(exports, "SIGNATURE_PAYLOAD_TAG_V2", { enumerable: true, get: function () { return signing_payload_1.SIGNATURE_PAYLOAD_TAG_V2; } });
|
|
132
|
+
Object.defineProperty(exports, "SIGNATURE_PAYLOAD_TAG_V3", { enumerable: true, get: function () { return signing_payload_1.SIGNATURE_PAYLOAD_TAG_V3; } });
|
|
131
133
|
Object.defineProperty(exports, "signatureCoverage", { enumerable: true, get: function () { return signing_payload_1.signatureCoverage; } });
|
|
132
134
|
Object.defineProperty(exports, "toSpkiPem", { enumerable: true, get: function () { return signing_payload_1.toSpkiPem; } });
|
|
133
135
|
var spec_shape_1 = require("./spec-shape");
|
|
@@ -140,6 +142,14 @@ Object.defineProperty(exports, "SPEC_SHAPE_WRITE_UNSUPPORTED", { enumerable: tru
|
|
|
140
142
|
Object.defineProperty(exports, "SPEC_TOP_LEVEL_FIELDS", { enumerable: true, get: function () { return spec_shape_1.SPEC_TOP_LEVEL_FIELDS; } });
|
|
141
143
|
Object.defineProperty(exports, "SpecShapeError", { enumerable: true, get: function () { return spec_shape_1.SpecShapeError; } });
|
|
142
144
|
Object.defineProperty(exports, "toSpecFrontmatter", { enumerable: true, get: function () { return spec_shape_1.toSpecFrontmatter; } });
|
|
145
|
+
var spec_writer_1 = require("./spec-writer");
|
|
146
|
+
Object.defineProperty(exports, "buildSpecFrontmatter", { enumerable: true, get: function () { return spec_writer_1.buildSpecFrontmatter; } });
|
|
147
|
+
Object.defineProperty(exports, "deriveSkillName", { enumerable: true, get: function () { return spec_writer_1.deriveSkillName; } });
|
|
148
|
+
Object.defineProperty(exports, "foreignMetadata", { enumerable: true, get: function () { return spec_writer_1.foreignMetadata; } });
|
|
149
|
+
Object.defineProperty(exports, "renderSpecDossier", { enumerable: true, get: function () { return spec_writer_1.renderSpecDossier; } });
|
|
150
|
+
Object.defineProperty(exports, "serializeSpecDossier", { enumerable: true, get: function () { return spec_writer_1.serializeSpecDossier; } });
|
|
151
|
+
Object.defineProperty(exports, "withSkillIdentity", { enumerable: true, get: function () { return spec_writer_1.withSkillIdentity; } });
|
|
152
|
+
Object.defineProperty(exports, "withSpecField", { enumerable: true, get: function () { return spec_writer_1.withSpecField; } });
|
|
143
153
|
var trace_config_1 = require("./trace-config");
|
|
144
154
|
Object.defineProperty(exports, "resolveTraceConfig", { enumerable: true, get: function () { return trace_config_1.resolveTraceConfig; } });
|
|
145
155
|
var trace_recorder_1 = require("./trace-recorder");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;AAYjD,qCAKmB;AAJjB,wGAAA,aAAa,OAAA;AACb,6GAAA,kBAAkB,OAAA;AAClB,iHAAA,sBAAsB,OAAA;AACtB,wGAAA,aAAa,OAAA;AAIf,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;AAIhB,2CAUsB;AATpB,iHAAA,mBAAmB,OAAA;AACnB,8GAAA,gBAAgB,OAAA;AAChB,4GAAA,cAAc,OAAA;AACd,8GAAA,gBAAgB,OAAA;AAChB,oHAAA,sBAAsB,OAAA;AACtB,6GAAA,eAAe,OAAA;AACf,6GAAA,eAAe,OAAA;AACf,iHAAA,mBAAmB,OAAA;AACnB,4GAAA,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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/linter/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/linter/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAkB,UAAU,EAAmB,MAAM,SAAS,CAAC;AAEvF,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,cAAc,SAAS,CAAC;AA0DxB,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CAE5E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CAEjF"}
|
package/dist/linter/index.js
CHANGED
|
@@ -18,6 +18,7 @@ exports.defaultRules = exports.LintRuleRegistry = exports.loadLintConfig = void
|
|
|
18
18
|
exports.lintDossier = lintDossier;
|
|
19
19
|
exports.lintDossierFile = lintDossierFile;
|
|
20
20
|
const parser_1 = require("../parser");
|
|
21
|
+
const spec_shape_1 = require("../spec-shape");
|
|
21
22
|
const config_1 = require("./config");
|
|
22
23
|
const registry_1 = require("./registry");
|
|
23
24
|
const rules_1 = require("./rules");
|
|
@@ -33,37 +34,54 @@ function createRegistry() {
|
|
|
33
34
|
registry.registerAll(rules_1.defaultRules);
|
|
34
35
|
return registry;
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
+
const SPEC_TOP_LEVEL = new Set(spec_shape_1.SPEC_TOP_LEVEL_FIELDS);
|
|
38
|
+
/**
|
|
39
|
+
* Rules read the logical (flat) frontmatter, so they name fields like
|
|
40
|
+
* `risk_level`. In a spec-shaped file that field sits at
|
|
41
|
+
* `metadata["dossier.risk_level"]`; the message says so, or the author goes
|
|
42
|
+
* looking for a top-level key that is not there.
|
|
43
|
+
*/
|
|
44
|
+
function locateOnDisk(diagnostic, shape) {
|
|
45
|
+
const field = diagnostic.field;
|
|
46
|
+
if (shape !== 'spec' || !field || diagnostic.ruleId === 'spec-shape') {
|
|
47
|
+
return diagnostic;
|
|
48
|
+
}
|
|
49
|
+
const top = field.split(/[.[]/)[0];
|
|
50
|
+
if (top === 'metadata' || SPEC_TOP_LEVEL.has(top)) {
|
|
51
|
+
return diagnostic;
|
|
52
|
+
}
|
|
53
|
+
// `field` stays the logical name: editors and other consumers map it onto the
|
|
54
|
+
// file themselves. Only the human-readable message gains the on-disk key.
|
|
37
55
|
return {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
errorCount: diagnostics.filter((d) => d.severity === 'error').length,
|
|
41
|
-
warningCount: diagnostics.filter((d) => d.severity === 'warning').length,
|
|
42
|
-
infoCount: diagnostics.filter((d) => d.severity === 'info').length,
|
|
56
|
+
...diagnostic,
|
|
57
|
+
message: `${diagnostic.message} (in metadata["${spec_shape_1.DOSSIER_METADATA_PREFIX}${top}"])`,
|
|
43
58
|
};
|
|
44
59
|
}
|
|
45
|
-
function
|
|
46
|
-
const parsed = (0, parser_1.parseDossierContent)(content);
|
|
60
|
+
function lintParsed(parsed, config) {
|
|
47
61
|
const resolvedConfig = config || (0, config_1.loadLintConfig)();
|
|
48
62
|
const registry = createRegistry();
|
|
49
63
|
const context = {
|
|
50
64
|
frontmatter: parsed.frontmatter,
|
|
51
65
|
body: parsed.body,
|
|
52
66
|
raw: parsed.raw,
|
|
67
|
+
shape: parsed.shape,
|
|
68
|
+
rawFrontmatter: parsed.rawFrontmatter,
|
|
53
69
|
};
|
|
54
|
-
|
|
55
|
-
return buildResult(diagnostics);
|
|
70
|
+
return registry.run(context, resolvedConfig).map((d) => locateOnDisk(d, parsed.shape));
|
|
56
71
|
}
|
|
57
|
-
function
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
raw: parsed.raw,
|
|
72
|
+
function buildResult(diagnostics, file) {
|
|
73
|
+
return {
|
|
74
|
+
file,
|
|
75
|
+
diagnostics,
|
|
76
|
+
errorCount: diagnostics.filter((d) => d.severity === 'error').length,
|
|
77
|
+
warningCount: diagnostics.filter((d) => d.severity === 'warning').length,
|
|
78
|
+
infoCount: diagnostics.filter((d) => d.severity === 'info').length,
|
|
65
79
|
};
|
|
66
|
-
|
|
67
|
-
|
|
80
|
+
}
|
|
81
|
+
function lintDossier(content, config) {
|
|
82
|
+
return buildResult(lintParsed((0, parser_1.parseDossierContent)(content), config));
|
|
83
|
+
}
|
|
84
|
+
function lintDossierFile(filePath, config) {
|
|
85
|
+
return buildResult(lintParsed((0, parser_1.parseDossierFile)(filePath), config), filePath);
|
|
68
86
|
}
|
|
69
87
|
//# sourceMappingURL=index.js.map
|
package/dist/linter/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/linter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/linter/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,8 @@ import { requiredSectionsRule } from './required-sections';
|
|
|
6
6
|
import { riskLevelConsistencyRule } from './risk-level-consistency';
|
|
7
7
|
import { schemaValidRule } from './schema-valid';
|
|
8
8
|
import { semverVersionRule } from './semver-version';
|
|
9
|
+
import { legacyLayoutRule, specShapeRule } from './spec-shape';
|
|
9
10
|
import { toolsCheckCommandRule } from './tools-check-command';
|
|
10
|
-
export { checksumValidRule, externalReferencesDeclaredRule, objectiveQualityRule, requiredSectionsRule, riskLevelConsistencyRule, schemaValidRule, semverVersionRule, toolsCheckCommandRule, };
|
|
11
|
+
export { checksumValidRule, externalReferencesDeclaredRule, legacyLayoutRule, objectiveQualityRule, requiredSectionsRule, riskLevelConsistencyRule, schemaValidRule, semverVersionRule, specShapeRule, toolsCheckCommandRule, };
|
|
11
12
|
export declare const defaultRules: LintRule[];
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GACtB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,qBAAqB,GACtB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,QAAQ,EAWlC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defaultRules = exports.toolsCheckCommandRule = exports.semverVersionRule = exports.schemaValidRule = exports.riskLevelConsistencyRule = exports.requiredSectionsRule = exports.objectiveQualityRule = exports.externalReferencesDeclaredRule = exports.checksumValidRule = void 0;
|
|
3
|
+
exports.defaultRules = exports.toolsCheckCommandRule = exports.specShapeRule = exports.semverVersionRule = exports.schemaValidRule = exports.riskLevelConsistencyRule = exports.requiredSectionsRule = exports.objectiveQualityRule = exports.legacyLayoutRule = exports.externalReferencesDeclaredRule = exports.checksumValidRule = void 0;
|
|
4
4
|
const checksum_valid_1 = require("./checksum-valid");
|
|
5
5
|
Object.defineProperty(exports, "checksumValidRule", { enumerable: true, get: function () { return checksum_valid_1.checksumValidRule; } });
|
|
6
6
|
const external_references_declared_1 = require("./external-references-declared");
|
|
@@ -15,10 +15,15 @@ const schema_valid_1 = require("./schema-valid");
|
|
|
15
15
|
Object.defineProperty(exports, "schemaValidRule", { enumerable: true, get: function () { return schema_valid_1.schemaValidRule; } });
|
|
16
16
|
const semver_version_1 = require("./semver-version");
|
|
17
17
|
Object.defineProperty(exports, "semverVersionRule", { enumerable: true, get: function () { return semver_version_1.semverVersionRule; } });
|
|
18
|
+
const spec_shape_1 = require("./spec-shape");
|
|
19
|
+
Object.defineProperty(exports, "legacyLayoutRule", { enumerable: true, get: function () { return spec_shape_1.legacyLayoutRule; } });
|
|
20
|
+
Object.defineProperty(exports, "specShapeRule", { enumerable: true, get: function () { return spec_shape_1.specShapeRule; } });
|
|
18
21
|
const tools_check_command_1 = require("./tools-check-command");
|
|
19
22
|
Object.defineProperty(exports, "toolsCheckCommandRule", { enumerable: true, get: function () { return tools_check_command_1.toolsCheckCommandRule; } });
|
|
20
23
|
exports.defaultRules = [
|
|
21
24
|
schema_valid_1.schemaValidRule,
|
|
25
|
+
spec_shape_1.specShapeRule,
|
|
26
|
+
spec_shape_1.legacyLayoutRule,
|
|
22
27
|
checksum_valid_1.checksumValidRule,
|
|
23
28
|
semver_version_1.semverVersionRule,
|
|
24
29
|
risk_level_consistency_1.riskLevelConsistencyRule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/linter/rules/index.ts"],"names":[],"mappings":";;;AACA,qDAAqD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/linter/rules/index.ts"],"names":[],"mappings":";;;AACA,qDAAqD;AAWnD,kGAXO,kCAAiB,OAWP;AAVnB,iFAAgF;AAW9E,+GAXO,6DAA8B,OAWP;AAVhC,2DAA2D;AAYzD,qGAZO,wCAAoB,OAYP;AAXtB,2DAA2D;AAYzD,qGAZO,wCAAoB,OAYP;AAXtB,qEAAoE;AAYlE,yGAZO,iDAAwB,OAYP;AAX1B,iDAAiD;AAY/C,gGAZO,8BAAe,OAYP;AAXjB,qDAAqD;AAYnD,kGAZO,kCAAiB,OAYP;AAXnB,6CAA+D;AAM7D,iGANO,6BAAgB,OAMP;AAMhB,8FAZyB,0BAAa,OAYzB;AAXf,+DAA8D;AAY5D,sGAZO,2CAAqB,OAYP;AAGV,QAAA,YAAY,GAAe;IACtC,8BAAe;IACf,0BAAa;IACb,6BAAgB;IAChB,kCAAiB;IACjB,kCAAiB;IACjB,iDAAwB;IACxB,2CAAqB;IACrB,wCAAoB;IACpB,wCAAoB;IACpB,6DAA8B;CAC/B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { LintRule } from '../types';
|
|
2
|
+
/** A spec-shaped dossier must pass the Agent Skills layout checks as written. */
|
|
3
|
+
export declare const specShapeRule: LintRule;
|
|
4
|
+
/**
|
|
5
|
+
* A legacy dossier is still read, but writers now emit the Agent Skills layout.
|
|
6
|
+
* Flags the file, and anything that would make its converted form invalid.
|
|
7
|
+
*/
|
|
8
|
+
export declare const legacyLayoutRule: LintRule;
|
|
9
|
+
//# sourceMappingURL=spec-shape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-shape.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/spec-shape.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAsDzD,iFAAiF;AACjF,eAAO,MAAM,aAAa,EAAE,QAqB3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAwC9B,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.legacyLayoutRule = exports.specShapeRule = void 0;
|
|
40
|
+
const yaml_1 = __importStar(require("yaml"));
|
|
41
|
+
const dossier_schema_json_1 = __importDefault(require("../../schema/dossier-schema.json"));
|
|
42
|
+
const ajv_1 = require("../../utils/ajv");
|
|
43
|
+
/** The Agent Skills layout (#1088): what `skills-ref validate` and skills runtimes read. */
|
|
44
|
+
const validateSpecShape = (0, ajv_1.compileSchema)({
|
|
45
|
+
...dossier_schema_json_1.default.definitions.specShape,
|
|
46
|
+
definitions: dossier_schema_json_1.default.definitions,
|
|
47
|
+
});
|
|
48
|
+
const SKILL_NAME = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
49
|
+
const MAX_SKILL_NAME_LENGTH = 64;
|
|
50
|
+
const MAX_DESCRIPTION_LENGTH = 1024;
|
|
51
|
+
const NAME_RULE = 'lowercase letters, digits and single hyphens, at most 64 characters';
|
|
52
|
+
function toDiagnostic(err) {
|
|
53
|
+
// `/metadata/dossier.title` names a key with a dot in it; write it the way it
|
|
54
|
+
// reads in the file rather than as an ambiguous `metadata.dossier.title`.
|
|
55
|
+
const [top, ...rest] = (err.instancePath || '').split('/').slice(1);
|
|
56
|
+
const field = top === undefined ? undefined : `${top}${rest.map((k) => `["${k}"]`).join('')}`;
|
|
57
|
+
let message;
|
|
58
|
+
if (err.keyword === 'required') {
|
|
59
|
+
message = `Missing required field: ${field ? `${field}["${err.params.missingProperty}"]` : err.params.missingProperty}`;
|
|
60
|
+
}
|
|
61
|
+
else if (err.keyword === 'additionalProperties') {
|
|
62
|
+
message = `Unexpected top-level field "${err.params.additionalProperty}"; Dossier fields belong under metadata as "dossier.${err.params.additionalProperty}"`;
|
|
63
|
+
}
|
|
64
|
+
else if (field === 'name' && (err.keyword === 'pattern' || err.keyword === 'maxLength')) {
|
|
65
|
+
message = `name must be ${NAME_RULE}`;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
message = `${field ?? 'frontmatter'}: ${err.message}`;
|
|
69
|
+
}
|
|
70
|
+
return { ruleId: 'spec-shape', severity: 'error', message, field };
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Whether the front matter uses a flow (JSON-style) mapping or sequence anywhere.
|
|
74
|
+
* Strict YAML readers — the Agent Skills validator among them — reject flow
|
|
75
|
+
* collections, and a spec-shaped file is installed as is, so it must be block-style.
|
|
76
|
+
*/
|
|
77
|
+
function usesFlowCollections(raw) {
|
|
78
|
+
const block = /^---[^\n]*\n([\s\S]*?)\n---/.exec(raw);
|
|
79
|
+
if (!block) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
let flow = false;
|
|
83
|
+
const mark = (_key, node) => {
|
|
84
|
+
if (node.flow) {
|
|
85
|
+
flow = true;
|
|
86
|
+
return yaml_1.visit.BREAK;
|
|
87
|
+
}
|
|
88
|
+
return undefined;
|
|
89
|
+
};
|
|
90
|
+
(0, yaml_1.visit)(yaml_1.default.parseDocument(block[1]), { Map: mark, Seq: mark });
|
|
91
|
+
return flow;
|
|
92
|
+
}
|
|
93
|
+
/** A spec-shaped dossier must pass the Agent Skills layout checks as written. */
|
|
94
|
+
exports.specShapeRule = {
|
|
95
|
+
id: 'spec-shape',
|
|
96
|
+
description: 'Spec-shaped frontmatter follows the Agent Skills layout',
|
|
97
|
+
defaultSeverity: 'error',
|
|
98
|
+
run(context) {
|
|
99
|
+
if (context.shape !== 'spec' || !context.rawFrontmatter) {
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
const diagnostics = validateSpecShape(context.rawFrontmatter)
|
|
103
|
+
? []
|
|
104
|
+
: (validateSpecShape.errors || []).map(toDiagnostic);
|
|
105
|
+
if (usesFlowCollections(context.raw)) {
|
|
106
|
+
diagnostics.push({
|
|
107
|
+
ruleId: 'spec-shape',
|
|
108
|
+
severity: 'error',
|
|
109
|
+
message: "Spec-shaped frontmatter must be block-style YAML; strict YAML readers reject JSON/flow mappings. 'ai-dossier format' rewrites it without changing what the signature covers",
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return diagnostics;
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* A legacy dossier is still read, but writers now emit the Agent Skills layout.
|
|
117
|
+
* Flags the file, and anything that would make its converted form invalid.
|
|
118
|
+
*/
|
|
119
|
+
exports.legacyLayoutRule = {
|
|
120
|
+
id: 'legacy-layout',
|
|
121
|
+
description: 'Legacy frontmatter layout; writers now emit the Agent Skills layout',
|
|
122
|
+
defaultSeverity: 'info',
|
|
123
|
+
run(context) {
|
|
124
|
+
if (context.shape !== 'legacy') {
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
127
|
+
const diagnostics = [
|
|
128
|
+
{
|
|
129
|
+
ruleId: 'legacy-layout',
|
|
130
|
+
severity: 'info',
|
|
131
|
+
message: "Legacy frontmatter layout; 'ai-dossier sign' (or 'ai-dossier format' when unsigned) writes the Agent Skills layout",
|
|
132
|
+
},
|
|
133
|
+
];
|
|
134
|
+
const { name, description, objective } = context.frontmatter;
|
|
135
|
+
if (typeof name === 'string' &&
|
|
136
|
+
(!SKILL_NAME.test(name) || name.length > MAX_SKILL_NAME_LENGTH)) {
|
|
137
|
+
diagnostics.push({
|
|
138
|
+
ruleId: 'legacy-layout',
|
|
139
|
+
severity: 'info',
|
|
140
|
+
message: `name "${name}" is not a valid Agent Skills name (${NAME_RULE})`,
|
|
141
|
+
field: 'name',
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
const summary = description ?? objective;
|
|
145
|
+
if (typeof summary === 'string' && summary.length > MAX_DESCRIPTION_LENGTH) {
|
|
146
|
+
diagnostics.push({
|
|
147
|
+
ruleId: 'legacy-layout',
|
|
148
|
+
severity: 'info',
|
|
149
|
+
message: `${description === undefined ? 'objective' : 'description'} is ${summary.length} characters; an Agent Skills description allows at most ${MAX_DESCRIPTION_LENGTH}`,
|
|
150
|
+
field: description === undefined ? 'objective' : 'description',
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return diagnostics;
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=spec-shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-shape.js","sourceRoot":"","sources":["../../../src/linter/rules/spec-shape.ts"],"names":[],"mappings":"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"}
|
package/dist/linter/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { FrontmatterShape } from '../spec-shape';
|
|
1
2
|
import type { DossierFrontmatter } from '../types';
|
|
2
3
|
export type LintSeverity = 'error' | 'warning' | 'info';
|
|
3
4
|
export interface LintDiagnostic {
|
|
@@ -10,6 +11,10 @@ export interface LintRuleContext {
|
|
|
10
11
|
frontmatter: DossierFrontmatter;
|
|
11
12
|
body: string;
|
|
12
13
|
raw: string;
|
|
14
|
+
/** On-disk layout; absent when a caller builds a context by hand. */
|
|
15
|
+
shape?: FrontmatterShape;
|
|
16
|
+
/** Frontmatter exactly as it sits on disk (spec-shaped files keep `metadata`). */
|
|
17
|
+
rawFrontmatter?: Record<string, unknown>;
|
|
13
18
|
}
|
|
14
19
|
export interface LintRule {
|
|
15
20
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/linter/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,kBAAkB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/linter/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,kBAAkB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,YAAY,CAAC;IAC9B,GAAG,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE,CAAC;CACjD;AAED,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
package/dist/signers/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Signer and Verifier interfaces for dossier signatures
|
|
3
3
|
*/
|
|
4
|
+
import type { SignatureCoverage } from '../signing-payload';
|
|
4
5
|
export interface SignatureResult {
|
|
5
6
|
algorithm: string;
|
|
6
7
|
signature: string;
|
|
@@ -10,7 +11,7 @@ export interface SignatureResult {
|
|
|
10
11
|
signed_by?: string;
|
|
11
12
|
signed_at: string;
|
|
12
13
|
/** Which bytes the signature covers. Absent means the legacy body-only scheme. */
|
|
13
|
-
covers?:
|
|
14
|
+
covers?: SignatureCoverage;
|
|
14
15
|
}
|
|
15
16
|
export interface Signer {
|
|
16
17
|
/**
|
|
@@ -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,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,MAAM,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;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;;;AAqDH,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"}
|
|
@@ -30,6 +30,12 @@ import type { ParsedDossier } from './types';
|
|
|
30
30
|
/** Every `signature.covers` scheme a verifier accepts: v1, v2, v3. */
|
|
31
31
|
export declare const SIGNATURE_COVERAGES: readonly ["body", "frontmatter+body", "spec-frontmatter+body"];
|
|
32
32
|
export type SignatureCoverage = (typeof SIGNATURE_COVERAGES)[number];
|
|
33
|
+
/**
|
|
34
|
+
* Scheme tags that open a signed payload. Being inside the signed bytes, they
|
|
35
|
+
* stop a signature made under one scheme from being replayed as another.
|
|
36
|
+
*/
|
|
37
|
+
export declare const SIGNATURE_PAYLOAD_TAG_V2 = "dossier-signature-v2";
|
|
38
|
+
export declare const SIGNATURE_PAYLOAD_TAG_V3 = "dossier-signature-v3";
|
|
33
39
|
/**
|
|
34
40
|
* Coverage of a signature block, defaulting to the legacy body-only scheme when
|
|
35
41
|
* the field is absent.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signing-payload.d.ts","sourceRoot":"","sources":["../src/signing-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ7C,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,gEAAiE,CAAC;AAElG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"signing-payload.d.ts","sourceRoot":"","sources":["../src/signing-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ7C,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,gEAAiE,CAAC;AAElG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAK/D;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAAG,iBAAiB,CAWhG;AAmFD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAG/D;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAYnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAKrF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAGpF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CASxF;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,iBAAsC,GAC/C,MAAM,CAQR;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,GAAG,gBAAgB,GAAG,OAAO,CAAC,GAC/E,MAAM,CAsBR"}
|
package/dist/signing-payload.js
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* legacy ones, and an unrecognized `covers` value is refused, never guessed.
|
|
29
29
|
*/
|
|
30
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
-
exports.SIGNATURE_COVERAGES = void 0;
|
|
31
|
+
exports.SIGNATURE_PAYLOAD_TAG_V3 = exports.SIGNATURE_PAYLOAD_TAG_V2 = exports.SIGNATURE_COVERAGES = void 0;
|
|
32
32
|
exports.signatureCoverage = signatureCoverage;
|
|
33
33
|
exports.normalizePublicKey = normalizePublicKey;
|
|
34
34
|
exports.isSupportedPublicKey = isSupportedPublicKey;
|
|
@@ -45,6 +45,12 @@ const ED25519_SPKI_PREFIX = Buffer.from('302a300506032b6570032100', 'hex');
|
|
|
45
45
|
const ED25519_RAW_KEY_BYTES = 32;
|
|
46
46
|
/** Every `signature.covers` scheme a verifier accepts: v1, v2, v3. */
|
|
47
47
|
exports.SIGNATURE_COVERAGES = ['body', 'frontmatter+body', 'spec-frontmatter+body'];
|
|
48
|
+
/**
|
|
49
|
+
* Scheme tags that open a signed payload. Being inside the signed bytes, they
|
|
50
|
+
* stop a signature made under one scheme from being replayed as another.
|
|
51
|
+
*/
|
|
52
|
+
exports.SIGNATURE_PAYLOAD_TAG_V2 = 'dossier-signature-v2';
|
|
53
|
+
exports.SIGNATURE_PAYLOAD_TAG_V3 = 'dossier-signature-v3';
|
|
48
54
|
/** Key of the signature block inside a spec-shaped `metadata` map. */
|
|
49
55
|
const SPEC_SIGNATURE_KEY = `${spec_shape_1.DOSSIER_METADATA_PREFIX}signature`;
|
|
50
56
|
/**
|
|
@@ -207,7 +213,7 @@ function canonicalizeFrontmatter(frontmatter) {
|
|
|
207
213
|
*/
|
|
208
214
|
function canonicalizeSpecFrontmatter(frontmatter) {
|
|
209
215
|
if (!(0, spec_shape_1.isSpecShapedFrontmatter)(frontmatter)) {
|
|
210
|
-
throw new
|
|
216
|
+
throw new spec_shape_1.SpecShapeError('A v3 (spec-frontmatter+body) payload needs the on-disk spec-shaped frontmatter, not the logical view');
|
|
211
217
|
}
|
|
212
218
|
const { metadata, ...rest } = frontmatter;
|
|
213
219
|
const { [SPEC_SIGNATURE_KEY]: _excluded, ...unsignedMetadata } = metadata;
|
|
@@ -226,9 +232,9 @@ function buildSignedPayload(frontmatter, body, coverage = 'frontmatter+body') {
|
|
|
226
232
|
return body;
|
|
227
233
|
}
|
|
228
234
|
if (coverage === 'spec-frontmatter+body') {
|
|
229
|
-
return
|
|
235
|
+
return `${exports.SIGNATURE_PAYLOAD_TAG_V3}\n${canonicalizeSpecFrontmatter(frontmatter)}\n${body}`;
|
|
230
236
|
}
|
|
231
|
-
return
|
|
237
|
+
return `${exports.SIGNATURE_PAYLOAD_TAG_V2}\n${canonicalizeFrontmatter(frontmatter)}\n${body}`;
|
|
232
238
|
}
|
|
233
239
|
/**
|
|
234
240
|
* The payload a parsed dossier's signature must verify against.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signing-payload.js","sourceRoot":"","sources":["../src/signing-payload.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;
|
|
1
|
+
{"version":3,"file":"signing-payload.js","sourceRoot":"","sources":["../src/signing-payload.ts"],"names":[],"mappings":"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"}
|
package/dist/spec-shape.d.ts
CHANGED
|
@@ -22,9 +22,11 @@ export declare const SPEC_TOP_LEVEL_FIELDS: readonly ["name", "description", "li
|
|
|
22
22
|
/** Prefix of the `metadata` keys that carry Dossier fields. */
|
|
23
23
|
export declare const DOSSIER_METADATA_PREFIX = "dossier.";
|
|
24
24
|
/**
|
|
25
|
-
* Why a writer
|
|
26
|
-
* (#1123)
|
|
27
|
-
*
|
|
25
|
+
* Why a writer refused spec-shaped input before the writers learned the spec
|
|
26
|
+
* shape (#1123).
|
|
27
|
+
*
|
|
28
|
+
* @deprecated No writer refuses spec-shaped input any more (see `spec-writer.ts`);
|
|
29
|
+
* kept so existing imports keep compiling.
|
|
28
30
|
*/
|
|
29
31
|
export declare const SPEC_SHAPE_WRITE_UNSUPPORTED = "Rewriting spec-shaped (Agent Skills layout) dossiers is not supported yet; edit the file by hand or wait for #1123";
|
|
30
32
|
/** Which on-disk layout a dossier's frontmatter uses. */
|
|
@@ -51,7 +53,9 @@ export declare function decodeSpecValue(text: string): unknown;
|
|
|
51
53
|
* one `dossier.*` key. A legacy dossier never has one, since no legacy field is
|
|
52
54
|
* named `metadata` with dotted keys.
|
|
53
55
|
*/
|
|
54
|
-
export declare function isSpecShapedFrontmatter(frontmatter: unknown):
|
|
56
|
+
export declare function isSpecShapedFrontmatter(frontmatter: unknown): frontmatter is Record<string, unknown> & {
|
|
57
|
+
metadata: Record<string, unknown>;
|
|
58
|
+
};
|
|
55
59
|
/**
|
|
56
60
|
* Convert flat logical frontmatter to the spec shape.
|
|
57
61
|
*
|
package/dist/spec-shape.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-shape.d.ts","sourceRoot":"","sources":["../src/spec-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,6FAA6F;AAC7F,eAAO,MAAM,qBAAqB,+EAMxB,CAAC;AAEX,+DAA+D;AAC/D,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"spec-shape.d.ts","sourceRoot":"","sources":["../src/spec-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,6FAA6F;AAC7F,eAAO,MAAM,qBAAqB,+EAMxB,CAAC;AAEX,+DAA+D;AAC/D,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,uHAC6E,CAAC;AAEvH,yDAAyD;AACzD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjD,oHAAoH;AACpH,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAgED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,SAAU,GAAG,MAAM,CAMtE;AAED,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,OAAO,GACnB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAShF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8B3F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4D1F;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAEhE"}
|
package/dist/spec-shape.js
CHANGED
|
@@ -38,9 +38,11 @@ exports.SPEC_TOP_LEVEL_FIELDS = [
|
|
|
38
38
|
/** Prefix of the `metadata` keys that carry Dossier fields. */
|
|
39
39
|
exports.DOSSIER_METADATA_PREFIX = 'dossier.';
|
|
40
40
|
/**
|
|
41
|
-
* Why a writer
|
|
42
|
-
* (#1123)
|
|
43
|
-
*
|
|
41
|
+
* Why a writer refused spec-shaped input before the writers learned the spec
|
|
42
|
+
* shape (#1123).
|
|
43
|
+
*
|
|
44
|
+
* @deprecated No writer refuses spec-shaped input any more (see `spec-writer.ts`);
|
|
45
|
+
* kept so existing imports keep compiling.
|
|
44
46
|
*/
|
|
45
47
|
exports.SPEC_SHAPE_WRITE_UNSUPPORTED = 'Rewriting spec-shaped (Agent Skills layout) dossiers is not supported yet; edit the file by hand or wait for #1123';
|
|
46
48
|
/** A spec-shaped frontmatter that cannot be read without guessing, or a value that cannot be encoded losslessly. */
|
package/dist/spec-shape.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-shape.js","sourceRoot":"","sources":["../src/spec-shape.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;
|
|
1
|
+
{"version":3,"file":"spec-shape.js","sourceRoot":"","sources":["../src/spec-shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec-shape writer: render a dossier in the Agent Skills layout (#1088, #1123).
|
|
3
|
+
*
|
|
4
|
+
* `spec-shape.ts` maps between the flat logical frontmatter and the spec-shaped
|
|
5
|
+
* object; this module turns that object into file bytes that a strict YAML
|
|
6
|
+
* reader (the Agent Skills validator, a skills runtime) reads back as exactly the
|
|
7
|
+
* same object:
|
|
8
|
+
*
|
|
9
|
+
* - every scalar is quoted, so `"true"`, `"1.0"` or `"2024-01-01"` stay strings
|
|
10
|
+
* instead of being read as a boolean, number or date and rejected;
|
|
11
|
+
* - empty collections are never emitted (`toSpecFrontmatter` already omits an
|
|
12
|
+
* empty `metadata`);
|
|
13
|
+
* - the result is parsed back and compared before it is returned, so a value the
|
|
14
|
+
* YAML layer cannot carry fails here rather than in a signature check later.
|
|
15
|
+
*
|
|
16
|
+
* It also fills the two fields the spec requires at the top level when a legacy
|
|
17
|
+
* dossier never declared them: `name` (from the registry path or file name) and
|
|
18
|
+
* `description` (from `objective`).
|
|
19
|
+
*/
|
|
20
|
+
import type { DossierFrontmatter, ParsedDossier } from './types';
|
|
21
|
+
/**
|
|
22
|
+
* An Agent Skills `name` derived from a registry path, file path or title: the
|
|
23
|
+
* last path segment without its `.ds.md`/`.md` extension, lowercased, with every
|
|
24
|
+
* run of other characters collapsed to one hyphen. Returns undefined when nothing
|
|
25
|
+
* usable is left.
|
|
26
|
+
*/
|
|
27
|
+
export declare function deriveSkillName(source: string): string | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Logical frontmatter with the Agent Skills identity filled in where absent:
|
|
30
|
+
* `name` from `nameSource` (a registry path or file path), else from the title;
|
|
31
|
+
* `description` from `objective`. Present values are kept as they are, even when
|
|
32
|
+
* invalid — the linter reports those; a writer does not rename a dossier.
|
|
33
|
+
*/
|
|
34
|
+
export declare function withSkillIdentity(logical: Record<string, unknown>, nameSource?: string): Record<string, unknown>;
|
|
35
|
+
/**
|
|
36
|
+
* The `metadata` entries of an on-disk spec-shaped frontmatter that belong to
|
|
37
|
+
* other tools (anything outside `dossier.*`). The logical view drops them, so a
|
|
38
|
+
* rewrite has to carry them over explicitly — they are covered by a v3 signature.
|
|
39
|
+
*/
|
|
40
|
+
export declare function foreignMetadata(rawFrontmatter: Record<string, unknown>): Record<string, string>;
|
|
41
|
+
/**
|
|
42
|
+
* Spec-shaped frontmatter for a logical object, keeping the foreign `metadata`
|
|
43
|
+
* entries of the file it is rewriting (pass the parsed original, if any).
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildSpecFrontmatter(logical: Record<string, unknown>, original?: Pick<ParsedDossier, 'rawFrontmatter' | 'shape'>): Record<string, unknown>;
|
|
46
|
+
/**
|
|
47
|
+
* On-disk spec-shaped frontmatter with one Dossier field replaced, everything else
|
|
48
|
+
* (other fields' exact strings, foreign metadata, key order) left as it was.
|
|
49
|
+
*
|
|
50
|
+
* Rewriting a spec-shaped file through the logical view would re-encode every
|
|
51
|
+
* value canonically — a hand-written `'["b", "a"]'` becomes `'["b","a"]'` — and so
|
|
52
|
+
* change bytes a v3 signature covers. Edits that touch one field use this instead.
|
|
53
|
+
*/
|
|
54
|
+
export declare function withSpecField(rawFrontmatter: Record<string, unknown>, field: string, value: unknown): Record<string, unknown>;
|
|
55
|
+
/**
|
|
56
|
+
* Render spec-shaped frontmatter and a body as dossier file content
|
|
57
|
+
* (`---` YAML front matter). Throws `SpecShapeError` when the result would not
|
|
58
|
+
* parse back to the same frontmatter and body.
|
|
59
|
+
*/
|
|
60
|
+
export declare function serializeSpecDossier(spec: Record<string, unknown>, body: string): string;
|
|
61
|
+
/** Spec-shaped file content for logical frontmatter and a body; see `serializeSpecDossier`. */
|
|
62
|
+
export declare function renderSpecDossier(logical: DossierFrontmatter | Record<string, unknown>, body: string, original?: Pick<ParsedDossier, 'rawFrontmatter' | 'shape'>): string;
|
|
63
|
+
//# sourceMappingURL=spec-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-writer.d.ts","sourceRoot":"","sources":["../src/spec-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAUH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAqBjE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAelE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY/F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,GAAG,OAAO,CAAC,GACzD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAyCxF;AAED,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrD,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,GAAG,OAAO,CAAC,GACzD,MAAM,CAKR"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Spec-shape writer: render a dossier in the Agent Skills layout (#1088, #1123).
|
|
4
|
+
*
|
|
5
|
+
* `spec-shape.ts` maps between the flat logical frontmatter and the spec-shaped
|
|
6
|
+
* object; this module turns that object into file bytes that a strict YAML
|
|
7
|
+
* reader (the Agent Skills validator, a skills runtime) reads back as exactly the
|
|
8
|
+
* same object:
|
|
9
|
+
*
|
|
10
|
+
* - every scalar is quoted, so `"true"`, `"1.0"` or `"2024-01-01"` stay strings
|
|
11
|
+
* instead of being read as a boolean, number or date and rejected;
|
|
12
|
+
* - empty collections are never emitted (`toSpecFrontmatter` already omits an
|
|
13
|
+
* empty `metadata`);
|
|
14
|
+
* - the result is parsed back and compared before it is returned, so a value the
|
|
15
|
+
* YAML layer cannot carry fails here rather than in a signature check later.
|
|
16
|
+
*
|
|
17
|
+
* It also fills the two fields the spec requires at the top level when a legacy
|
|
18
|
+
* dossier never declared them: `name` (from the registry path or file name) and
|
|
19
|
+
* `description` (from `objective`).
|
|
20
|
+
*/
|
|
21
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
24
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
25
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
26
|
+
}
|
|
27
|
+
Object.defineProperty(o, k2, desc);
|
|
28
|
+
}) : (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
o[k2] = m[k];
|
|
31
|
+
}));
|
|
32
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
33
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
34
|
+
}) : function(o, v) {
|
|
35
|
+
o["default"] = v;
|
|
36
|
+
});
|
|
37
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
38
|
+
var ownKeys = function(o) {
|
|
39
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
40
|
+
var ar = [];
|
|
41
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
42
|
+
return ar;
|
|
43
|
+
};
|
|
44
|
+
return ownKeys(o);
|
|
45
|
+
};
|
|
46
|
+
return function (mod) {
|
|
47
|
+
if (mod && mod.__esModule) return mod;
|
|
48
|
+
var result = {};
|
|
49
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
50
|
+
__setModuleDefault(result, mod);
|
|
51
|
+
return result;
|
|
52
|
+
};
|
|
53
|
+
})();
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
exports.deriveSkillName = deriveSkillName;
|
|
56
|
+
exports.withSkillIdentity = withSkillIdentity;
|
|
57
|
+
exports.foreignMetadata = foreignMetadata;
|
|
58
|
+
exports.buildSpecFrontmatter = buildSpecFrontmatter;
|
|
59
|
+
exports.withSpecField = withSpecField;
|
|
60
|
+
exports.serializeSpecDossier = serializeSpecDossier;
|
|
61
|
+
exports.renderSpecDossier = renderSpecDossier;
|
|
62
|
+
const yaml_1 = __importStar(require("yaml"));
|
|
63
|
+
const parser_1 = require("./parser");
|
|
64
|
+
const spec_shape_1 = require("./spec-shape");
|
|
65
|
+
const canonical_json_1 = require("./utils/canonical-json");
|
|
66
|
+
/** Longest Agent Skills `name`. */
|
|
67
|
+
const MAX_SKILL_NAME_LENGTH = 64;
|
|
68
|
+
/**
|
|
69
|
+
* DEL and the C1 controls (NEL among them). The YAML stringifier writes them raw;
|
|
70
|
+
* the parser dossiers are read with accepts that, but strict readers (the Agent
|
|
71
|
+
* Skills validator, Python runtimes) reject them or fold NEL into a space — so a
|
|
72
|
+
* signed value would read back differently there. Refused rather than written.
|
|
73
|
+
*/
|
|
74
|
+
const NON_PORTABLE_CHARS = /[\u007f-\u009f]/;
|
|
75
|
+
/** A mapping key every YAML reader takes as that string when written plain. */
|
|
76
|
+
const PLAIN_SAFE_KEY = /^[A-Za-z0-9_.\-/]+$/;
|
|
77
|
+
/** Plain keys a YAML 1.1 reader turns into booleans or null. */
|
|
78
|
+
const YAML11_SPECIAL_KEY = /^(y|Y|yes|Yes|YES|n|N|no|No|NO|on|On|ON|off|Off|OFF|true|True|TRUE|false|False|FALSE|null|Null|NULL|~)$/;
|
|
79
|
+
/**
|
|
80
|
+
* An Agent Skills `name` derived from a registry path, file path or title: the
|
|
81
|
+
* last path segment without its `.ds.md`/`.md` extension, lowercased, with every
|
|
82
|
+
* run of other characters collapsed to one hyphen. Returns undefined when nothing
|
|
83
|
+
* usable is left.
|
|
84
|
+
*/
|
|
85
|
+
function deriveSkillName(source) {
|
|
86
|
+
const segments = source.split(/[\\/]/);
|
|
87
|
+
let base = segments.pop() ?? '';
|
|
88
|
+
// An installed skill is `<name>/SKILL.md`: the directory is the name.
|
|
89
|
+
if (base === 'SKILL.md' && segments.length > 0) {
|
|
90
|
+
base = segments.pop() ?? '';
|
|
91
|
+
}
|
|
92
|
+
const slug = base
|
|
93
|
+
.replace(/@[^@]*$/, '')
|
|
94
|
+
.replace(/(\.ds)?\.md$/i, '')
|
|
95
|
+
.toLowerCase()
|
|
96
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
97
|
+
.slice(0, MAX_SKILL_NAME_LENGTH)
|
|
98
|
+
.replace(/^-+|-+$/g, '');
|
|
99
|
+
return slug || undefined;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Logical frontmatter with the Agent Skills identity filled in where absent:
|
|
103
|
+
* `name` from `nameSource` (a registry path or file path), else from the title;
|
|
104
|
+
* `description` from `objective`. Present values are kept as they are, even when
|
|
105
|
+
* invalid — the linter reports those; a writer does not rename a dossier.
|
|
106
|
+
*/
|
|
107
|
+
function withSkillIdentity(logical, nameSource) {
|
|
108
|
+
const out = { ...logical };
|
|
109
|
+
if (out.name === undefined) {
|
|
110
|
+
const name = (nameSource && deriveSkillName(nameSource)) ||
|
|
111
|
+
(typeof out.title === 'string' ? deriveSkillName(out.title) : undefined);
|
|
112
|
+
if (name) {
|
|
113
|
+
out.name = name;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (out.description === undefined && typeof out.objective === 'string') {
|
|
117
|
+
out.description = out.objective;
|
|
118
|
+
}
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The `metadata` entries of an on-disk spec-shaped frontmatter that belong to
|
|
123
|
+
* other tools (anything outside `dossier.*`). The logical view drops them, so a
|
|
124
|
+
* rewrite has to carry them over explicitly — they are covered by a v3 signature.
|
|
125
|
+
*/
|
|
126
|
+
function foreignMetadata(rawFrontmatter) {
|
|
127
|
+
const metadata = rawFrontmatter.metadata;
|
|
128
|
+
if (metadata === null || typeof metadata !== 'object' || Array.isArray(metadata)) {
|
|
129
|
+
return {};
|
|
130
|
+
}
|
|
131
|
+
const out = {};
|
|
132
|
+
for (const [key, value] of Object.entries(metadata)) {
|
|
133
|
+
if (!key.startsWith(spec_shape_1.DOSSIER_METADATA_PREFIX) && typeof value === 'string') {
|
|
134
|
+
out[key] = value;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return out;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Spec-shaped frontmatter for a logical object, keeping the foreign `metadata`
|
|
141
|
+
* entries of the file it is rewriting (pass the parsed original, if any).
|
|
142
|
+
*/
|
|
143
|
+
function buildSpecFrontmatter(logical, original) {
|
|
144
|
+
const spec = (0, spec_shape_1.toSpecFrontmatter)(logical);
|
|
145
|
+
const foreign = original?.shape === 'spec' ? foreignMetadata(original.rawFrontmatter) : {};
|
|
146
|
+
if (Object.keys(foreign).length > 0) {
|
|
147
|
+
spec.metadata = { ...(spec.metadata ?? {}), ...foreign };
|
|
148
|
+
}
|
|
149
|
+
return spec;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* On-disk spec-shaped frontmatter with one Dossier field replaced, everything else
|
|
153
|
+
* (other fields' exact strings, foreign metadata, key order) left as it was.
|
|
154
|
+
*
|
|
155
|
+
* Rewriting a spec-shaped file through the logical view would re-encode every
|
|
156
|
+
* value canonically — a hand-written `'["b", "a"]'` becomes `'["b","a"]'` — and so
|
|
157
|
+
* change bytes a v3 signature covers. Edits that touch one field use this instead.
|
|
158
|
+
*/
|
|
159
|
+
function withSpecField(rawFrontmatter, field, value) {
|
|
160
|
+
const metadata = rawFrontmatter.metadata ?? {};
|
|
161
|
+
return {
|
|
162
|
+
...rawFrontmatter,
|
|
163
|
+
metadata: {
|
|
164
|
+
...metadata,
|
|
165
|
+
[`${spec_shape_1.DOSSIER_METADATA_PREFIX}${field}`]: (0, spec_shape_1.encodeSpecValue)(value, field),
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Render spec-shaped frontmatter and a body as dossier file content
|
|
171
|
+
* (`---` YAML front matter). Throws `SpecShapeError` when the result would not
|
|
172
|
+
* parse back to the same frontmatter and body.
|
|
173
|
+
*/
|
|
174
|
+
function serializeSpecDossier(spec, body) {
|
|
175
|
+
const doc = new yaml_1.default.Document(spec);
|
|
176
|
+
(0, yaml_1.visit)(doc, {
|
|
177
|
+
Scalar(key, node) {
|
|
178
|
+
if (typeof node.value !== 'string') {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (NON_PORTABLE_CHARS.test(node.value)) {
|
|
182
|
+
throw new spec_shape_1.SpecShapeError(`${JSON.stringify(node.value.slice(0, 40))} contains DEL or a C1 control character, which strict YAML readers reject or alter`);
|
|
183
|
+
}
|
|
184
|
+
if (key === 'key' &&
|
|
185
|
+
PLAIN_SAFE_KEY.test(node.value) &&
|
|
186
|
+
!YAML11_SPECIAL_KEY.test(node.value)) {
|
|
187
|
+
node.type = yaml_1.Scalar.PLAIN;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
// Single quotes keep JSON-encoded values readable; a line break folds
|
|
191
|
+
// in single quotes, so those get double quotes and an explicit `\n`.
|
|
192
|
+
node.type = node.value.includes('\n') ? yaml_1.Scalar.QUOTE_DOUBLE : yaml_1.Scalar.QUOTE_SINGLE;
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
const content = `---\n${doc.toString({ lineWidth: 0 })}---\n${body}`;
|
|
197
|
+
let reparsed;
|
|
198
|
+
try {
|
|
199
|
+
reparsed = (0, parser_1.parseDossierContent)(content);
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
throw new spec_shape_1.SpecShapeError('Spec-shaped frontmatter does not parse back', { cause: err });
|
|
203
|
+
}
|
|
204
|
+
if (reparsed.shape !== 'spec' ||
|
|
205
|
+
reparsed.body !== body ||
|
|
206
|
+
(0, canonical_json_1.stableStringify)(reparsed.rawFrontmatter) !== (0, canonical_json_1.stableStringify)(spec)) {
|
|
207
|
+
throw new spec_shape_1.SpecShapeError('Spec-shaped frontmatter does not round-trip through YAML');
|
|
208
|
+
}
|
|
209
|
+
return content;
|
|
210
|
+
}
|
|
211
|
+
/** Spec-shaped file content for logical frontmatter and a body; see `serializeSpecDossier`. */
|
|
212
|
+
function renderSpecDossier(logical, body, original) {
|
|
213
|
+
return serializeSpecDossier(buildSpecFrontmatter(logical, original), body);
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=spec-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-writer.js","sourceRoot":"","sources":["../src/spec-writer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-dossier/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.0-next.638.1",
|
|
4
4
|
"description": "TypeScript library for parsing, signing, and verifying signed, versioned agent skills used in model-driven orchestration.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -57,7 +57,8 @@
|
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@aws-sdk/client-kms": "^3.927.0",
|
|
59
59
|
"ajv": "^8.18.0",
|
|
60
|
-
"gray-matter": "^4.0.3"
|
|
60
|
+
"gray-matter": "^4.0.3",
|
|
61
|
+
"yaml": "^2.8.3"
|
|
61
62
|
},
|
|
62
63
|
"devDependencies": {
|
|
63
64
|
"@types/node": "^24.10.0",
|