perttool 0.6.0 → 0.7.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.
Files changed (242) hide show
  1. package/CHANGELOG.md +56 -1
  2. package/README.md +113 -33
  3. package/dist/application/advance-history.d.ts +2 -0
  4. package/dist/application/advance-history.d.ts.map +1 -1
  5. package/dist/application/advance-history.js +21 -12
  6. package/dist/application/advance-history.js.map +1 -1
  7. package/dist/application/contract7-assurance.d.ts +57 -0
  8. package/dist/application/contract7-assurance.d.ts.map +1 -0
  9. package/dist/application/contract7-assurance.js +248 -0
  10. package/dist/application/contract7-assurance.js.map +1 -0
  11. package/dist/application/contract7-mermaid.d.ts +9 -0
  12. package/dist/application/contract7-mermaid.d.ts.map +1 -0
  13. package/dist/application/contract7-mermaid.js +73 -0
  14. package/dist/application/contract7-mermaid.js.map +1 -0
  15. package/dist/application/contract7-mutation.d.ts +21 -0
  16. package/dist/application/contract7-mutation.d.ts.map +1 -0
  17. package/dist/application/contract7-mutation.js +181 -0
  18. package/dist/application/contract7-mutation.js.map +1 -0
  19. package/dist/application/contract7-project.d.ts +10 -0
  20. package/dist/application/contract7-project.d.ts.map +1 -0
  21. package/dist/application/contract7-project.js +29 -0
  22. package/dist/application/contract7-project.js.map +1 -0
  23. package/dist/application/contract7-projection.d.ts +9 -0
  24. package/dist/application/contract7-projection.d.ts.map +1 -0
  25. package/dist/application/contract7-projection.js +100 -0
  26. package/dist/application/contract7-projection.js.map +1 -0
  27. package/dist/application/contract7-source.d.ts +24 -0
  28. package/dist/application/contract7-source.d.ts.map +1 -0
  29. package/dist/application/contract7-source.js +54 -0
  30. package/dist/application/contract7-source.js.map +1 -0
  31. package/dist/application/contract7-unit-migration.d.ts +13 -0
  32. package/dist/application/contract7-unit-migration.d.ts.map +1 -0
  33. package/dist/application/contract7-unit-migration.js +13 -0
  34. package/dist/application/contract7-unit-migration.js.map +1 -0
  35. package/dist/application/init.d.ts +1 -1
  36. package/dist/application/init.js +3 -3
  37. package/dist/application/mutate.d.ts +5 -1
  38. package/dist/application/mutate.d.ts.map +1 -1
  39. package/dist/application/mutate.js +2 -2
  40. package/dist/application/mutate.js.map +1 -1
  41. package/dist/application/target-actuals-analysis.d.ts +5 -4
  42. package/dist/application/target-actuals-analysis.d.ts.map +1 -1
  43. package/dist/application/target-actuals-analysis.js +18 -11
  44. package/dist/application/target-actuals-analysis.js.map +1 -1
  45. package/dist/application/target-actuals-mutation.d.ts +5 -3
  46. package/dist/application/target-actuals-mutation.d.ts.map +1 -1
  47. package/dist/application/target-actuals-mutation.js +16 -8
  48. package/dist/application/target-actuals-mutation.js.map +1 -1
  49. package/dist/application/target-assurance-advance-history.d.ts +19 -0
  50. package/dist/application/target-assurance-advance-history.d.ts.map +1 -0
  51. package/dist/application/target-assurance-advance-history.js +61 -0
  52. package/dist/application/target-assurance-advance-history.js.map +1 -0
  53. package/dist/application/target-assurance-analysis.d.ts +34 -0
  54. package/dist/application/target-assurance-analysis.d.ts.map +1 -0
  55. package/dist/application/target-assurance-analysis.js +103 -0
  56. package/dist/application/target-assurance-analysis.js.map +1 -0
  57. package/dist/application/target-assurance-inspection.d.ts +38 -0
  58. package/dist/application/target-assurance-inspection.d.ts.map +1 -0
  59. package/dist/application/target-assurance-inspection.js +356 -0
  60. package/dist/application/target-assurance-inspection.js.map +1 -0
  61. package/dist/application/target-assurance-write.d.ts +22 -0
  62. package/dist/application/target-assurance-write.d.ts.map +1 -0
  63. package/dist/application/target-assurance-write.js +73 -0
  64. package/dist/application/target-assurance-write.js.map +1 -0
  65. package/dist/application/target-governance-init.d.ts +3 -3
  66. package/dist/application/target-governance-init.d.ts.map +1 -1
  67. package/dist/application/target-governance-init.js +14 -10
  68. package/dist/application/target-governance-init.js.map +1 -1
  69. package/dist/application/target-governance-project.d.ts +6 -4
  70. package/dist/application/target-governance-project.d.ts.map +1 -1
  71. package/dist/application/target-governance-project.js +18 -4
  72. package/dist/application/target-governance-project.js.map +1 -1
  73. package/dist/application/target-mutate.d.ts +7 -1
  74. package/dist/application/target-mutate.d.ts.map +1 -1
  75. package/dist/application/target-mutate.js +50 -3
  76. package/dist/application/target-mutate.js.map +1 -1
  77. package/dist/application/target-project-history.d.ts +4 -4
  78. package/dist/application/target-project-history.d.ts.map +1 -1
  79. package/dist/application/target-project-history.js +2 -2
  80. package/dist/application/target-project-history.js.map +1 -1
  81. package/dist/application/target-unit-migration-candidate.d.ts +29 -6
  82. package/dist/application/target-unit-migration-candidate.d.ts.map +1 -1
  83. package/dist/application/target-unit-migration-candidate.js +204 -3
  84. package/dist/application/target-unit-migration-candidate.js.map +1 -1
  85. package/dist/application/target-unit-migration-result.d.ts +2 -2
  86. package/dist/application/target-unit-migration-result.d.ts.map +1 -1
  87. package/dist/application/target-unit-migration-result.js +4 -2
  88. package/dist/application/target-unit-migration-result.js.map +1 -1
  89. package/dist/application/target-velocity-observation.d.ts +1 -1
  90. package/dist/application/target-velocity-observation.js +1 -1
  91. package/dist/assurance/advance.d.ts +45 -0
  92. package/dist/assurance/advance.d.ts.map +1 -0
  93. package/dist/assurance/advance.js +507 -0
  94. package/dist/assurance/advance.js.map +1 -0
  95. package/dist/assurance/authority.d.ts +86 -0
  96. package/dist/assurance/authority.d.ts.map +1 -0
  97. package/dist/assurance/authority.js +269 -0
  98. package/dist/assurance/authority.js.map +1 -0
  99. package/dist/assurance/canonical.d.ts +13 -0
  100. package/dist/assurance/canonical.d.ts.map +1 -0
  101. package/dist/assurance/canonical.js +320 -0
  102. package/dist/assurance/canonical.js.map +1 -0
  103. package/dist/assurance/compatibility.d.ts +62 -0
  104. package/dist/assurance/compatibility.d.ts.map +1 -0
  105. package/dist/assurance/compatibility.js +163 -0
  106. package/dist/assurance/compatibility.js.map +1 -0
  107. package/dist/assurance/evaluate.d.ts +4 -0
  108. package/dist/assurance/evaluate.d.ts.map +1 -0
  109. package/dist/assurance/evaluate.js +631 -0
  110. package/dist/assurance/evaluate.js.map +1 -0
  111. package/dist/assurance/governance.d.ts +42 -0
  112. package/dist/assurance/governance.d.ts.map +1 -0
  113. package/dist/assurance/governance.js +95 -0
  114. package/dist/assurance/governance.js.map +1 -0
  115. package/dist/assurance/mermaid.d.ts +40 -0
  116. package/dist/assurance/mermaid.d.ts.map +1 -0
  117. package/dist/assurance/mermaid.js +401 -0
  118. package/dist/assurance/mermaid.js.map +1 -0
  119. package/dist/assurance/mutation.d.ts +96 -0
  120. package/dist/assurance/mutation.d.ts.map +1 -0
  121. package/dist/assurance/mutation.js +757 -0
  122. package/dist/assurance/mutation.js.map +1 -0
  123. package/dist/assurance/source.d.ts +20 -0
  124. package/dist/assurance/source.d.ts.map +1 -0
  125. package/dist/assurance/source.js +313 -0
  126. package/dist/assurance/source.js.map +1 -0
  127. package/dist/assurance/types.d.ts +166 -0
  128. package/dist/assurance/types.d.ts.map +1 -0
  129. package/dist/assurance/types.js +3 -0
  130. package/dist/assurance/types.js.map +1 -0
  131. package/dist/cli.js +356 -60
  132. package/dist/cli.js.map +1 -1
  133. package/dist/command/assurance-discovery.d.ts +17 -0
  134. package/dist/command/assurance-discovery.d.ts.map +1 -0
  135. package/dist/command/assurance-discovery.js +297 -0
  136. package/dist/command/assurance-discovery.js.map +1 -0
  137. package/dist/command/assurance-usage.d.ts +20 -0
  138. package/dist/command/assurance-usage.d.ts.map +1 -0
  139. package/dist/command/assurance-usage.js +66 -0
  140. package/dist/command/assurance-usage.js.map +1 -0
  141. package/dist/conversion/mermaid.d.ts +2 -1
  142. package/dist/conversion/mermaid.d.ts.map +1 -1
  143. package/dist/conversion/mermaid.js +2 -2
  144. package/dist/conversion/mermaid.js.map +1 -1
  145. package/dist/formatter/source-formatter.d.ts +1 -1
  146. package/dist/formatter/source-formatter.d.ts.map +1 -1
  147. package/dist/formatter/source-formatter.js +56 -4
  148. package/dist/formatter/source-formatter.js.map +1 -1
  149. package/dist/formatter/target-source-formatter.d.ts +2 -1
  150. package/dist/formatter/target-source-formatter.d.ts.map +1 -1
  151. package/dist/formatter/target-source-formatter.js +18 -2
  152. package/dist/formatter/target-source-formatter.js.map +1 -1
  153. package/dist/help/assurance-guide.d.ts +10 -0
  154. package/dist/help/assurance-guide.d.ts.map +1 -0
  155. package/dist/help/assurance-guide.js +227 -0
  156. package/dist/help/assurance-guide.js.map +1 -0
  157. package/dist/help/guide.d.ts +1 -1
  158. package/dist/help/guide.d.ts.map +1 -1
  159. package/dist/history/advance-history.d.ts +4 -2
  160. package/dist/history/advance-history.d.ts.map +1 -1
  161. package/dist/history/advance-history.js +47 -1
  162. package/dist/history/advance-history.js.map +1 -1
  163. package/dist/history/project-history.d.ts +14 -5
  164. package/dist/history/project-history.d.ts.map +1 -1
  165. package/dist/history/project-history.js +27 -20
  166. package/dist/history/project-history.js.map +1 -1
  167. package/dist/history/velocity-observation.js +1 -1
  168. package/dist/history/velocity-observation.js.map +1 -1
  169. package/dist/index.d.ts +31 -27
  170. package/dist/index.d.ts.map +1 -1
  171. package/dist/index.js +12 -15
  172. package/dist/index.js.map +1 -1
  173. package/dist/io/target-safe-write.d.ts +4 -1
  174. package/dist/io/target-safe-write.d.ts.map +1 -1
  175. package/dist/io/target-safe-write.js +19 -1
  176. package/dist/io/target-safe-write.js.map +1 -1
  177. package/dist/migration/grammar-boundary.d.ts +1 -1
  178. package/dist/migration/grammar-boundary.d.ts.map +1 -1
  179. package/dist/migration/grammar-boundary.js +7 -3
  180. package/dist/migration/grammar-boundary.js.map +1 -1
  181. package/dist/model/declaration-fields.d.ts +12 -0
  182. package/dist/model/declaration-fields.d.ts.map +1 -1
  183. package/dist/model/declaration-fields.js +45 -0
  184. package/dist/model/declaration-fields.js.map +1 -1
  185. package/dist/model/syntax.d.ts +17 -1
  186. package/dist/model/syntax.d.ts.map +1 -1
  187. package/dist/model/syntax.js.map +1 -1
  188. package/dist/mutation/actuals.js +1 -1
  189. package/dist/mutation/actuals.js.map +1 -1
  190. package/dist/mutation/advance.d.ts +18 -1
  191. package/dist/mutation/advance.d.ts.map +1 -1
  192. package/dist/mutation/advance.js +20 -0
  193. package/dist/mutation/advance.js.map +1 -1
  194. package/dist/mutation/project.d.ts +2 -1
  195. package/dist/mutation/project.d.ts.map +1 -1
  196. package/dist/mutation/project.js +21 -0
  197. package/dist/mutation/project.js.map +1 -1
  198. package/dist/parser/document-parser.d.ts +7 -0
  199. package/dist/parser/document-parser.d.ts.map +1 -1
  200. package/dist/parser/document-parser.js +227 -12
  201. package/dist/parser/document-parser.js.map +1 -1
  202. package/dist/recommendation/override-types.d.ts +2 -2
  203. package/dist/recommendation/override.d.ts +2 -2
  204. package/dist/recommendation/override.d.ts.map +1 -1
  205. package/dist/recommendation/override.js +13 -5
  206. package/dist/recommendation/override.js.map +1 -1
  207. package/dist/schema/registry.d.ts +1 -1
  208. package/dist/schema/registry.d.ts.map +1 -1
  209. package/dist/schema/registry.js +8 -7
  210. package/dist/schema/registry.js.map +1 -1
  211. package/dist/semantic/target-validator.d.ts +12 -1
  212. package/dist/semantic/target-validator.d.ts.map +1 -1
  213. package/dist/semantic/target-validator.js +47 -2
  214. package/dist/semantic/target-validator.js.map +1 -1
  215. package/dist/semantic/validator.d.ts +1 -0
  216. package/dist/semantic/validator.d.ts.map +1 -1
  217. package/dist/semantic/validator.js +304 -0
  218. package/dist/semantic/validator.js.map +1 -1
  219. package/dist/version.d.ts +1 -1
  220. package/dist/version.js +1 -1
  221. package/package.json +1 -1
  222. package/schemas/{Perttool.AdvanceResult.v1.schema.json → Perttool.AdvanceResult.v2.schema.json} +85 -5
  223. package/schemas/Perttool.AgentGuidanceResult.v1.schema.json +1 -1
  224. package/schemas/{Perttool.AnalysisResult.v4.schema.json → Perttool.AnalysisResult.v5.schema.json} +10 -6
  225. package/schemas/{Perttool.CheckResult.v3.schema.json → Perttool.CheckResult.v4.schema.json} +14 -6
  226. package/schemas/Perttool.CliError.v1.schema.json +1 -1
  227. package/schemas/Perttool.CommandHelpResult.v1.schema.json +2 -2
  228. package/schemas/Perttool.Common.v1.schema.json +300 -4
  229. package/schemas/Perttool.ExportResult.v1.schema.json +1 -1
  230. package/schemas/Perttool.FormatResult.v1.schema.json +1 -1
  231. package/schemas/Perttool.GuideResult.v1.schema.json +1 -1
  232. package/schemas/Perttool.ImportResult.v1.schema.json +1 -1
  233. package/schemas/Perttool.InitResult.v1.schema.json +1 -1
  234. package/schemas/{Perttool.MutationResult.v3.schema.json → Perttool.MutationResult.v4.schema.json} +16 -5
  235. package/schemas/{Perttool.NextResult.v5.schema.json → Perttool.NextResult.v6.schema.json} +53 -8
  236. package/schemas/Perttool.OverrideDecision.v1.schema.json +1 -1
  237. package/schemas/Perttool.PlanAssuranceResult.v1.schema.json +77 -0
  238. package/schemas/Perttool.ProjectHistoryResult.v1.schema.json +1 -1
  239. package/schemas/{Perttool.ProjectResult.v3.schema.json → Perttool.ProjectResult.v4.schema.json} +15 -7
  240. package/schemas/Perttool.SchemaResult.v1.schema.json +1 -1
  241. package/schemas/Perttool.UnitMigrationResult.v3.schema.json +5 -3
  242. package/schemas/Perttool.VelocityObservationResult.v1.schema.json +1 -1
