@agent-teams/engineering-foundation 0.13.1 → 0.15.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 (131) hide show
  1. package/dist/canonical-json.d.ts +12 -0
  2. package/dist/canonical-json.d.ts.map +1 -0
  3. package/dist/canonical-json.js +151 -0
  4. package/dist/canonical-json.js.map +1 -0
  5. package/dist/document-authoring/adapters/canonical-markdown.d.ts +14 -0
  6. package/dist/document-authoring/adapters/canonical-markdown.d.ts.map +1 -0
  7. package/dist/document-authoring/adapters/canonical-markdown.js +354 -0
  8. package/dist/document-authoring/adapters/canonical-markdown.js.map +1 -0
  9. package/dist/document-authoring/adapters/node/load-validated-document-authoring-profile.d.ts +31 -0
  10. package/dist/document-authoring/adapters/node/load-validated-document-authoring-profile.d.ts.map +1 -0
  11. package/dist/document-authoring/adapters/node/load-validated-document-authoring-profile.js +47 -0
  12. package/dist/document-authoring/adapters/node/load-validated-document-authoring-profile.js.map +1 -0
  13. package/dist/document-authoring/adapters/node/node-authoring-profile-reader.d.ts.map +1 -1
  14. package/dist/document-authoring/adapters/node/node-authoring-profile-reader.js +14 -36
  15. package/dist/document-authoring/adapters/node/node-authoring-profile-reader.js.map +1 -1
  16. package/dist/document-authoring/adapters/node/node-document-contract-validator.d.ts +7 -0
  17. package/dist/document-authoring/adapters/node/node-document-contract-validator.d.ts.map +1 -0
  18. package/dist/document-authoring/adapters/node/node-document-contract-validator.js +179 -0
  19. package/dist/document-authoring/adapters/node/node-document-contract-validator.js.map +1 -0
  20. package/dist/document-authoring/adapters/node/node-document-planning-profile-reader.d.ts +10 -0
  21. package/dist/document-authoring/adapters/node/node-document-planning-profile-reader.d.ts.map +1 -0
  22. package/dist/document-authoring/adapters/node/node-document-planning-profile-reader.js +72 -0
  23. package/dist/document-authoring/adapters/node/node-document-planning-profile-reader.js.map +1 -0
  24. package/dist/document-authoring/adapters/node/node-document-planning-state-reader.d.ts +10 -0
  25. package/dist/document-authoring/adapters/node/node-document-planning-state-reader.d.ts.map +1 -0
  26. package/dist/document-authoring/adapters/node/node-document-planning-state-reader.js +164 -0
  27. package/dist/document-authoring/adapters/node/node-document-planning-state-reader.js.map +1 -0
  28. package/dist/document-authoring/adapters/node/node-document-template-reader.d.ts +10 -0
  29. package/dist/document-authoring/adapters/node/node-document-template-reader.d.ts.map +1 -0
  30. package/dist/document-authoring/adapters/node/node-document-template-reader.js +32 -0
  31. package/dist/document-authoring/adapters/node/node-document-template-reader.js.map +1 -0
  32. package/dist/document-authoring/adapters/node/read-document-authority-file.d.ts.map +1 -1
  33. package/dist/document-authoring/adapters/node/read-document-authority-file.js +3 -13
  34. package/dist/document-authoring/adapters/node/read-document-authority-file.js.map +1 -1
  35. package/dist/document-authoring/application/model/document-planning.d.ts +171 -0
  36. package/dist/document-authoring/application/model/document-planning.d.ts.map +1 -0
  37. package/dist/document-authoring/application/model/document-planning.js +2 -0
  38. package/dist/document-authoring/application/model/document-planning.js.map +1 -0
  39. package/dist/document-authoring/application/policies/authoring-profile-semantics.d.ts +38 -0
  40. package/dist/document-authoring/application/policies/authoring-profile-semantics.d.ts.map +1 -0
  41. package/dist/document-authoring/application/policies/authoring-profile-semantics.js +122 -0
  42. package/dist/document-authoring/application/policies/authoring-profile-semantics.js.map +1 -0
  43. package/dist/document-authoring/application/policies/document-contract-digests.d.ts +20 -0
  44. package/dist/document-authoring/application/policies/document-contract-digests.d.ts.map +1 -0
  45. package/dist/document-authoring/application/policies/document-contract-digests.js +275 -0
  46. package/dist/document-authoring/application/policies/document-contract-digests.js.map +1 -0
  47. package/dist/document-authoring/application/policies/document-logical-preimage.d.ts +14 -0
  48. package/dist/document-authoring/application/policies/document-logical-preimage.d.ts.map +1 -0
  49. package/dist/document-authoring/application/policies/document-logical-preimage.js +61 -0
  50. package/dist/document-authoring/application/policies/document-logical-preimage.js.map +1 -0
  51. package/dist/document-authoring/application/policies/document-planning-policy-error.d.ts +6 -0
  52. package/dist/document-authoring/application/policies/document-planning-policy-error.d.ts.map +1 -0
  53. package/dist/document-authoring/application/policies/document-planning-policy-error.js +9 -0
  54. package/dist/document-authoring/application/policies/document-planning-policy-error.js.map +1 -0
  55. package/dist/document-authoring/application/policies/document-repository-path.d.ts +1 -0
  56. package/dist/document-authoring/application/policies/document-repository-path.d.ts.map +1 -1
  57. package/dist/document-authoring/application/policies/document-repository-path.js +21 -2
  58. package/dist/document-authoring/application/policies/document-repository-path.js.map +1 -1
  59. package/dist/document-authoring/application/policies/document-temporary-path.d.ts +7 -0
  60. package/dist/document-authoring/application/policies/document-temporary-path.d.ts.map +1 -0
  61. package/dist/document-authoring/application/policies/document-temporary-path.js +34 -0
  62. package/dist/document-authoring/application/policies/document-temporary-path.js.map +1 -0
  63. package/dist/document-authoring/application/policies/normalize-document-intent.d.ts +3 -0
  64. package/dist/document-authoring/application/policies/normalize-document-intent.d.ts.map +1 -0
  65. package/dist/document-authoring/application/policies/normalize-document-intent.js +104 -0
  66. package/dist/document-authoring/application/policies/normalize-document-intent.js.map +1 -0
  67. package/dist/document-authoring/application/policies/resolve-document-authoring.d.ts +13 -0
  68. package/dist/document-authoring/application/policies/resolve-document-authoring.d.ts.map +1 -0
  69. package/dist/document-authoring/application/policies/resolve-document-authoring.js +154 -0
  70. package/dist/document-authoring/application/policies/resolve-document-authoring.js.map +1 -0
  71. package/dist/document-authoring/application/ports/canonical-document-renderer.d.ts +29 -0
  72. package/dist/document-authoring/application/ports/canonical-document-renderer.d.ts.map +1 -0
  73. package/dist/document-authoring/application/ports/canonical-document-renderer.js +2 -0
  74. package/dist/document-authoring/application/ports/canonical-document-renderer.js.map +1 -0
  75. package/dist/document-authoring/application/ports/document-contract-validator.d.ts +6 -0
  76. package/dist/document-authoring/application/ports/document-contract-validator.d.ts.map +1 -0
  77. package/dist/document-authoring/application/ports/document-contract-validator.js +2 -0
  78. package/dist/document-authoring/application/ports/document-contract-validator.js.map +1 -0
  79. package/dist/document-authoring/application/ports/document-planning-profile-reader.d.ts +9 -0
  80. package/dist/document-authoring/application/ports/document-planning-profile-reader.d.ts.map +1 -0
  81. package/dist/document-authoring/application/ports/document-planning-profile-reader.js +2 -0
  82. package/dist/document-authoring/application/ports/document-planning-profile-reader.js.map +1 -0
  83. package/dist/document-authoring/application/ports/document-planning-state-reader.d.ts +9 -0
  84. package/dist/document-authoring/application/ports/document-planning-state-reader.d.ts.map +1 -0
  85. package/dist/document-authoring/application/ports/document-planning-state-reader.js +2 -0
  86. package/dist/document-authoring/application/ports/document-planning-state-reader.js.map +1 -0
  87. package/dist/document-authoring/application/ports/document-template-reader.d.ts +9 -0
  88. package/dist/document-authoring/application/ports/document-template-reader.d.ts.map +1 -0
  89. package/dist/document-authoring/application/ports/document-template-reader.js +2 -0
  90. package/dist/document-authoring/application/ports/document-template-reader.js.map +1 -0
  91. package/dist/document-authoring/application/ports/documentation-catalog-reader.d.ts +11 -0
  92. package/dist/document-authoring/application/ports/documentation-catalog-reader.d.ts.map +1 -0
  93. package/dist/document-authoring/application/ports/documentation-catalog-reader.js +2 -0
  94. package/dist/document-authoring/application/ports/documentation-catalog-reader.js.map +1 -0
  95. package/dist/document-authoring/application/use-cases/build-documentation-catalog.d.ts +2 -1
  96. package/dist/document-authoring/application/use-cases/build-documentation-catalog.d.ts.map +1 -1
  97. package/dist/document-authoring/application/use-cases/build-documentation-catalog.js.map +1 -1
  98. package/dist/document-authoring/application/use-cases/compile-document-plan.d.ts +6 -0
  99. package/dist/document-authoring/application/use-cases/compile-document-plan.d.ts.map +1 -0
  100. package/dist/document-authoring/application/use-cases/compile-document-plan.js +156 -0
  101. package/dist/document-authoring/application/use-cases/compile-document-plan.js.map +1 -0
  102. package/dist/document-authoring/application/use-cases/plan-documentation-document.d.ts +66 -0
  103. package/dist/document-authoring/application/use-cases/plan-documentation-document.d.ts.map +1 -0
  104. package/dist/document-authoring/application/use-cases/plan-documentation-document.js +276 -0
  105. package/dist/document-authoring/application/use-cases/plan-documentation-document.js.map +1 -0
  106. package/dist/document-authoring/document-planning-error.d.ts +6 -0
  107. package/dist/document-authoring/document-planning-error.d.ts.map +1 -0
  108. package/dist/document-authoring/document-planning-error.js +9 -0
  109. package/dist/document-authoring/document-planning-error.js.map +1 -0
  110. package/dist/document-authoring/index.d.ts +10 -0
  111. package/dist/document-authoring/index.d.ts.map +1 -1
  112. package/dist/document-authoring/index.js +72 -0
  113. package/dist/document-authoring/index.js.map +1 -1
  114. package/dist/transaction-coordination/adapters/node/document-temporary-identity.d.ts +4 -0
  115. package/dist/transaction-coordination/adapters/node/document-temporary-identity.d.ts.map +1 -0
  116. package/dist/transaction-coordination/adapters/node/document-temporary-identity.js +30 -0
  117. package/dist/transaction-coordination/adapters/node/document-temporary-identity.js.map +1 -0
  118. package/dist/transaction-coordination/adapters/node/legacy-document-envelope-v2.d.ts +5 -0
  119. package/dist/transaction-coordination/adapters/node/legacy-document-envelope-v2.d.ts.map +1 -0
  120. package/dist/transaction-coordination/adapters/node/legacy-document-envelope-v2.js +212 -0
  121. package/dist/transaction-coordination/adapters/node/legacy-document-envelope-v2.js.map +1 -0
  122. package/dist/transaction-coordination/adapters/node/node-foundation-transaction-slot.d.ts.map +1 -1
  123. package/dist/transaction-coordination/adapters/node/node-foundation-transaction-slot.js +47 -25
  124. package/dist/transaction-coordination/adapters/node/node-foundation-transaction-slot.js.map +1 -1
  125. package/package.json +1 -1
  126. package/schemas/document-authoring-profile/v1.schema.json +64 -15
  127. package/schemas/document-command-envelope/v1.schema.json +1 -1
  128. package/schemas/document-intent/v1.schema.json +48 -6
  129. package/schemas/document-plan/v1.schema.json +20 -4
  130. package/schemas/document-receipt/v1.schema.json +1 -1
  131. package/schemas/foundation-transaction-envelope/v2.schema.json +21 -3
