@agent-teams/docs-protocol 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +201 -0
  3. package/README.md +92 -0
  4. package/dist/adapters/adoption-input.d.ts +9 -0
  5. package/dist/adapters/adoption-input.d.ts.map +1 -0
  6. package/dist/adapters/adoption-input.js +72 -0
  7. package/dist/adapters/adoption-input.js.map +1 -0
  8. package/dist/adapters/adoption-package-identity.d.ts +7 -0
  9. package/dist/adapters/adoption-package-identity.d.ts.map +1 -0
  10. package/dist/adapters/adoption-package-identity.js +69 -0
  11. package/dist/adapters/adoption-package-identity.js.map +1 -0
  12. package/dist/adapters/docs-command-envelope-schema-validator.d.ts +2 -0
  13. package/dist/adapters/docs-command-envelope-schema-validator.d.ts.map +1 -0
  14. package/dist/adapters/docs-command-envelope-schema-validator.js +24 -0
  15. package/dist/adapters/docs-command-envelope-schema-validator.js.map +1 -0
  16. package/dist/adapters/docs-profile-schema-validator.d.ts +2 -0
  17. package/dist/adapters/docs-profile-schema-validator.d.ts.map +1 -0
  18. package/dist/adapters/docs-profile-schema-validator.js +28 -0
  19. package/dist/adapters/docs-profile-schema-validator.js.map +1 -0
  20. package/dist/adapters/foundation-docs-port.d.ts +12 -0
  21. package/dist/adapters/foundation-docs-port.d.ts.map +1 -0
  22. package/dist/adapters/foundation-docs-port.js +108 -0
  23. package/dist/adapters/foundation-docs-port.js.map +1 -0
  24. package/dist/adapters/node-adoption-inspector.d.ts +5 -0
  25. package/dist/adapters/node-adoption-inspector.d.ts.map +1 -0
  26. package/dist/adapters/node-adoption-inspector.js +102 -0
  27. package/dist/adapters/node-adoption-inspector.js.map +1 -0
  28. package/dist/adapters/node-code-anchor-matcher.d.ts +5 -0
  29. package/dist/adapters/node-code-anchor-matcher.d.ts.map +1 -0
  30. package/dist/adapters/node-code-anchor-matcher.js +65 -0
  31. package/dist/adapters/node-code-anchor-matcher.js.map +1 -0
  32. package/dist/adapters/node-profile-reader.d.ts +9 -0
  33. package/dist/adapters/node-profile-reader.d.ts.map +1 -0
  34. package/dist/adapters/node-profile-reader.js +118 -0
  35. package/dist/adapters/node-profile-reader.js.map +1 -0
  36. package/dist/application/authority-handshake.d.ts +14 -0
  37. package/dist/application/authority-handshake.d.ts.map +1 -0
  38. package/dist/application/authority-handshake.js +15 -0
  39. package/dist/application/authority-handshake.js.map +1 -0
  40. package/dist/application/docs-new-completion.d.ts +33 -0
  41. package/dist/application/docs-new-completion.d.ts.map +1 -0
  42. package/dist/application/docs-new-completion.js +226 -0
  43. package/dist/application/docs-new-completion.js.map +1 -0
  44. package/dist/application/docs-protocol.d.ts +168 -0
  45. package/dist/application/docs-protocol.d.ts.map +1 -0
  46. package/dist/application/docs-protocol.js +450 -0
  47. package/dist/application/docs-protocol.js.map +1 -0
  48. package/dist/cli.d.ts +3 -0
  49. package/dist/cli.d.ts.map +1 -0
  50. package/dist/cli.js +4 -0
  51. package/dist/cli.js.map +1 -0
  52. package/dist/composition/cli.d.ts +4 -0
  53. package/dist/composition/cli.d.ts.map +1 -0
  54. package/dist/composition/cli.js +436 -0
  55. package/dist/composition/cli.js.map +1 -0
  56. package/dist/composition/node-docs-api.d.ts +148 -0
  57. package/dist/composition/node-docs-api.d.ts.map +1 -0
  58. package/dist/composition/node-docs-api.js +38 -0
  59. package/dist/composition/node-docs-api.js.map +1 -0
  60. package/dist/domain/document-semantics.d.ts +7 -0
  61. package/dist/domain/document-semantics.d.ts.map +1 -0
  62. package/dist/domain/document-semantics.js +146 -0
  63. package/dist/domain/document-semantics.js.map +1 -0
  64. package/dist/domain/model.d.ts +285 -0
  65. package/dist/domain/model.d.ts.map +1 -0
  66. package/dist/domain/model.js +3 -0
  67. package/dist/domain/model.js.map +1 -0
  68. package/dist/domain/profile-policy.d.ts +7 -0
  69. package/dist/domain/profile-policy.d.ts.map +1 -0
  70. package/dist/domain/profile-policy.js +109 -0
  71. package/dist/domain/profile-policy.js.map +1 -0
  72. package/dist/index.d.ts +6 -0
  73. package/dist/index.d.ts.map +1 -0
  74. package/dist/index.js +4 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/qualification/index.d.ts +23 -0
  77. package/dist/qualification/index.d.ts.map +1 -0
  78. package/dist/qualification/index.js +462 -0
  79. package/dist/qualification/index.js.map +1 -0
  80. package/package.json +64 -0
  81. package/schemas/docs-protocol/v1.schema.json +12 -0
  82. package/schemas/docs-protocol-command-envelope/v1.schema.json +239 -0
  83. package/schemas/docs-protocol-profile/v1.schema.json +46 -0