@@ -0,0 +1,62 @@
1
+ import { type HistoryRequest, type ProjectHistoryCoreResultFor } from "../history/project-history.js";
2
+ import type { GitHistoryProbeResult } from "../history/git-probe.js";
3
+ import type { Diagnostic, SourceSpan } from "../model/diagnostics.js";
4
+ import type { DocumentNode, TargetDeclarationKind } from "../model/syntax.js";
5
+ import { type DeclaredGovernance, type EffectiveGovernance } from "../governance/source.js";
6
+ import type { TargetCalendarValue } from "../model/target-calendar.js";
7
+ import type { TargetGrammar6Capability } from "../parser/document-parser.js";
8
+ import { type TargetGrammar6ValidatedDocument, type TargetValidationOptions } from "../semantic/target-validator.js";
9
+ export declare const PLAN_ASSURANCE_COMPATIBILITY_MODEL_VERSION: 1;
10
+ export declare const PLAN_ASSURANCE_DIRECT_EDIT_GUIDANCE: Readonly<{
11
+ modelVersion: 1;
12
+ summary: "Direct edits can invalidate a task plan, planning relation, accepted seal, outcome, or frontier receipt.";
13
+ actions: readonly string[];
14
+ boundaries: readonly string[];
15
+ }>;
16
+ export type AssuranceOwnedSourceKind = "project.plan_assurance_model" | "project.plan_assurance_hash_model" | "task_relation" | "plan_seal" | "task_outcome" | "assurance_receipt";
17
+ export interface AssuranceOwnedSourceRecordV1 {
18
+ readonly kind: AssuranceOwnedSourceKind;
19
+ readonly id: string;
20
+ readonly sourceText: string;
21
+ readonly span: SourceSpan;
22
+ }
23
+ export interface AssuranceOwnedSourceSnapshotV1 {
24
+ readonly modelVersion: typeof PLAN_ASSURANCE_COMPATIBILITY_MODEL_VERSION;
25
+ readonly records: readonly AssuranceOwnedSourceRecordV1[];
26
+ }
27
+ export declare function captureAssuranceOwnedSource(text: string, validated: TargetGrammar6ValidatedDocument): AssuranceOwnedSourceSnapshotV1;
28
+ export declare function assuranceOwnedSourceEqual(before: AssuranceOwnedSourceSnapshotV1, after: AssuranceOwnedSourceSnapshotV1): boolean;
29
+ export declare function planAssuranceSemanticDigest(validated: TargetGrammar6ValidatedDocument): string;
30
+ export interface PlanAssuranceProjectMetadataV1 {
31
+ readonly id: string;
32
+ readonly grammarVersion: 6;
33
+ readonly title: string;
34
+ readonly description: string | null;
35
+ readonly asOf: TargetCalendarValue | null;
36
+ readonly durationUnit: "day" | "hour" | "point";
37
+ readonly velocity: string | null;
38
+ readonly finish: string;
39
+ readonly governance: {
40
+ readonly sourceContractVersion: 1;
41
+ readonly declared: DeclaredGovernance;
42
+ readonly effective: EffectiveGovernance;
43
+ };
44
+ readonly assurance: {
45
+ readonly enabled: boolean;
46
+ readonly modelVersion: number | null;
47
+ readonly hashModelVersion: number | null;
48
+ };
49
+ }
50
+ export interface PlanAssuranceProjectMetadataResultV1 {
51
+ readonly ok: boolean;
52
+ readonly documentId: string | null;
53
+ readonly grammarVersion: 6 | null;
54
+ readonly project: PlanAssuranceProjectMetadataV1 | null;
55
+ readonly diagnostics: readonly Diagnostic[];
56
+ readonly diagnosticsTruncated: boolean;
57
+ }
58
+ export declare function getPlanAssuranceProjectMetadata(text: string, capability: TargetGrammar6Capability, options?: TargetValidationOptions): PlanAssuranceProjectMetadataResultV1;
59
+ export type PlanAssuranceProjectHistoryResultV1 = ProjectHistoryCoreResultFor<1 | 2 | 3 | 4 | 5 | 6>;
60
+ export declare function inspectPlanAssuranceProjectHistory(probe: GitHistoryProbeResult, request: HistoryRequest, capability: TargetGrammar6Capability): PlanAssuranceProjectHistoryResultV1;
61
+ export declare function assuranceOwnedDeclarationCount(document: DocumentNode<TargetDeclarationKind>): number;
62
+ //# sourceMappingURL=compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/assurance/compatibility.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,2BAA2B,EAEjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAEV,YAAY,EACZ,qBAAqB,EAEtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAEL,KAAK,+BAA+B,EACpC,KAAK,uBAAuB,EAC7B,MAAM,iCAAiC,CAAC;AAGzC,eAAO,MAAM,0CAA0C,EAAG,CAAU,CAAC;AAErE,eAAO,MAAM,mCAAmC;kBAChC,CAAC;;;;EAaf,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAChC,8BAA8B,GAC9B,mCAAmC,GACnC,eAAe,GACf,WAAW,GACX,cAAc,GACd,mBAAmB,CAAC;AAExB,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,YAAY,EAAE,OAAO,0CAA0C,CAAC;IACzE,QAAQ,CAAC,OAAO,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAC3D;AAaD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,+BAA+B,GACzC,8BAA8B,CAqChC;AAQD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,8BAA8B,EACtC,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAOT;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,+BAA+B,GACzC,MAAM,CAGR;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAClC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;QACtC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACzC,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1C,CAAC;CACH;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,8BAA8B,GAAG,IAAI,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;CACxC;AAUD,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,wBAAwB,EACpC,OAAO,GAAE,uBAA4B,GACpC,oCAAoC,CAuEtC;AAED,MAAM,MAAM,mCAAmC,GAC7C,2BAA2B,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAErD,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,wBAAwB,GACnC,mCAAmC,CAerC;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,YAAY,CAAC,qBAAqB,CAAC,GAC5C,MAAM,CAIR"}
@@ -0,0 +1,163 @@
1
+ import { createHash } from "node:crypto";
2
+ import { inspectProjectHistoryWithValidator, } from "../history/project-history.js";
3
+ import { fieldNamed } from "../model/syntax.js";
4
+ import { governanceMetadataFromDocument, } from "../governance/source.js";
5
+ import { projectDeclaredCalendarValue } from "../model/target-calendar.js";
6
+ import { validateTargetGrammar6Document, } from "../semantic/target-validator.js";
7
+ import { projectPlanAssuranceInput } from "./source.js";
8
+ export const PLAN_ASSURANCE_COMPATIBILITY_MODEL_VERSION = 1;
9
+ export const PLAN_ASSURANCE_DIRECT_EDIT_GUIDANCE = Object.freeze({
10
+ modelVersion: 1,
11
+ summary: "Direct edits can invalidate a task plan, planning relation, accepted seal, outcome, or frontier receipt.",
12
+ actions: Object.freeze([
13
+ "Inspect semantic task fields and affected planning descendants before editing hashes.",
14
+ "Use the read-only hash projection only as supplemental identity evidence.",
15
+ "Replan the affected tasks, then use the governed reseal mutation against one fresh candidate.",
16
+ ]),
17
+ boundaries: Object.freeze([
18
+ "Hash inspection does not add, replace, or repair a plan_seal or assurance_receipt.",
19
+ "Hash inspection does not accept a plan or authorize reseal or persistence.",
20
+ "A matching digest is not a digital signature or proof that the plan is correct.",
21
+ ]),
22
+ });
23
+ const assuranceDeclarationKinds = new Set([
24
+ "task_relation",
25
+ "plan_seal",
26
+ "task_outcome",
27
+ "assurance_receipt",
28
+ ]);
29
+ function sourceAt(text, span) {
30
+ return text.slice(span.start.offset, span.end.offset);
31
+ }
32
+ export function captureAssuranceOwnedSource(text, validated) {
33
+ const records = [];
34
+ const project = validated.document.declarations.find(({ kind }) => kind === "project");
35
+ if (project !== undefined) {
36
+ for (const [fieldName, kind] of [
37
+ ["plan_assurance_model", "project.plan_assurance_model"],
38
+ ["plan_assurance_hash_model", "project.plan_assurance_hash_model"],
39
+ ]) {
40
+ const field = fieldNamed(project, fieldName);
41
+ if (field !== undefined) {
42
+ records.push(Object.freeze({
43
+ kind,
44
+ id: project.id,
45
+ sourceText: sourceAt(text, field.span),
46
+ span: field.span,
47
+ }));
48
+ }
49
+ }
50
+ }
51
+ for (const declaration of validated.document.declarations) {
52
+ if (!assuranceDeclarationKinds.has(declaration.kind))
53
+ continue;
54
+ records.push(Object.freeze({
55
+ kind: declaration.kind,
56
+ id: declaration.id,
57
+ sourceText: sourceAt(text, declaration.span),
58
+ span: declaration.span,
59
+ }));
60
+ }
61
+ return Object.freeze({
62
+ modelVersion: PLAN_ASSURANCE_COMPATIBILITY_MODEL_VERSION,
63
+ records: Object.freeze(records),
64
+ });
65
+ }
66
+ function protectedRecordIdentity(record) {
67
+ return `${record.kind}\u0000${record.id}`;
68
+ }
69
+ export function assuranceOwnedSourceEqual(before, after) {
70
+ const compact = (snapshot) => snapshot.records.map((record) => [
71
+ protectedRecordIdentity(record),
72
+ record.sourceText,
73
+ ]);
74
+ return JSON.stringify(compact(before)) === JSON.stringify(compact(after));
75
+ }
76
+ export function planAssuranceSemanticDigest(validated) {
77
+ const bytes = JSON.stringify(projectPlanAssuranceInput(validated));
78
+ return `sha256:${createHash("sha256").update(bytes, "utf8").digest("hex")}`;
79
+ }
80
+ function stringValue(declaration, name) {
81
+ const value = fieldNamed(declaration, name)?.value;
82
+ return typeof value === "string" ? value : null;
83
+ }
84
+ export function getPlanAssuranceProjectMetadata(text, capability, options = {}) {
85
+ const checked = validateTargetGrammar6Document(text, capability, options);
86
+ const validated = checked.validatedDocument;
87
+ const project = validated?.document.declarations.find(({ kind }) => kind === "project");
88
+ if (!checked.ok ||
89
+ validated === null ||
90
+ validated.grammarVersion !== 6 ||
91
+ project === undefined) {
92
+ return Object.freeze({
93
+ ok: false,
94
+ documentId: checked.documentId,
95
+ grammarVersion: null,
96
+ project: null,
97
+ diagnostics: checked.diagnostics,
98
+ diagnosticsTruncated: checked.diagnosticsTruncated,
99
+ });
100
+ }
101
+ const title = stringValue(project, "title");
102
+ const durationUnit = fieldNamed(project, "duration_unit")?.value;
103
+ const finish = stringValue(project, "finish");
104
+ if (title === null ||
105
+ finish === null ||
106
+ (durationUnit !== "day" &&
107
+ durationUnit !== "hour" &&
108
+ durationUnit !== "point")) {
109
+ throw new Error("validated Grammar 6 project metadata is incomplete");
110
+ }
111
+ const asOfField = fieldNamed(project, "as_of");
112
+ const asOf = asOfField === undefined
113
+ ? null
114
+ : projectDeclaredCalendarValue(asOfField.value);
115
+ if (asOfField !== undefined && asOf === null) {
116
+ throw new Error("validated Grammar 6 project calendar is unprojectable");
117
+ }
118
+ const model = fieldNamed(project, "plan_assurance_model")?.value;
119
+ const hashModel = fieldNamed(project, "plan_assurance_hash_model")?.value;
120
+ const governance = governanceMetadataFromDocument(validated.document);
121
+ return Object.freeze({
122
+ ok: true,
123
+ documentId: checked.documentId,
124
+ grammarVersion: 6,
125
+ project: Object.freeze({
126
+ id: project.id,
127
+ grammarVersion: 6,
128
+ title,
129
+ description: stringValue(project, "description"),
130
+ asOf,
131
+ durationUnit,
132
+ velocity: fieldNamed(project, "velocity")?.value
133
+ ?.text ?? null,
134
+ finish,
135
+ governance: Object.freeze({
136
+ sourceContractVersion: 1,
137
+ ...governance,
138
+ }),
139
+ assurance: Object.freeze({
140
+ enabled: model !== undefined || hashModel !== undefined,
141
+ modelVersion: typeof model === "number" ? model : null,
142
+ hashModelVersion: typeof hashModel === "number" ? hashModel : null,
143
+ }),
144
+ }),
145
+ diagnostics: checked.diagnostics,
146
+ diagnosticsTruncated: checked.diagnosticsTruncated,
147
+ });
148
+ }
149
+ export function inspectPlanAssuranceProjectHistory(probe, request, capability) {
150
+ return inspectProjectHistoryWithValidator(probe, request, (text) => {
151
+ const checked = validateTargetGrammar6Document(text, capability);
152
+ return {
153
+ ok: checked.ok && checked.validatedDocument !== null,
154
+ documentId: checked.documentId,
155
+ grammarVersion: checked.validatedDocument?.grammarVersion ?? null,
156
+ document: checked.validatedDocument?.document ?? checked.document,
157
+ };
158
+ });
159
+ }
160
+ export function assuranceOwnedDeclarationCount(document) {
161
+ return document.declarations.filter(({ kind }) => assuranceDeclarationKinds.has(kind)).length;
162
+ }
163
+ //# sourceMappingURL=compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/assurance/compatibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PlanAssuranceEvaluationV1, PlanAssuranceInputV1, PlanAssuranceTaskResultV1, TaskAssuranceInputV1 } from "./types.js";
2
+ export declare function evaluatePlanAssurance(input: PlanAssuranceInputV1): PlanAssuranceEvaluationV1;
3
+ export declare function sealTaskResult(result: PlanAssuranceTaskResultV1): NonNullable<TaskAssuranceInputV1["seal"]>;
4
+ //# sourceMappingURL=evaluate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/assurance/evaluate.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAMV,yBAAyB,EACzB,oBAAoB,EAEpB,yBAAyB,EAKzB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AA2bpB,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,oBAAoB,GAC1B,yBAAyB,CA0Z3B;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,yBAAyB,GAChC,WAAW,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAS3C"}