@@ -0,0 +1,47 @@
1
+ import { CapabilityInputError } from "../../../capability-runtime.js";
2
+ import { assertNotCancelled } from "../../../cancellation.js";
3
+ import { assertSchema } from "../../../schema-catalog.js";
4
+ import { parseStrictYamlSource } from "../../../strict-yaml.js";
5
+ import { assertAuthoringProfileSemantics, AuthoringProfileSemanticError } from "../../application/policies/authoring-profile-semantics.js";
6
+ import { readDocumentAuthorityFile } from "./read-document-authority-file.js";
7
+ const MAX_PROFILE_BYTES = 1024 * 1024;
8
+ export class InvalidDocumentAuthoringProfileError extends Error {
9
+ constructor(message, options) {
10
+ super(message, options);
11
+ this.name = "InvalidDocumentAuthoringProfileError";
12
+ }
13
+ }
14
+ function invalidProfile(error) {
15
+ const message = error instanceof Error
16
+ ? error.message.slice(0, 1000)
17
+ : "Document authoring profile is invalid.";
18
+ throw new InvalidDocumentAuthoringProfileError(message, { cause: error });
19
+ }
20
+ export async function loadValidatedDocumentAuthoringProfile(request) {
21
+ assertNotCancelled(request.signal);
22
+ const file = await readDocumentAuthorityFile({
23
+ consumerRoot: request.consumerRoot,
24
+ maxBytes: MAX_PROFILE_BYTES,
25
+ path: request.path
26
+ });
27
+ let input;
28
+ try {
29
+ assertNotCancelled(request.signal);
30
+ input = parseStrictYamlSource(file.source, "document-authoring-profile");
31
+ await assertSchema("document-authoring-profile/v1", input, "document-authoring-profile");
32
+ assertAuthoringProfileSemantics(input);
33
+ assertNotCancelled(request.signal);
34
+ }
35
+ catch (error) {
36
+ if (error instanceof CapabilityInputError ||
37
+ error instanceof AuthoringProfileSemanticError) {
38
+ invalidProfile(error);
39
+ }
40
+ throw error;
41
+ }
42
+ return Object.freeze({
43
+ evidence: file.evidence,
44
+ profile: input
45
+ });
46
+ }
47
+ //# sourceMappingURL=load-validated-document-authoring-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-validated-document-authoring-profile.js","sourceRoot":"","sources":["../../../../src/document-authoring/adapters/node/load-validated-document-authoring-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAE9B,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AAoBtC,MAAM,OAAO,oCAAqC,SAAQ,KAAK;IAC7D,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,sCAAsC,CAAC;IACrD,CAAC;CACF;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK;QACpC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;QAC9B,CAAC,CAAC,wCAAwC,CAAC;IAC7C,MAAM,IAAI,oCAAoC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CAAC,OAI3D;IAIC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC;QAC3C,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,QAAQ,EAAE,iBAAiB;QAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;IACH,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;QACzE,MAAM,YAAY,CAChB,+BAA+B,EAC/B,KAAK,EACL,4BAA4B,CAC7B,CAAC;QACF,+BAA+B,CAAC,KAAkC,CAAC,CAAC;QACpE,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,KAAK,YAAY,oBAAoB;YACrC,KAAK,YAAY,6BAA6B,EAC9C,CAAC;YACD,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,KAA0C;KACpD,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"node-authoring-profile-reader.d.ts","sourceRoot":"","sources":["../../../../src/document-authoring/adapters/node/node-authoring-profile-reader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,sBAAsB,EAEtB,sBAAsB,EACvB,MAAM,qDAAqD,CAAC;AAoC7D,qBAAa,0BAA2B,YAAW,sBAAsB;IACjE,IAAI,CAAC,OAAO,EAAE;QAClB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;KAC/B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAoClC;CACF"}
1
+ {"version":3,"file":"node-authoring-profile-reader.d.ts","sourceRoot":"","sources":["../../../../src/document-authoring/adapters/node/node-authoring-profile-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEtB,sBAAsB,EACvB,MAAM,qDAAqD,CAAC;AAa7D,qBAAa,0BAA2B,YAAW,sBAAsB;IACjE,IAAI,CAAC,OAAO,EAAE;QAClB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;KAC/B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAyBlC;CACF"}
@@ -1,16 +1,5 @@
1
- import { CapabilityInputError } from "../../../capability-runtime.js";
2
- import { assertNotCancelled } from "../../../cancellation.js";
3
- import { assertSchema } from "../../../schema-catalog.js";
4
- import { parseStrictYamlSource } from "../../../strict-yaml.js";
5
1
  import { DocumentCatalogError } from "../../document-catalog-error.js";
6
- import { readDocumentAuthorityFile } from "./read-document-authority-file.js";
7
- const MAX_PROFILE_BYTES = 1024 * 1024;
8
- function invalidProfile(error) {
9
- const message = error instanceof Error
10
- ? error.message.slice(0, 1000)
11
- : "Document authoring profile is invalid.";
12
- throw new DocumentCatalogError("DOCUMENT_CATALOG_INPUT_INVALID", `Document authoring profile is invalid: ${message}`, { cause: error });
13
- }
2
+ import { InvalidDocumentAuthoringProfileError, loadValidatedDocumentAuthoringProfile } from "./load-validated-document-authoring-profile.js";
14
3
  function freezeCollection(collection) {
15
4
  return collection.kind === "markdown-tree"
16
5
  ? Object.freeze({ ...collection })
@@ -18,36 +7,25 @@ function freezeCollection(collection) {
18
7
  }
19
8
  export class NodeAuthoringProfileReader {
20
9
  async read(request) {
21
- assertNotCancelled(request.signal);
22
- const file = await readDocumentAuthorityFile({
23
- consumerRoot: request.consumerRoot,
24
- maxBytes: MAX_PROFILE_BYTES,
25
- path: request.path
26
- });
27
- let input;
28
10
  try {
29
- assertNotCancelled(request.signal);
30
- input = parseStrictYamlSource(file.source, "document-authoring-profile");
31
- await assertSchema("document-authoring-profile/v1", input, "document-authoring-profile");
32
- assertNotCancelled(request.signal);
11
+ const { evidence, profile } = await loadValidatedDocumentAuthoringProfile(request);
12
+ return Object.freeze({
13
+ collections: Object.freeze(profile.catalog.collections.map(freezeCollection)),
14
+ evidence,
15
+ excludedPrefixes: Object.freeze([
16
+ ...(profile.catalog.excludedPrefixes ?? [])
17
+ ]),
18
+ metadataSchemaPath: profile.catalog.metadataSchemaPath,
19
+ ownerCatalog: Object.freeze({ ...profile.catalog.ownerCatalog }),
20
+ projectId: profile.projectId
21
+ });
33
22
  }
34
23
  catch (error) {
35
- if (error instanceof CapabilityInputError) {
36
- invalidProfile(error);
24
+ if (error instanceof InvalidDocumentAuthoringProfileError) {
25
+ throw new DocumentCatalogError("DOCUMENT_CATALOG_INPUT_INVALID", `Document authoring profile is invalid: ${error.message}`, { cause: error });
37
26
  }
38
27
  throw error;
39
28
  }
40
- const profile = input;
41
- return Object.freeze({
42
- collections: Object.freeze(profile.catalog.collections.map(freezeCollection)),
43
- evidence: file.evidence,
44
- excludedPrefixes: Object.freeze([
45
- ...(profile.catalog.excludedPrefixes ?? [])
46
- ]),
47
- metadataSchemaPath: profile.catalog.metadataSchemaPath,
48
- ownerCatalog: Object.freeze({ ...profile.catalog.ownerCatalog }),
49
- projectId: profile.projectId
50
- });
51
29
  }
52
30
  }
53
31
  //# sourceMappingURL=node-authoring-profile-reader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-authoring-profile-reader.js","sourceRoot":"","sources":["../../../../src/document-authoring/adapters/node/node-authoring-profile-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAMhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AAetC,SAAS,cAAc,CAAC,KAAc;IACpC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK;QACpC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;QAC9B,CAAC,CAAC,wCAAwC,CAAC;IAC7C,MAAM,IAAI,oBAAoB,CAC5B,gCAAgC,EAChC,0CAA0C,OAAO,EAAE,EACnD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,UAA6B;IACrD,OAAO,UAAU,CAAC,IAAI,KAAK,eAAe;QACxC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;QAClC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,OAAO,0BAA0B;IACrC,KAAK,CAAC,IAAI,CAAC,OAIV;QACC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC;YAC3C,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,QAAQ,EAAE,iBAAiB;YAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,KAAc,CAAC;QACnB,IAAI,CAAC;YACH,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnC,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;YACzE,MAAM,YAAY,CAChB,+BAA+B,EAC/B,KAAK,EACL,4BAA4B,CAC7B,CAAC;YACF,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;gBAC1C,cAAc,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,KAAyB,CAAC;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,MAAM,CAAC,MAAM,CACxB,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAClD;YACD,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC;gBAC9B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC;aAC5C,CAAC;YACF,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB;YACtD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAChE,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"node-authoring-profile-reader.js","sourceRoot":"","sources":["../../../../src/document-authoring/adapters/node/node-authoring-profile-reader.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EACL,oCAAoC,EACpC,qCAAqC,EACtC,MAAM,gDAAgD,CAAC;AAExD,SAAS,gBAAgB,CAAC,UAA6B;IACrD,OAAO,UAAU,CAAC,IAAI,KAAK,eAAe;QACxC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;QAClC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,OAAO,0BAA0B;IACrC,KAAK,CAAC,IAAI,CAAC,OAIV;QACC,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,qCAAqC,CAAC,OAAO,CAAC,CAAC;YACnF,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,WAAW,EAAE,MAAM,CAAC,MAAM,CACxB,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAClD;gBACD,QAAQ;gBACR,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC;oBAC9B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC;iBAC5C,CAAC;gBACF,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB;gBACtD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAChE,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,oCAAoC,EAAE,CAAC;gBAC1D,MAAM,IAAI,oBAAoB,CAC5B,gCAAgC,EAChC,0CAA0C,KAAK,CAAC,OAAO,EAAE,EACzD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { DocumentIntent, DocumentPlan } from "../../application/model/document-planning.js";
2
+ import type { DocumentContractValidator } from "../../application/ports/document-contract-validator.js";
3
+ export declare class NodeDocumentContractValidator implements DocumentContractValidator {
4
+ validateIntent(input: unknown): Promise<DocumentIntent>;
5
+ validatePlan(input: unknown): Promise<DocumentPlan>;
6
+ }
7
+ //# sourceMappingURL=node-document-contract-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-document-contract-validator.d.ts","sourceRoot":"","sources":["../../../../src/document-authoring/adapters/node/node-document-contract-validator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACb,MAAM,8CAA8C,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wDAAwD,CAAC;AA2LxG,qBAAa,6BAA8B,YAAW,yBAAyB;IACvE,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAkB5D;IAEK,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAUxD;CACF"}
@@ -0,0 +1,179 @@
1
+ import { isProxy } from "node:util/types";
2
+ import { CapabilityInputError } from "../../../capability-runtime.js";
3
+ import { assertSchema } from "../../../schema-catalog.js";
4
+ import { DocumentPlanningError } from "../../document-planning-error.js";
5
+ function invalidContract(kind, error) {
6
+ throw new DocumentPlanningError(kind === "Intent"
7
+ ? "DOCUMENT_PLANNING_INPUT_INVALID"
8
+ : "DOCUMENT_PLANNING_OUTPUT_INVALID", `Document ${kind} does not match its v1 contract: ${error.message.slice(0, 1000)}`, { cause: error });
9
+ }
10
+ const MAXIMUM_INTENT_DEPTH = 8;
11
+ const MAXIMUM_INTENT_CONTAINER_ITEMS = 128;
12
+ const MAXIMUM_DOCUMENT_OUTPUT_BYTES = 1024 * 1024;
13
+ const OUTPUT_INTENT_KEYS = new Set([
14
+ "additionalMetadata",
15
+ "id",
16
+ "owner",
17
+ "related",
18
+ "summary",
19
+ "title",
20
+ "type"
21
+ ]);
22
+ const INTENT_ROOT_KEYS = new Set([
23
+ ...OUTPUT_INTENT_KEYS,
24
+ "destination",
25
+ "schemaVersion",
26
+ "slug"
27
+ ]);
28
+ const STRING_INTENT_ROOT_KEYS = new Set([
29
+ "destination",
30
+ "id",
31
+ "owner",
32
+ "slug",
33
+ "summary",
34
+ "title",
35
+ "type"
36
+ ]);
37
+ function addOutputLowerBound(budget, bytes) {
38
+ budget.outputLowerBoundBytes += bytes;
39
+ if (budget.outputLowerBoundBytes > MAXIMUM_DOCUMENT_OUTPUT_BYTES) {
40
+ throw new TypeError("Document Intent logically expands beyond the public document output byte limit.");
41
+ }
42
+ }
43
+ function isJsonScalar(value, contributesToOutput, budget) {
44
+ if (value === null || typeof value === "boolean" || typeof value === "string") {
45
+ if (contributesToOutput) {
46
+ addOutputLowerBound(budget, 1 + (typeof value === "string"
47
+ ? Buffer.byteLength(value.normalize("NFC"), "utf8")
48
+ : 1));
49
+ }
50
+ return true;
51
+ }
52
+ if (typeof value === "number") {
53
+ if (!Number.isSafeInteger(value) || Object.is(value, -0)) {
54
+ throw new TypeError("Document Intent numbers must be safe integers other than negative zero.");
55
+ }
56
+ if (contributesToOutput) {
57
+ addOutputLowerBound(budget, 1);
58
+ }
59
+ return true;
60
+ }
61
+ return false;
62
+ }
63
+ function inertContainerKeys(value) {
64
+ const keys = Reflect.ownKeys(value);
65
+ if (keys.some((key) => typeof key !== "string")) {
66
+ throw new TypeError("Document Intent must not contain symbol keys.");
67
+ }
68
+ const itemCount = Array.isArray(value) ? keys.length - 1 : keys.length;
69
+ if (itemCount > MAXIMUM_INTENT_CONTAINER_ITEMS) {
70
+ throw new TypeError("Document Intent container exceeds the item budget.");
71
+ }
72
+ if (Array.isArray(value) && keys.length !== value.length + 1) {
73
+ throw new TypeError("Document Intent arrays must be dense and contain no extra properties.");
74
+ }
75
+ return keys;
76
+ }
77
+ function assertIntrinsicJsonContainer(value) {
78
+ const prototype = Object.getPrototypeOf(value);
79
+ if ((Array.isArray(value) && prototype !== Array.prototype) ||
80
+ (!Array.isArray(value) && prototype !== Object.prototype && prototype !== null)) {
81
+ throw new TypeError("Document Intent containers must use intrinsic JSON prototypes.");
82
+ }
83
+ }
84
+ function assertIntentRootField(key, value) {
85
+ if (!INTENT_ROOT_KEYS.has(key)) {
86
+ throw new TypeError("Document Intent contains an unknown root field.");
87
+ }
88
+ if (STRING_INTENT_ROOT_KEYS.has(key) && typeof value !== "string") {
89
+ throw new TypeError(`Document Intent root field ${key} must be a string.`);
90
+ }
91
+ if (key === "schemaVersion" && value !== 1) {
92
+ throw new TypeError("Document Intent schemaVersion must equal 1.");
93
+ }
94
+ }
95
+ function assertInertJson(input) {
96
+ const pending = [
97
+ { action: "enter", contributesToOutput: false, depth: 0, value: input }
98
+ ];
99
+ const ancestors = new WeakSet();
100
+ const budget = { outputLowerBoundBytes: 0 };
101
+ while (pending.length > 0) {
102
+ const current = pending.pop();
103
+ if (current.action === "leave") {
104
+ ancestors.delete(current.value);
105
+ continue;
106
+ }
107
+ if (isJsonScalar(current.value, current.contributesToOutput, budget)) {
108
+ continue;
109
+ }
110
+ if (current.value === null || typeof current.value !== "object") {
111
+ throw new TypeError("Document Intent must use the closed JSON data model.");
112
+ }
113
+ if (isProxy(current.value)) {
114
+ throw new TypeError("Document Intent must not contain Proxy objects.");
115
+ }
116
+ if (current.depth > MAXIMUM_INTENT_DEPTH || ancestors.has(current.value)) {
117
+ throw new TypeError("Document Intent must be a bounded acyclic JSON tree.");
118
+ }
119
+ assertIntrinsicJsonContainer(current.value);
120
+ if (current.contributesToOutput) {
121
+ addOutputLowerBound(budget, 1);
122
+ }
123
+ ancestors.add(current.value);
124
+ pending.push({ action: "leave", value: current.value });
125
+ for (const key of inertContainerKeys(current.value)) {
126
+ if (key === "length" && Array.isArray(current.value)) {
127
+ continue;
128
+ }
129
+ const descriptor = Object.getOwnPropertyDescriptor(current.value, key);
130
+ if (descriptor === undefined ||
131
+ !("value" in descriptor) ||
132
+ descriptor.enumerable !== true) {
133
+ throw new TypeError("Document Intent must contain only enumerable own data properties.");
134
+ }
135
+ if (current.depth === 0) {
136
+ assertIntentRootField(key, descriptor.value);
137
+ }
138
+ pending.push({
139
+ action: "enter",
140
+ contributesToOutput: current.depth === 0
141
+ ? OUTPUT_INTENT_KEYS.has(key)
142
+ : current.contributesToOutput,
143
+ depth: current.depth + 1,
144
+ value: descriptor.value
145
+ });
146
+ }
147
+ }
148
+ }
149
+ export class NodeDocumentContractValidator {
150
+ async validateIntent(input) {
151
+ try {
152
+ assertInertJson(input);
153
+ await assertSchema("document-intent/v1", input, "document-intent");
154
+ return input;
155
+ }
156
+ catch (error) {
157
+ if (error instanceof CapabilityInputError) {
158
+ invalidContract("Intent", error);
159
+ }
160
+ if (error instanceof TypeError) {
161
+ throw new DocumentPlanningError("DOCUMENT_PLANNING_INPUT_INVALID", `Document Intent must use inert canonical JSON data: ${error.message}`, { cause: error });
162
+ }
163
+ throw error;
164
+ }
165
+ }
166
+ async validatePlan(input) {
167
+ try {
168
+ await assertSchema("document-plan/v1", input, "document-plan");
169
+ return input;
170
+ }
171
+ catch (error) {
172
+ if (error instanceof CapabilityInputError) {
173
+ invalidContract("Plan", error);
174
+ }
175
+ throw error;
176
+ }
177
+ }
178
+ }
179
+ //# sourceMappingURL=node-document-contract-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-document-contract-validator.js","sourceRoot":"","sources":["../../../../src/document-authoring/adapters/node/node-document-contract-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { DocumentPlanningProfileSnapshot } from "../../application/model/document-planning.js";
2
+ import type { DocumentPlanningProfileReader } from "../../application/ports/document-planning-profile-reader.js";
3
+ export declare class NodeDocumentPlanningProfileReader implements DocumentPlanningProfileReader {
4
+ read(request: {
5
+ readonly consumerRoot: string;
6
+ readonly path: string;
7
+ readonly signal?: AbortSignal;
8
+ }): Promise<DocumentPlanningProfileSnapshot>;
9
+ }
10
+ //# sourceMappingURL=node-document-planning-profile-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-document-planning-profile-reader.d.ts","sourceRoot":"","sources":["../../../../src/document-authoring/adapters/node/node-document-planning-profile-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,+BAA+B,EAChC,MAAM,8CAA8C,CAAC;AACtD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6DAA6D,CAAC;AA0DjH,qBAAa,iCACb,YAAW,6BAA6B;IAChC,IAAI,CAAC,OAAO,EAAE;QAClB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;KAC/B,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAiC3C;CACF"}
@@ -0,0 +1,72 @@
1
+ import { DocumentCatalogError } from "../../document-catalog-error.js";
2
+ import { DocumentPlanningError } from "../../document-planning-error.js";
3
+ import { InvalidDocumentAuthoringProfileError, loadValidatedDocumentAuthoringProfile } from "./load-validated-document-authoring-profile.js";
4
+ function freezeIdentity(identity) {
5
+ return identity.format === "qualified"
6
+ ? Object.freeze({
7
+ ...identity,
8
+ grammar: Object.freeze({
9
+ ...identity.grammar,
10
+ prefixSegments: Object.freeze([...identity.grammar.prefixSegments])
11
+ })
12
+ })
13
+ : Object.freeze({ ...identity });
14
+ }
15
+ function freezePlacement(placement) {
16
+ return placement.kind === "explicit"
17
+ ? Object.freeze({
18
+ ...placement,
19
+ allowedRoots: Object.freeze([...placement.allowedRoots]),
20
+ requiredSegmentsInOrder: Object.freeze([
21
+ ...placement.requiredSegmentsInOrder
22
+ ])
23
+ })
24
+ : Object.freeze({ ...placement });
25
+ }
26
+ function freezeArtifactType(artifactType) {
27
+ return Object.freeze({
28
+ ...artifactType,
29
+ heading: Object.freeze({ ...artifactType.heading }),
30
+ identity: freezeIdentity(artifactType.identity),
31
+ placement: freezePlacement(artifactType.placement),
32
+ template: Object.freeze({ ...artifactType.template })
33
+ });
34
+ }
35
+ function freezeCollection(collection) {
36
+ return collection.kind === "frontmatter-readme"
37
+ ? Object.freeze({ ...collection, roots: Object.freeze([...collection.roots]) })
38
+ : Object.freeze({ ...collection });
39
+ }
40
+ function invalidProfile(error) {
41
+ throw new DocumentPlanningError("DOCUMENT_PLANNING_INPUT_INVALID", `Document authoring profile is invalid: ${error.message}`, { cause: error });
42
+ }
43
+ export class NodeDocumentPlanningProfileReader {
44
+ async read(request) {
45
+ try {
46
+ const { evidence, profile } = await loadValidatedDocumentAuthoringProfile(request);
47
+ return Object.freeze({
48
+ artifactTypes: Object.freeze(profile.authoring.artifactTypes.map(freezeArtifactType)),
49
+ collections: Object.freeze(profile.catalog.collections.map(freezeCollection)),
50
+ evidence,
51
+ excludedPrefixes: Object.freeze([
52
+ ...(profile.catalog.excludedPrefixes ?? [])
53
+ ]),
54
+ metadataSchemaPath: profile.catalog.metadataSchemaPath,
55
+ ownerCatalog: Object.freeze({ ...profile.catalog.ownerCatalog }),
56
+ projectId: profile.projectId
57
+ });
58
+ }
59
+ catch (error) {
60
+ if (error instanceof InvalidDocumentAuthoringProfileError) {
61
+ invalidProfile(error);
62
+ }
63
+ if (error instanceof DocumentCatalogError) {
64
+ throw new DocumentPlanningError(error.code === "DOCUMENT_CATALOG_INPUT_INVALID"
65
+ ? "DOCUMENT_PLANNING_INPUT_INVALID"
66
+ : "DOCUMENT_PLANNING_AUTHORITY_UNAVAILABLE", `Document authoring profile cannot be loaded: ${error.message}`, { cause: error });
67
+ }
68
+ throw error;
69
+ }
70
+ }
71
+ }
72
+ //# sourceMappingURL=node-document-planning-profile-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-document-planning-profile-reader.js","sourceRoot":"","sources":["../../../../src/document-authoring/adapters/node/node-document-planning-profile-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { DocumentPlanningStateSnapshot } from "../../application/model/document-planning.js";
2
+ import type { DocumentPlanningStateReader } from "../../application/ports/document-planning-state-reader.js";
3
+ export declare class NodeDocumentPlanningStateReader implements DocumentPlanningStateReader {
4
+ observe(request: {
5
+ readonly consumerRoot: string;
6
+ readonly destination: string;
7
+ readonly signal?: AbortSignal;
8
+ }): Promise<DocumentPlanningStateSnapshot>;
9
+ }
10
+ //# sourceMappingURL=node-document-planning-state-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-document-planning-state-reader.d.ts","sourceRoot":"","sources":["../../../../src/document-authoring/adapters/node/node-document-planning-state-reader.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2DAA2D,CAAC;AA8I7G,qBAAa,+BACb,YAAW,2BAA2B;IAC9B,OAAO,CAAC,OAAO,EAAE;QACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;KAC/B,GAAG,OAAO,CAAC,6BAA6B,CAAC,CA2DzC;CACF"}
@@ -0,0 +1,164 @@
1
+ import { lstat, readdir, realpath } from "node:fs/promises";
2
+ import { isAbsolute, join, relative, resolve, sep } from "node:path";
3
+ import { assertNotCancelled } from "../../../cancellation.js";
4
+ import { ContainedFileReadError, readContainedRegularFile } from "../../../filesystem-path-safety.js";
5
+ import { documentRepositoryParentPath, isDocumentRepositoryPath } from "../../application/policies/document-repository-path.js";
6
+ import { DocumentPlanningError } from "../../document-planning-error.js";
7
+ const MAX_EXISTING_DESTINATION_BYTES = 1024 * 1024;
8
+ function hasCode(error, code) {
9
+ return error instanceof Error && "code" in error &&
10
+ error.code === code;
11
+ }
12
+ function isMissing(error) {
13
+ return hasCode(error, "ENOENT") || hasCode(error, "ENOTDIR");
14
+ }
15
+ function contained(root, candidate) {
16
+ const relation = relative(root, candidate);
17
+ return relation === "" ||
18
+ (!isAbsolute(relation) && relation !== ".." && !relation.startsWith(`..${sep}`));
19
+ }
20
+ function portableNameIdentity(name) {
21
+ return name.normalize("NFC").replace(/[A-Z]/gu, (character) => character.toLowerCase());
22
+ }
23
+ async function hasPortableNameCollision(parent, requestedName) {
24
+ const requestedIdentity = portableNameIdentity(requestedName);
25
+ const entries = await readdir(parent);
26
+ return entries.some((entry) => entry !== requestedName && portableNameIdentity(entry) === requestedIdentity);
27
+ }
28
+ function parentUnavailable(message, cause) {
29
+ throw new DocumentPlanningError("DOCUMENT_PLANNING_PARENT_UNAVAILABLE", message, cause === undefined ? undefined : { cause });
30
+ }
31
+ function observationUnavailable(message, cause) {
32
+ throw new DocumentPlanningError("DOCUMENT_PLANNING_AUTHORITY_UNAVAILABLE", message, cause === undefined ? undefined : { cause });
33
+ }
34
+ async function observeRegularDestination(input) {
35
+ try {
36
+ const bytes = await readContainedRegularFile({
37
+ candidate: input.candidate,
38
+ maxBytes: MAX_EXISTING_DESTINATION_BYTES,
39
+ root: input.root
40
+ });
41
+ return Object.freeze({
42
+ bytes: new Uint8Array(bytes),
43
+ state: "regular-file"
44
+ });
45
+ }
46
+ catch (error) {
47
+ if (error instanceof ContainedFileReadError &&
48
+ (error.failure === "invalid" || error.failure === "symlink")) {
49
+ return Object.freeze({ kind: "special-file", state: "conflict" });
50
+ }
51
+ if (error instanceof ContainedFileReadError) {
52
+ observationUnavailable(`Document destination changed or became unavailable: ${input.destination}.`, error);
53
+ }
54
+ throw error;
55
+ }
56
+ }
57
+ async function observeRealParent(input) {
58
+ const lexicalRoot = resolve(input.consumerRoot);
59
+ let root;
60
+ try {
61
+ const rootMetadata = await lstat(lexicalRoot);
62
+ if (rootMetadata.isSymbolicLink() || !rootMetadata.isDirectory()) {
63
+ parentUnavailable("Document repository root must be a real directory.");
64
+ }
65
+ root = await realpath(lexicalRoot);
66
+ }
67
+ catch (error) {
68
+ if (error instanceof DocumentPlanningError) {
69
+ throw error;
70
+ }
71
+ parentUnavailable("Document repository root is unavailable.", error);
72
+ }
73
+ let current = root;
74
+ const parentSegments = input.destination.split("/").slice(0, -1);
75
+ for (const segment of parentSegments) {
76
+ assertNotCancelled(input.signal);
77
+ try {
78
+ if (await hasPortableNameCollision(current, segment)) {
79
+ parentUnavailable(`Document destination parent has a portable name collision: ${segment}.`);
80
+ }
81
+ const next = join(current, segment);
82
+ const metadata = await lstat(next);
83
+ if (metadata.isSymbolicLink() || !metadata.isDirectory()) {
84
+ parentUnavailable(`Document destination parent ancestry must contain only real directories: ${segment}.`);
85
+ }
86
+ const canonical = await realpath(next);
87
+ if (!contained(root, canonical)) {
88
+ parentUnavailable("Document destination parent escapes the repository.");
89
+ }
90
+ current = canonical;
91
+ }
92
+ catch (error) {
93
+ if (error instanceof DocumentPlanningError) {
94
+ throw error;
95
+ }
96
+ if (isMissing(error)) {
97
+ parentUnavailable("Document destination parent must already exist.", error);
98
+ }
99
+ parentUnavailable("Document destination parent cannot be observed safely.", error);
100
+ }
101
+ }
102
+ return { parent: current, root };
103
+ }
104
+ export class NodeDocumentPlanningStateReader {
105
+ async observe(request) {
106
+ assertNotCancelled(request.signal);
107
+ if (!isDocumentRepositoryPath(request.destination)) {
108
+ throw new DocumentPlanningError("DOCUMENT_PLANNING_INPUT_INVALID", "Document destination must use the portable repository-relative path grammar.");
109
+ }
110
+ const { parent, root } = await observeRealParent(request);
111
+ assertNotCancelled(request.signal);
112
+ const basename = request.destination.split("/").at(-1) ?? "";
113
+ let destination;
114
+ try {
115
+ if (await hasPortableNameCollision(parent, basename)) {
116
+ destination = Object.freeze({
117
+ kind: "portable-name-collision",
118
+ state: "conflict"
119
+ });
120
+ }
121
+ else {
122
+ const candidate = join(parent, basename);
123
+ const metadata = await lstat(candidate).catch((error) => {
124
+ if (isMissing(error)) {
125
+ return null;
126
+ }
127
+ throw error;
128
+ });
129
+ if (metadata === null) {
130
+ destination = Object.freeze({ state: "absent" });
131
+ }
132
+ else if (metadata.isSymbolicLink() || !metadata.isFile()) {
133
+ destination = Object.freeze({
134
+ kind: metadata.isDirectory() ? "directory" : "special-file",
135
+ state: "conflict"
136
+ });
137
+ }
138
+ else {
139
+ destination = await observeRegularDestination({
140
+ candidate,
141
+ destination: request.destination,
142
+ root
143
+ });
144
+ }
145
+ }
146
+ }
147
+ catch (error) {
148
+ if (error instanceof DocumentPlanningError) {
149
+ throw error;
150
+ }
151
+ observationUnavailable(`Document destination cannot be observed safely: ${request.destination}.`, error);
152
+ }
153
+ assertNotCancelled(request.signal);
154
+ return Object.freeze({
155
+ destination,
156
+ expectedParent: Object.freeze({
157
+ ancestry: "real-directories",
158
+ path: documentRepositoryParentPath(request.destination),
159
+ state: "directory"
160
+ })
161
+ });
162
+ }
163
+ }
164
+ //# sourceMappingURL=node-document-planning-state-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-document-planning-state-reader.js","sourceRoot":"","sources":["../../../../src/document-authoring/adapters/node/node-document-planning-state-reader.ts"],"names":[],"mappings":"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"}