@@ -0,0 +1,450 @@
1
+ import { DOCS_PROTOCOL_ID, DOCS_PROTOCOL_VERSION } from "../domain/model.js";
2
+ import { DocsProfileError, projectReachability } from "../domain/profile-policy.js";
3
+ import { assertDocumentMetadata, normalizeCodeAnchors, normalizeDocumentId, normalizeDocumentIds } from "../domain/document-semantics.js";
4
+ import { planAuthorityStable } from "./authority-handshake.js";
5
+ import { boundedDiagnostics, completeDocsNewApply, inspectCorpusSemantics, inspectRecapturedAnchors, mergeDiagnostics } from "./docs-new-completion.js";
6
+ const BINARY = (left, right) => Buffer.compare(Buffer.from(left), Buffer.from(right));
7
+ const GOVERNED_METADATA = new Set(["id", "type", "status", "owner", "summary", "related", "title", "slug", "destination"]);
8
+ const BLOCKER_STATUSES = new Set(["deferred", "open"]);
9
+ function withSignal(signal) {
10
+ return signal === undefined ? Object.freeze({}) : Object.freeze({ signal });
11
+ }
12
+ function envelope(command, outcome, result, diagnostics = []) {
13
+ return Object.freeze({
14
+ schemaVersion: 1,
15
+ protocol: Object.freeze({ id: DOCS_PROTOCOL_ID, version: DOCS_PROTOCOL_VERSION }),
16
+ command,
17
+ outcome,
18
+ diagnostics: boundedDiagnostics(diagnostics),
19
+ result
20
+ });
21
+ }
22
+ function execution(command, outcome, result, diagnostics = []) {
23
+ const exitCode = outcome === "success" ? 0
24
+ : outcome === "invalid-input" ? 2
25
+ : outcome === "execution-failure" ? 3
26
+ : outcome === "cancelled" ? 130
27
+ : 1;
28
+ return Object.freeze({ envelope: envelope(command, outcome, result, diagnostics), exitCode });
29
+ }
30
+ function typeOrThrow(types, type) {
31
+ const match = types.find((entry) => entry.type === type);
32
+ if (match === undefined) {
33
+ throw new DocsProfileError(`Document type ${type} is not declared by the protocol profile.`);
34
+ }
35
+ return match;
36
+ }
37
+ function assertOwnerAllowed(type, owner) {
38
+ if (!type.allowedOwnerIds.includes(owner)) {
39
+ throw new DocsProfileError(`Owner ${owner} is not allowed for ${type.type}.`);
40
+ }
41
+ }
42
+ function inspectNewAnchors(anchors, matchedPatterns) {
43
+ const required = anchors.filter(({ enforcement, pattern }) => enforcement === "required" && !matchedPatterns.includes(pattern));
44
+ if (required.length > 0) {
45
+ throw new DocsProfileError(`Required code anchor patterns must match current regular files: ${required.map(({ pattern }) => pattern).join(", ")}.`);
46
+ }
47
+ return Object.freeze(anchors
48
+ .filter(({ enforcement, pattern }) => enforcement === "advisory" && !matchedPatterns.includes(pattern))
49
+ .map(({ pattern }) => ({ ruleId: "docs.code-anchor.advisory-unmatched", severity: "warning", phase: "authority", subject: pattern, message: `Advisory code anchor ${pattern} does not match a current regular file.` })));
50
+ }
51
+ function receiptOutcome(receipt) {
52
+ switch (receipt.outcome) {
53
+ case "applied":
54
+ case "already-applied": return "success";
55
+ case "authority-stale": return "authority-stale";
56
+ case "cancelled": return "cancelled";
57
+ case "recovery-required":
58
+ case "manual-recovery-required": return "recovery-required";
59
+ case "failed-before-publication": return "execution-failure";
60
+ case "rejected": return "conflict";
61
+ }
62
+ }
63
+ function receiptDiagnostics(receipt) {
64
+ return receipt.diagnostics.map((entry) => ({ ...entry }));
65
+ }
66
+ function receiptEvidence(receipt) {
67
+ return Object.freeze({
68
+ outcome: receipt.outcome,
69
+ commit: Object.freeze({
70
+ state: receipt.commit.state,
71
+ publication: receipt.commit.publication,
72
+ recoverability: receipt.commit.recoverability
73
+ }),
74
+ ...(receipt.schemaVersion === 2
75
+ ? { directoryMaterialization: receipt.directoryMaterialization }
76
+ : {})
77
+ });
78
+ }
79
+ function documentWriteState(receipt) {
80
+ if (receipt.commit.state === "committed") {
81
+ return receipt.commit.publication === "preexisting-exact"
82
+ ? "already-applied"
83
+ : "applied";
84
+ }
85
+ if (receipt.commit.publication === "published") {
86
+ return "published-recovery-required";
87
+ }
88
+ if (receipt.commit.publication === "unknown") {
89
+ return "unknown";
90
+ }
91
+ return "unchanged";
92
+ }
93
+ function recoveryWriteState(receipt) {
94
+ if (receipt.commit.state === "committed") {
95
+ return "committed";
96
+ }
97
+ if (receipt.commit.publication === "published") {
98
+ return "published-recovery-required";
99
+ }
100
+ if (receipt.commit.publication === "unknown") {
101
+ return "unknown";
102
+ }
103
+ return "unchanged";
104
+ }
105
+ function relationMetadata(request, blockedByKey, codeAnchorsKey) {
106
+ assertDocumentMetadata(request.additionalMetadata ?? {});
107
+ const metadata = { ...request.additionalMetadata };
108
+ for (const key of Object.keys(metadata)) {
109
+ if (GOVERNED_METADATA.has(key) || key === blockedByKey || key === codeAnchorsKey) {
110
+ throw new DocsProfileError(`Additional metadata cannot replace governed key ${key}.`);
111
+ }
112
+ }
113
+ if (request.blockedBy !== undefined && request.blockedBy.length > 0) {
114
+ metadata[blockedByKey] = request.blockedBy;
115
+ }
116
+ if (request.codeAnchors !== undefined && request.codeAnchors.length > 0) {
117
+ metadata[codeAnchorsKey] = request.codeAnchors.map(({ enforcement, pattern }) => ({ enforcement, pattern }));
118
+ }
119
+ return Object.keys(metadata).length === 0 ? undefined : Object.freeze(metadata);
120
+ }
121
+ function uniqueSorted(values, subject) {
122
+ return normalizeDocumentIds(values, subject);
123
+ }
124
+ function validateNewRelations(input) {
125
+ if (input.catalog.status !== "complete") {
126
+ throw new DocsProfileError("A complete Foundation v2 catalog is required before authoring.");
127
+ }
128
+ const blockedBy = uniqueSorted(input.blockedBy, "blocked_by");
129
+ const relatedInput = uniqueSorted(input.related, "related");
130
+ const related = Object.freeze([...new Set([...relatedInput, ...blockedBy])].toSorted(BINARY));
131
+ if (related.includes(input.documentId)) {
132
+ throw new DocsProfileError("A document cannot relate to or be blocked by itself.");
133
+ }
134
+ if ((input.initialStatus === "accepted" || input.initialStatus === "active") && blockedBy.length > 0) {
135
+ throw new DocsProfileError(`A type with initial status ${input.initialStatus} cannot be blocked.`);
136
+ }
137
+ const byId = new Map(input.catalog.documents.map((document) => [document.id, document]));
138
+ for (const id of related) {
139
+ if (!byId.has(id)) {
140
+ throw new DocsProfileError(`Referenced document ${id} does not exist in the complete catalog.`);
141
+ }
142
+ }
143
+ for (const id of blockedBy) {
144
+ const blocker = byId.get(id);
145
+ if (blocker.type !== "open-decision" || !BLOCKER_STATUSES.has(blocker.status)) {
146
+ throw new DocsProfileError(`Blocker ${id} must be an open-decision with open or deferred status.`);
147
+ }
148
+ }
149
+ return Object.freeze({ blockedBy, related });
150
+ }
151
+ function projectTransaction(inspection) {
152
+ if (inspection.state === "idle") {
153
+ return Object.freeze({ state: "idle" });
154
+ }
155
+ if (inspection.state === "recoverable") {
156
+ return Object.freeze({
157
+ state: "recoverable",
158
+ transactionKind: "document",
159
+ recovery: Object.freeze({
160
+ commandId: "docs.recover",
161
+ args: Object.freeze({
162
+ exactFoundationBuildIdentity: inspection.recovery.exactFoundationBuildIdentity,
163
+ exactFoundationVersion: inspection.recovery.exactFoundationVersion
164
+ })
165
+ })
166
+ });
167
+ }
168
+ return Object.freeze({
169
+ state: "manual-recovery-required",
170
+ ...(inspection.transactionKind === undefined ? {} : { transactionKind: inspection.transactionKind }),
171
+ reason: inspection.reason,
172
+ ...(inspection.recovery === undefined ? {} : { recovery: inspection.recovery })
173
+ });
174
+ }
175
+ export class DocsProtocol {
176
+ #adoption;
177
+ #anchors;
178
+ #foundation;
179
+ #profiles;
180
+ constructor(input) {
181
+ this.#adoption = input.adoption;
182
+ this.#anchors = input.anchors;
183
+ this.#foundation = input.foundation;
184
+ this.#profiles = input.profiles;
185
+ }
186
+ async info(input) {
187
+ const profile = await this.#profiles.read(input);
188
+ const description = await this.#foundation.describe({ consumerRoot: input.consumerRoot, profilePath: profile.foundationProfile.path, ...withSignal(input.signal) });
189
+ const result = Object.freeze({
190
+ kind: "info",
191
+ projectId: description.projectId,
192
+ protocol: profile.protocol,
193
+ foundationProfile: profile.foundationProfile,
194
+ agentWorkflow: profile.agentWorkflow,
195
+ metadataSchemaPath: description.metadataSchemaPath,
196
+ metadataSidecar: description.metadataSidecar,
197
+ ownerIds: description.ownerIds,
198
+ types: description.types,
199
+ semanticValidatorIds: profile.semanticValidatorIds
200
+ });
201
+ return execution("docs.info", "success", result);
202
+ }
203
+ async find(input) {
204
+ const profile = await this.#profiles.read(input);
205
+ const query = Object.freeze({
206
+ ...input.query,
207
+ ...(input.query.related === undefined ? {} : { related: normalizeDocumentId(input.query.related, "related") }),
208
+ ...(input.query.blockedBy === undefined ? {} : { blockedBy: normalizeDocumentId(input.query.blockedBy, "blocked_by") })
209
+ });
210
+ await this.#foundation.describe({
211
+ consumerRoot: input.consumerRoot,
212
+ profilePath: profile.foundationProfile.path,
213
+ ...withSignal(input.signal)
214
+ });
215
+ const documents = await this.#foundation.find({
216
+ consumerRoot: input.consumerRoot,
217
+ profilePath: profile.foundationProfile.path,
218
+ query,
219
+ ...withSignal(input.signal)
220
+ });
221
+ const matches = documents.filter((document) => (query.related === undefined || document.related.includes(query.related)) &&
222
+ (query.blockedBy === undefined || document.blockedBy.includes(query.blockedBy))).toSorted((left, right) => BINARY(left.id, right.id) || BINARY(left.repositoryPath, right.repositoryPath));
223
+ return execution("docs.find", "success", Object.freeze({ kind: "find", matches: matches.length, documents: Object.freeze(matches) }));
224
+ }
225
+ async newDocument(request) {
226
+ const profile = await this.#profiles.read(request);
227
+ const transaction = await this.#foundation.inspect(request.consumerRoot);
228
+ if (transaction.state !== "idle") {
229
+ return execution("docs.new", "recovery-required", Object.freeze({
230
+ kind: "new",
231
+ reservation: "none",
232
+ writeState: "blocked",
233
+ transaction: projectTransaction(transaction)
234
+ }), [{
235
+ ruleId: "docs.new.transaction-active",
236
+ severity: "error",
237
+ phase: "recovery",
238
+ subject: "foundation.transaction",
239
+ message: transaction.state === "recoverable"
240
+ ? "A recoverable Foundation document transaction must be completed first."
241
+ : transaction.reason
242
+ }]);
243
+ }
244
+ const description = await this.#foundation.describe({ consumerRoot: request.consumerRoot, profilePath: profile.foundationProfile.path, ...withSignal(request.signal) });
245
+ const type = typeOrThrow(description.types, request.intent.type);
246
+ assertOwnerAllowed(type, request.intent.owner);
247
+ const adoptionDiagnostics = await this.#adoption.inspect({
248
+ authorityPaths: description.authorityPaths,
249
+ consumerRoot: request.consumerRoot,
250
+ profilePath: request.profilePath,
251
+ skillPath: profile.agentWorkflow.skillPath
252
+ });
253
+ if (adoptionDiagnostics.some(({ severity }) => severity === "error")) {
254
+ return execution("docs.new", "violation", Object.freeze({
255
+ kind: "new",
256
+ reservation: "none",
257
+ writeState: "blocked",
258
+ reason: "adoption-invalid"
259
+ }), adoptionDiagnostics);
260
+ }
261
+ const catalog = await this.#foundation.buildCatalog({ consumerRoot: request.consumerRoot, profilePath: profile.foundationProfile.path, ...withSignal(request.signal) });
262
+ const relations = validateNewRelations({
263
+ blockedBy: request.blockedBy ?? [],
264
+ catalog,
265
+ documentId: request.intent.id,
266
+ initialStatus: type.initialStatus,
267
+ related: request.related ?? []
268
+ });
269
+ const codeAnchors = normalizeCodeAnchors(request.codeAnchors ?? []);
270
+ const matchedPatterns = await this.#anchors.matchedPatterns({
271
+ consumerRoot: request.consumerRoot,
272
+ patterns: codeAnchors.map(({ pattern }) => pattern),
273
+ ...withSignal(request.signal)
274
+ });
275
+ const anchorDiagnostics = mergeDiagnostics(adoptionDiagnostics, inspectNewAnchors(codeAnchors, matchedPatterns));
276
+ const normalizedRequest = { ...request, blockedBy: relations.blockedBy, codeAnchors };
277
+ const additionalMetadata = relationMetadata(normalizedRequest, "blocked_by", "code_anchors");
278
+ const plan = await this.#foundation.plan({
279
+ consumerRoot: request.consumerRoot,
280
+ profilePath: profile.foundationProfile.path,
281
+ intent: {
282
+ schemaVersion: 1,
283
+ ...request.intent,
284
+ ...(relations.related.length === 0 ? {} : { related: relations.related }),
285
+ ...(additionalMetadata === undefined ? {} : { additionalMetadata })
286
+ },
287
+ parentPolicy: "create-missing-real-directories",
288
+ ...withSignal(request.signal)
289
+ });
290
+ const [descriptionAfterPlan, catalogAfterPlan] = await Promise.all([
291
+ this.#foundation.describe({ consumerRoot: request.consumerRoot, profilePath: profile.foundationProfile.path, ...withSignal(request.signal) }),
292
+ this.#foundation.buildCatalog({ consumerRoot: request.consumerRoot, profilePath: profile.foundationProfile.path, ...withSignal(request.signal) })
293
+ ]);
294
+ if (!planAuthorityStable(plan, { catalog, description }, { catalog: catalogAfterPlan, description: descriptionAfterPlan })) {
295
+ return execution("docs.new", "authority-stale", Object.freeze({
296
+ kind: "new",
297
+ reservation: "none",
298
+ writeState: "blocked",
299
+ reason: "authority-stale"
300
+ }), [{
301
+ ruleId: "docs.new.authority-stale",
302
+ severity: "error",
303
+ phase: "authority",
304
+ subject: profile.foundationProfile.path,
305
+ message: "Documentation authority or catalog changed across Plan compilation; retry from a fresh snapshot."
306
+ }]);
307
+ }
308
+ const typeAfterPlan = typeOrThrow(descriptionAfterPlan.types, request.intent.type);
309
+ validateNewRelations({ blockedBy: relations.blockedBy, catalog: catalogAfterPlan, documentId: request.intent.id, initialStatus: typeAfterPlan.initialStatus, related: relations.related });
310
+ const heading = typeAfterPlan.heading.kind === "id-colon-title" ? `${request.intent.id}: ${request.intent.title}` : request.intent.title;
311
+ const reachability = projectReachability(typeAfterPlan, plan.destination, heading);
312
+ if (!request.apply) {
313
+ return execution("docs.new", "success", Object.freeze({ kind: "new", reservation: "none", writeState: "preview", documentPath: plan.destination, planDigest: plan.planDigest, reachability }), anchorDiagnostics);
314
+ }
315
+ // This is the last cooperative authority check before Apply. A malicious
316
+ // same-OS-user can still race the following syscall; portable Node has no
317
+ // directory-handle-relative transaction primitive that closes that gap.
318
+ const matchedImmediatelyBeforeApply = await this.#anchors.matchedPatterns({
319
+ consumerRoot: request.consumerRoot,
320
+ patterns: codeAnchors.map(({ pattern }) => pattern),
321
+ ...withSignal(request.signal)
322
+ });
323
+ const anchorsBeforeApply = inspectRecapturedAnchors(codeAnchors, matchedImmediatelyBeforeApply);
324
+ const diagnosticsBeforeApply = mergeDiagnostics(anchorDiagnostics, anchorsBeforeApply.diagnostics);
325
+ if (anchorsBeforeApply.requiredMissing) {
326
+ return execution("docs.new", "authority-stale", Object.freeze({
327
+ kind: "new",
328
+ reservation: "none",
329
+ writeState: "blocked",
330
+ reason: "authority-stale"
331
+ }), diagnosticsBeforeApply);
332
+ }
333
+ const receipt = await this.#foundation.apply({ consumerRoot: request.consumerRoot, plan, ...withSignal(request.signal) });
334
+ const receiptResult = {
335
+ kind: "new",
336
+ reservation: "none",
337
+ writeState: documentWriteState(receipt),
338
+ documentPath: plan.destination,
339
+ planDigest: plan.planDigest,
340
+ receiptDigest: receipt.receiptDigest,
341
+ receiptOutcome: receipt.outcome,
342
+ receipt: receiptEvidence(receipt)
343
+ };
344
+ const completion = await completeDocsNewApply({
345
+ anchors: this.#anchors,
346
+ codeAnchors,
347
+ consumerRoot: request.consumerRoot,
348
+ diagnostics: mergeDiagnostics(diagnosticsBeforeApply, receiptDiagnostics(receipt)),
349
+ foundation: this.#foundation, outcome: receiptOutcome(receipt),
350
+ plan,
351
+ profilePath: profile.foundationProfile.path,
352
+ reachability,
353
+ receipt,
354
+ ...withSignal(request.signal)
355
+ });
356
+ return execution("docs.new", completion.outcome, Object.freeze({
357
+ ...receiptResult,
358
+ ...(completion.writeState === undefined ? {} : { writeState: completion.writeState }),
359
+ ...(completion.reachability === undefined ? {} : { reachability: completion.reachability })
360
+ }), completion.diagnostics);
361
+ }
362
+ async doctor(input) {
363
+ const [environment, inspection] = await Promise.all([
364
+ this.#foundation.inspectEnvironment({ consumerRoot: input.consumerRoot, ...withSignal(input.signal) }),
365
+ this.#foundation.inspect(input.consumerRoot)
366
+ ]);
367
+ let projectId;
368
+ let diagnostics = [];
369
+ try {
370
+ const profile = await this.#profiles.read(input);
371
+ const description = await this.#foundation.describe({ consumerRoot: input.consumerRoot, profilePath: profile.foundationProfile.path, ...withSignal(input.signal) });
372
+ projectId = description.projectId;
373
+ diagnostics = await this.#adoption.inspect({
374
+ authorityPaths: description.authorityPaths,
375
+ consumerRoot: input.consumerRoot,
376
+ profilePath: input.profilePath,
377
+ skillPath: profile.agentWorkflow.skillPath
378
+ });
379
+ }
380
+ catch (error) {
381
+ if (error instanceof Error && error.name === "AbortError") {
382
+ throw error;
383
+ }
384
+ diagnostics = Object.freeze([{
385
+ ruleId: "docs.doctor.authority-unavailable",
386
+ severity: "error",
387
+ phase: "authority",
388
+ subject: input.profilePath,
389
+ message: error instanceof Error ? error.message : "Documentation authoring authority is unavailable."
390
+ }]);
391
+ }
392
+ const outcome = inspection.state !== "idle"
393
+ ? "recovery-required"
394
+ : diagnostics.some(({ severity }) => severity === "error")
395
+ ? "violation"
396
+ : "success";
397
+ return execution("docs.doctor", outcome, Object.freeze({
398
+ kind: "doctor",
399
+ protocol: Object.freeze({ id: DOCS_PROTOCOL_ID, version: DOCS_PROTOCOL_VERSION }),
400
+ ...(projectId === undefined ? {} : { projectId }),
401
+ environment,
402
+ transaction: projectTransaction(inspection)
403
+ }), diagnostics);
404
+ }
405
+ async recover(input) {
406
+ const inspection = await this.#foundation.inspect(input.consumerRoot);
407
+ if (inspection.state === "idle") {
408
+ return execution("docs.recover", "success", Object.freeze({ kind: "recover", transactionState: "no-pending-transaction", writeState: "unchanged" }));
409
+ }
410
+ if (inspection.state !== "recoverable") {
411
+ return execution("docs.recover", "recovery-required", Object.freeze({ kind: "recover", transactionState: "manual-required", writeState: "unknown", transaction: projectTransaction(inspection) }));
412
+ }
413
+ const receipt = await this.#foundation.recover({ consumerRoot: input.consumerRoot, ...withSignal(input.signal) });
414
+ return execution("docs.recover", receiptOutcome(receipt), Object.freeze({
415
+ kind: "recover",
416
+ transactionState: receipt.outcome === "applied" || receipt.outcome === "already-applied" ? "recovered" : "recovery-required",
417
+ writeState: recoveryWriteState(receipt),
418
+ receiptDigest: receipt.receiptDigest,
419
+ receipt: receiptEvidence(receipt)
420
+ }), receiptDiagnostics(receipt));
421
+ }
422
+ async check(input) {
423
+ const profile = await this.#profiles.read(input);
424
+ const description = await this.#foundation.describe({ consumerRoot: input.consumerRoot, profilePath: profile.foundationProfile.path, ...withSignal(input.signal) });
425
+ const catalog = await this.#foundation.buildCatalog({ consumerRoot: input.consumerRoot, profilePath: profile.foundationProfile.path, ...withSignal(input.signal) });
426
+ input.signal?.throwIfAborted();
427
+ const semanticDiagnostics = await inspectCorpusSemantics({
428
+ anchors: this.#anchors,
429
+ catalog,
430
+ consumerRoot: input.consumerRoot,
431
+ ...withSignal(input.signal)
432
+ });
433
+ const adoptionDiagnostics = await this.#adoption.inspect({
434
+ authorityPaths: description.authorityPaths,
435
+ consumerRoot: input.consumerRoot,
436
+ profilePath: input.profilePath,
437
+ skillPath: profile.agentWorkflow.skillPath
438
+ });
439
+ const transaction = await this.#foundation.inspect(input.consumerRoot);
440
+ const diagnostics = [
441
+ ...catalog.diagnostics.map((entry) => ({ ...entry, phase: "authority" })),
442
+ ...semanticDiagnostics,
443
+ ...adoptionDiagnostics,
444
+ ...(transaction.state === "idle" ? [] : [{ ruleId: "docs.adoption.recovery-state-active", severity: "error", phase: "recovery", subject: "foundation.transaction", message: "Active or preserved Foundation recovery state must be resolved before docs:check succeeds." }])
445
+ ];
446
+ const valid = catalog.status === "complete" && catalog.projectId === description.projectId && !diagnostics.some(({ severity }) => severity === "error");
447
+ return execution("docs.check", valid ? "success" : "violation", Object.freeze({ kind: "check", projectId: description.projectId, catalogStatus: catalog.status, documents: catalog.documents.length, foundationProfile: profile.foundationProfile, metadataSidecar: description.metadataSidecar, semanticValidatorIds: profile.semanticValidatorIds, valid }), diagnostics);
448
+ }
449
+ }
450
+ //# sourceMappingURL=docs-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-protocol.js","sourceRoot":"","sources":["../../src/application/docs-protocol.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { runDocsCli } from "./composition/cli.js";
3
+ process.exitCode = await runDocsCli(process.argv.slice(2));
4
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,CAAC,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type DocsCommandEnvelope } from "../domain/model.js";
2
+ export declare function renderDocsHuman(envelope: DocsCommandEnvelope): string;
3
+ export declare function runDocsCli(argv: readonly string[]): Promise<number>;
4
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/composition/cli.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,mBAAmB,EAGzB,MAAM,oBAAoB,CAAC;AAsT5B,wBAAgB,eAAe,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CA+BrE;AA6CD,wBAAsB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCzE"}