perttool 0.11.1 → 0.12.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 (179) hide show
  1. package/CHANGELOG.md +32 -1
  2. package/README.md +9 -4
  3. package/dist/application/cli-facade.d.ts +2 -1
  4. package/dist/application/cli-facade.d.ts.map +1 -1
  5. package/dist/application/cli-facade.js +2 -1
  6. package/dist/application/cli-facade.js.map +1 -1
  7. package/dist/application/contract11-candidate.d.ts +23 -0
  8. package/dist/application/contract11-candidate.d.ts.map +1 -0
  9. package/dist/application/contract11-candidate.js +48 -0
  10. package/dist/application/contract11-candidate.js.map +1 -0
  11. package/dist/application/contract11-migration.d.ts +35 -0
  12. package/dist/application/contract11-migration.d.ts.map +1 -0
  13. package/dist/application/contract11-migration.js +46 -0
  14. package/dist/application/contract11-migration.js.map +1 -0
  15. package/dist/application/contract11-runtime.d.ts +11 -0
  16. package/dist/application/contract11-runtime.d.ts.map +1 -0
  17. package/dist/application/contract11-runtime.js +65 -0
  18. package/dist/application/contract11-runtime.js.map +1 -0
  19. package/dist/application/contract8-milestone-acceptance.d.ts +6 -0
  20. package/dist/application/contract8-milestone-acceptance.d.ts.map +1 -1
  21. package/dist/application/contract8-milestone-acceptance.js +10 -1
  22. package/dist/application/contract8-milestone-acceptance.js.map +1 -1
  23. package/dist/application/contract9-projection.d.ts +1 -1
  24. package/dist/application/contract9-projection.d.ts.map +1 -1
  25. package/dist/application/contract9-projection.js.map +1 -1
  26. package/dist/application/plan-review-mutation.d.ts +52 -0
  27. package/dist/application/plan-review-mutation.d.ts.map +1 -0
  28. package/dist/application/plan-review-mutation.js +86 -0
  29. package/dist/application/plan-review-mutation.js.map +1 -0
  30. package/dist/assurance/canonical.d.ts +3 -1
  31. package/dist/assurance/canonical.d.ts.map +1 -1
  32. package/dist/assurance/canonical.js +2 -2
  33. package/dist/assurance/canonical.js.map +1 -1
  34. package/dist/cli.js +490 -132
  35. package/dist/cli.js.map +1 -1
  36. package/dist/command/contract11-discovery.d.ts +17 -0
  37. package/dist/command/contract11-discovery.d.ts.map +1 -0
  38. package/dist/command/contract11-discovery.js +129 -0
  39. package/dist/command/contract11-discovery.js.map +1 -0
  40. package/dist/command/contract11-usage.d.ts +24 -0
  41. package/dist/command/contract11-usage.d.ts.map +1 -0
  42. package/dist/command/contract11-usage.js +39 -0
  43. package/dist/command/contract11-usage.js.map +1 -0
  44. package/dist/core/index.d.ts +2 -2
  45. package/dist/core/index.d.ts.map +1 -1
  46. package/dist/core/index.js +2 -1
  47. package/dist/core/index.js.map +1 -1
  48. package/dist/help/contract11-guide.d.ts +10 -0
  49. package/dist/help/contract11-guide.d.ts.map +1 -0
  50. package/dist/help/contract11-guide.js +73 -0
  51. package/dist/help/contract11-guide.js.map +1 -0
  52. package/dist/history/project-history.d.ts.map +1 -1
  53. package/dist/history/project-history.js +15 -0
  54. package/dist/history/project-history.js.map +1 -1
  55. package/dist/history/unit-conversion-proof.d.ts +7 -0
  56. package/dist/history/unit-conversion-proof.d.ts.map +1 -0
  57. package/dist/history/unit-conversion-proof.js +83 -0
  58. package/dist/history/unit-conversion-proof.js.map +1 -0
  59. package/dist/index.d.ts +19 -5
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +15 -4
  62. package/dist/index.js.map +1 -1
  63. package/dist/model/rfc8785.d.ts +2 -0
  64. package/dist/model/rfc8785.d.ts.map +1 -0
  65. package/dist/model/rfc8785.js +47 -0
  66. package/dist/model/rfc8785.js.map +1 -0
  67. package/dist/plan-review/advance.d.ts +28 -0
  68. package/dist/plan-review/advance.d.ts.map +1 -0
  69. package/dist/plan-review/advance.js +67 -0
  70. package/dist/plan-review/advance.js.map +1 -0
  71. package/dist/plan-review/authority.d.ts +4 -0
  72. package/dist/plan-review/authority.d.ts.map +1 -0
  73. package/dist/plan-review/authority.js +21 -0
  74. package/dist/plan-review/authority.js.map +1 -0
  75. package/dist/plan-review/basis.d.ts +25 -0
  76. package/dist/plan-review/basis.d.ts.map +1 -0
  77. package/dist/plan-review/basis.js +287 -0
  78. package/dist/plan-review/basis.js.map +1 -0
  79. package/dist/plan-review/format.d.ts +5 -0
  80. package/dist/plan-review/format.d.ts.map +1 -0
  81. package/dist/plan-review/format.js +54 -0
  82. package/dist/plan-review/format.js.map +1 -0
  83. package/dist/plan-review/lifecycle.d.ts +11 -0
  84. package/dist/plan-review/lifecycle.d.ts.map +1 -0
  85. package/dist/plan-review/lifecycle.js +80 -0
  86. package/dist/plan-review/lifecycle.js.map +1 -0
  87. package/dist/plan-review/mutation-types.d.ts +112 -0
  88. package/dist/plan-review/mutation-types.d.ts.map +1 -0
  89. package/dist/plan-review/mutation-types.js +4 -0
  90. package/dist/plan-review/mutation-types.js.map +1 -0
  91. package/dist/plan-review/mutation.d.ts +4 -0
  92. package/dist/plan-review/mutation.d.ts.map +1 -0
  93. package/dist/plan-review/mutation.js +421 -0
  94. package/dist/plan-review/mutation.js.map +1 -0
  95. package/dist/plan-review/projection.d.ts +4 -0
  96. package/dist/plan-review/projection.d.ts.map +1 -0
  97. package/dist/plan-review/projection.js +19 -0
  98. package/dist/plan-review/projection.js.map +1 -0
  99. package/dist/plan-review/request-size.d.ts +3 -0
  100. package/dist/plan-review/request-size.d.ts.map +1 -0
  101. package/dist/plan-review/request-size.js +86 -0
  102. package/dist/plan-review/request-size.js.map +1 -0
  103. package/dist/plan-review/request.d.ts +11 -0
  104. package/dist/plan-review/request.d.ts.map +1 -0
  105. package/dist/plan-review/request.js +268 -0
  106. package/dist/plan-review/request.js.map +1 -0
  107. package/dist/plan-review/source-lexical.d.ts +23 -0
  108. package/dist/plan-review/source-lexical.d.ts.map +1 -0
  109. package/dist/plan-review/source-lexical.js +75 -0
  110. package/dist/plan-review/source-lexical.js.map +1 -0
  111. package/dist/plan-review/source-types.d.ts +81 -0
  112. package/dist/plan-review/source-types.d.ts.map +1 -0
  113. package/dist/plan-review/source-types.js +2 -0
  114. package/dist/plan-review/source-types.js.map +1 -0
  115. package/dist/plan-review/source.d.ts +16 -0
  116. package/dist/plan-review/source.d.ts.map +1 -0
  117. package/dist/plan-review/source.js +346 -0
  118. package/dist/plan-review/source.js.map +1 -0
  119. package/dist/plan-review/write.d.ts +4 -0
  120. package/dist/plan-review/write.d.ts.map +1 -0
  121. package/dist/plan-review/write.js +51 -0
  122. package/dist/plan-review/write.js.map +1 -0
  123. package/dist/planning-pool/history-guard.d.ts +7 -1
  124. package/dist/planning-pool/history-guard.d.ts.map +1 -1
  125. package/dist/planning-pool/history-guard.js +13 -12
  126. package/dist/planning-pool/history-guard.js.map +1 -1
  127. package/dist/planning-pool/projection.d.ts +1 -1
  128. package/dist/planning-pool/projection.d.ts.map +1 -1
  129. package/dist/planning-pool/projection.js.map +1 -1
  130. package/dist/planning-pool/source-lexical.d.ts.map +1 -1
  131. package/dist/planning-pool/source-lexical.js +2 -22
  132. package/dist/planning-pool/source-lexical.js.map +1 -1
  133. package/dist/recommendation/override-types.d.ts +2 -2
  134. package/dist/recommendation/override-types.d.ts.map +1 -1
  135. package/dist/recommendation/override.d.ts +1 -1
  136. package/dist/recommendation/override.d.ts.map +1 -1
  137. package/dist/recommendation/override.js +6 -5
  138. package/dist/recommendation/override.js.map +1 -1
  139. package/dist/schema/registry.d.ts +1 -1
  140. package/dist/schema/registry.d.ts.map +1 -1
  141. package/dist/schema/registry.js +5 -2
  142. package/dist/schema/registry.js.map +1 -1
  143. package/dist/temporal-schedule/source-lexical.d.ts +5 -0
  144. package/dist/temporal-schedule/source-lexical.d.ts.map +1 -1
  145. package/dist/temporal-schedule/source-lexical.js +21 -4
  146. package/dist/temporal-schedule/source-lexical.js.map +1 -1
  147. package/dist/version.d.ts +1 -1
  148. package/dist/version.d.ts.map +1 -1
  149. package/dist/version.js +2 -1
  150. package/dist/version.js.map +1 -1
  151. package/package.json +1 -1
  152. package/schemas/Perttool.AdvanceResult.v4.schema.json +4 -1
  153. package/schemas/Perttool.AgentGuidanceResult.v1.schema.json +1 -1
  154. package/schemas/Perttool.AnalysisResult.v7.schema.json +1 -1
  155. package/schemas/Perttool.CheckResult.v6.schema.json +1 -1
  156. package/schemas/Perttool.CliError.v1.schema.json +1 -1
  157. package/schemas/Perttool.CommandHelpResult.v1.schema.json +2 -2
  158. package/schemas/Perttool.ExportResult.v1.schema.json +1 -1
  159. package/schemas/Perttool.FormatResult.v1.schema.json +1 -1
  160. package/schemas/Perttool.GuideResult.v1.schema.json +1 -1
  161. package/schemas/Perttool.HistoricalGraphResult.v1.schema.json +1 -1
  162. package/schemas/Perttool.ImportResult.v1.schema.json +1 -1
  163. package/schemas/Perttool.InitResult.v1.schema.json +1 -1
  164. package/schemas/Perttool.MilestoneAcceptanceMigrationResult.v1.schema.json +1 -1
  165. package/schemas/Perttool.MilestoneAcceptanceResult.v1.schema.json +1 -1
  166. package/schemas/Perttool.MutationResult.v6.schema.json +1 -1
  167. package/schemas/{Perttool.NextResult.v8.schema.json → Perttool.NextResult.v9.schema.json} +40 -7
  168. package/schemas/Perttool.PlanAssuranceResult.v2.schema.json +1 -1
  169. package/schemas/Perttool.PlanReviewMutationResult.v1.schema.json +2203 -0
  170. package/schemas/Perttool.PlanReviewResult.v1.schema.json +245 -0
  171. package/schemas/Perttool.PlanningMutationResult.v1.schema.json +1 -1
  172. package/schemas/Perttool.PlanningPoolResult.v1.schema.json +1 -1
  173. package/schemas/Perttool.PlanningReshapePreflightResult.v1.schema.json +1 -1
  174. package/schemas/Perttool.ProjectHistoryResult.v1.schema.json +1 -1
  175. package/schemas/Perttool.ProjectResult.v5.schema.json +1 -1
  176. package/schemas/Perttool.SchemaResult.v1.schema.json +1 -1
  177. package/schemas/Perttool.UnitMigrationResult.v5.schema.json +1 -1
  178. package/schemas/Perttool.VelocityObservationResult.v1.schema.json +1 -1
  179. package/dist/perttool-vscode-private-0.0.0-d1578b9.vsix +0 -0
@@ -0,0 +1,112 @@
1
+ import type { Diagnostic } from "../model/diagnostics.js";
2
+ import type { BatchMutation } from "../mutation/types.js";
3
+ import type { TextEdit } from "../mutation/text-edits.js";
4
+ import type { PlanReviewProjectionV1, PlanReviewRequestSource } from "./source-types.js";
5
+ export declare const PLAN_REVIEW_CREATE_REQUEST_ID: "Perttool.PlanReviewCreateRequest.v1";
6
+ export declare const PLAN_REVIEW_RESOLVE_REQUEST_ID: "Perttool.PlanReviewResolveRequest.v1";
7
+ export declare const PLAN_REVIEW_AUTHORITY_ID: "Perttool.PlanReviewAuthorityDecision.v1";
8
+ export interface PlanReviewCreateRequestV1 {
9
+ readonly schemaVersion: typeof PLAN_REVIEW_CREATE_REQUEST_ID;
10
+ readonly requestId: string;
11
+ readonly taskId: string;
12
+ readonly reason: string;
13
+ readonly createdAt: string;
14
+ readonly actor: string;
15
+ readonly locator?: string;
16
+ }
17
+ export interface PlanReviewResolveRequestV1 {
18
+ readonly schemaVersion: typeof PLAN_REVIEW_RESOLVE_REQUEST_ID;
19
+ readonly requestId: string;
20
+ readonly outcome: "plan_retained" | "plan_changed";
21
+ readonly resolvedAt: string;
22
+ readonly actor: string;
23
+ readonly resolutionReason: string;
24
+ readonly acceptedOwners?: readonly string[];
25
+ readonly request?: BatchMutation;
26
+ }
27
+ export interface NormalizedPlanReviewCreateRequestV1 extends Omit<PlanReviewCreateRequestV1, "locator"> {
28
+ readonly locator: string | null;
29
+ }
30
+ export interface NormalizedPlanReviewResolveRequestV1 extends Omit<PlanReviewResolveRequestV1, "acceptedOwners" | "request"> {
31
+ readonly acceptedOwners: readonly string[];
32
+ readonly request: BatchMutation | null;
33
+ readonly canonicalChangeRequest: string | null;
34
+ readonly changeRequestDigest: string | null;
35
+ }
36
+ export interface PlanReviewAuthorityDecisionV1 {
37
+ readonly model_version: 1;
38
+ readonly request_id: string;
39
+ readonly source_digest: string;
40
+ readonly candidate_digest: string;
41
+ readonly actor: string;
42
+ readonly effective_dag_owner: string;
43
+ readonly effective_dag_delegates: readonly string[];
44
+ readonly actor_direct: boolean;
45
+ readonly owner_confirmation_required: boolean;
46
+ readonly owner_confirmation_satisfied: boolean;
47
+ readonly authorized: boolean;
48
+ }
49
+ export interface PlanReviewComposedMutationResult {
50
+ readonly ok: boolean;
51
+ readonly changed: boolean;
52
+ readonly originalDigest: string;
53
+ readonly updatedDigest: string | null;
54
+ readonly updatedText: string | null;
55
+ readonly edits: readonly TextEdit[];
56
+ readonly diagnostics: readonly Diagnostic[];
57
+ readonly diagnosticsTruncated: boolean;
58
+ readonly [field: string]: unknown;
59
+ }
60
+ export interface PlanReviewMutationPlanBasis {
61
+ readonly status: "unchanged" | "changed";
62
+ readonly beforeDigest: string | null;
63
+ readonly afterDigest: string | null;
64
+ }
65
+ export interface PlanReviewMutationCoreResult {
66
+ readonly operation: "create" | "resolve";
67
+ readonly ok: boolean;
68
+ readonly documentId: string | null;
69
+ readonly changed: boolean;
70
+ readonly originalDigest: string;
71
+ readonly updatedDigest: string | null;
72
+ readonly updatedText: string | null;
73
+ readonly diff: string | null;
74
+ readonly edits: readonly TextEdit[];
75
+ readonly requestBefore: PlanReviewRequestSource | null;
76
+ readonly requestAfter: PlanReviewRequestSource | null;
77
+ readonly projectionBefore: PlanReviewProjectionV1 | null;
78
+ readonly projectionAfter: PlanReviewProjectionV1 | null;
79
+ readonly planBasis: PlanReviewMutationPlanBasis;
80
+ readonly planReviewAuthority: PlanReviewAuthorityDecisionV1 | null;
81
+ readonly composedMutation: PlanReviewComposedMutationResult | null;
82
+ readonly diagnostics: readonly Diagnostic[];
83
+ readonly diagnosticsTruncated: boolean;
84
+ }
85
+ export interface PlanReviewMutationOptions {
86
+ readonly originalLabel?: string;
87
+ readonly updatedLabel?: string;
88
+ readonly expectedDigest?: string;
89
+ readonly maxDiagnostics?: number;
90
+ }
91
+ export interface PlanReviewMutationDependencies {
92
+ readonly composeBatch: (text: string, request: BatchMutation, authority: Readonly<{
93
+ actor: string;
94
+ acceptedOwners: readonly string[];
95
+ }>) => PlanReviewComposedMutationResult;
96
+ }
97
+ export type PlanReviewPersistenceRequest = {
98
+ readonly mode: "in_place";
99
+ readonly target: string;
100
+ readonly expectedDigest?: string;
101
+ } | {
102
+ readonly mode: "out";
103
+ readonly source: string;
104
+ readonly target: string;
105
+ readonly fileMode?: number;
106
+ };
107
+ export interface PlanReviewWriteProjection {
108
+ readonly mode: "in_place" | "out";
109
+ readonly target: string;
110
+ readonly written: boolean;
111
+ }
112
+ //# sourceMappingURL=mutation-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-types.d.ts","sourceRoot":"","sources":["../../src/plan-review/mutation-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export const PLAN_REVIEW_CREATE_REQUEST_ID = "Perttool.PlanReviewCreateRequest.v1";
2
+ export const PLAN_REVIEW_RESOLVE_REQUEST_ID = "Perttool.PlanReviewResolveRequest.v1";
3
+ export const PLAN_REVIEW_AUTHORITY_ID = "Perttool.PlanReviewAuthorityDecision.v1";
4
+ //# sourceMappingURL=mutation-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-types.js","sourceRoot":"","sources":["../../src/plan-review/mutation-types.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,6BAA6B,GACxC,qCAA8C,CAAC;AACjD,MAAM,CAAC,MAAM,8BAA8B,GACzC,sCAA+C,CAAC;AAClD,MAAM,CAAC,MAAM,wBAAwB,GACnC,yCAAkD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { PlanReviewMutationCoreResult, PlanReviewMutationDependencies, PlanReviewMutationOptions } from "./mutation-types.js";
2
+ export declare function planPlanReviewCreate(text: string, input: unknown, options?: PlanReviewMutationOptions): PlanReviewMutationCoreResult;
3
+ export declare function planPlanReviewResolve(text: string, input: unknown, options?: PlanReviewMutationOptions, dependencies?: PlanReviewMutationDependencies): PlanReviewMutationCoreResult;
4
+ //# sourceMappingURL=mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../../src/plan-review/mutation.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAIV,4BAA4B,EAC5B,8BAA8B,EAC9B,yBAAyB,EAE1B,MAAM,qBAAqB,CAAC;AAyO7B,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,yBAA8B,GACtC,4BAA4B,CAuC9B;AA+UD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,yBAA8B,EACvC,YAAY,GAAE,8BAAoD,GACjE,4BAA4B,CA0B9B"}
@@ -0,0 +1,421 @@
1
+ // R: Plan one validated Plan Review create or resolution candidate.
2
+ import { createUnifiedDiff } from "../editing/unified-diff.js";
3
+ import { governanceMetadataFromDocument } from "../governance/source.js";
4
+ import { compareStableStrings, limitDiagnostics, normalizeMaxDiagnostics, sortDiagnostics, } from "../model/diagnostics.js";
5
+ import { sha256DigestUtf8 } from "../model/sha256.js";
6
+ import { applyTextEdits, normalizeTextEdits, } from "../mutation/text-edits.js";
7
+ import { splitTemporalSourceLines } from "../temporal-schedule/source-lexical.js";
8
+ import { evaluatePlanReviewAuthority } from "./authority.js";
9
+ import { assessPlanReviewTaskLifecycle } from "./lifecycle.js";
10
+ import { digestPlanReviewBasis, projectPlanReviewBasis } from "./basis.js";
11
+ import { normalizePlanReviewCreateRequest, normalizePlanReviewResolveRequest, } from "./request.js";
12
+ import { projectPlanReviewState } from "./projection.js";
13
+ import { planReviewBaseText, scanPlanReviewDeclarationBlocks, } from "./source-lexical.js";
14
+ import { parsePlanReviewSource, PLAN_REVIEW_SOURCE_CAPABILITY, } from "./source.js";
15
+ const emptyBasis = Object.freeze({
16
+ status: "unchanged",
17
+ beforeDigest: null,
18
+ afterDigest: null,
19
+ });
20
+ function diagnostic(code, message, data = {}) {
21
+ return Object.freeze({
22
+ code,
23
+ severity: "error",
24
+ message,
25
+ helpTopic: "editing",
26
+ data: Object.freeze(data),
27
+ });
28
+ }
29
+ function failure(operation, text, documentId, diagnostics, options, details = {}) {
30
+ const limited = limitDiagnostics(sortDiagnostics(diagnostics), normalizeMaxDiagnostics(options.maxDiagnostics));
31
+ return Object.freeze({
32
+ operation,
33
+ ok: false,
34
+ documentId,
35
+ changed: false,
36
+ originalDigest: sha256DigestUtf8(text),
37
+ updatedDigest: null,
38
+ updatedText: null,
39
+ diff: null,
40
+ edits: Object.freeze([]),
41
+ requestBefore: details.requestBefore ?? null,
42
+ requestAfter: null,
43
+ projectionBefore: details.projectionBefore ?? null,
44
+ projectionAfter: null,
45
+ planBasis: emptyBasis,
46
+ planReviewAuthority: details.planReviewAuthority ?? null,
47
+ composedMutation: details.composedMutation ?? null,
48
+ diagnostics: limited.diagnostics,
49
+ diagnosticsTruncated: limited.truncated,
50
+ });
51
+ }
52
+ function successful(input) {
53
+ const { operation, text, candidate, edits, before, after, requestBefore, requestAfter, planBasis, authority, composedMutation, diagnostics, options } = input;
54
+ const limited = limitDiagnostics(sortDiagnostics(diagnostics), normalizeMaxDiagnostics(options.maxDiagnostics));
55
+ return Object.freeze({
56
+ operation,
57
+ ok: !limited.diagnostics.some(({ severity }) => severity === "error"),
58
+ documentId: before.documentId,
59
+ changed: candidate !== text,
60
+ originalDigest: sha256DigestUtf8(text),
61
+ updatedDigest: sha256DigestUtf8(candidate),
62
+ updatedText: candidate,
63
+ diff: candidate === text ? null : createUnifiedDiff(text, candidate, {
64
+ originalLabel: options.originalLabel ?? "original",
65
+ updatedLabel: options.updatedLabel ?? "candidate",
66
+ }),
67
+ edits,
68
+ requestBefore,
69
+ requestAfter,
70
+ projectionBefore: projectPlanReviewState(before),
71
+ projectionAfter: projectPlanReviewState(after),
72
+ planBasis,
73
+ planReviewAuthority: authority,
74
+ composedMutation,
75
+ diagnostics: limited.diagnostics,
76
+ diagnosticsTruncated: limited.truncated,
77
+ });
78
+ }
79
+ function validSource(operation, text, options) {
80
+ const source = parsePlanReviewSource(text, PLAN_REVIEW_SOURCE_CAPABILITY, options);
81
+ if (!source.ok || source.model === null || source.grammarVersion !== 10) {
82
+ const diagnostics = source.grammarVersion !== 10
83
+ ? [diagnostic("PTREV-110", "Plan Review mutations require Grammar 10", {
84
+ grammar_version: source.grammarVersion,
85
+ })]
86
+ : source.diagnostics;
87
+ return failure(operation, text, source.documentId, diagnostics, options);
88
+ }
89
+ if (options.expectedDigest !== undefined &&
90
+ options.expectedDigest !== sha256DigestUtf8(text)) {
91
+ return failure(operation, text, source.documentId, [diagnostic("PTREV-106", "Plan Review source binding is stale", { cause: "expected_digest_mismatch" })], options);
92
+ }
93
+ return Object.freeze({ model: source.model });
94
+ }
95
+ function lineEnding(text) {
96
+ return text.includes("\r\n") ? "\r\n" : "\n";
97
+ }
98
+ function serializedOpen(request, eol) {
99
+ return [
100
+ `plan_review_request ${request.requestId} ${request.taskId}:`,
101
+ " model 1",
102
+ ` reason ${JSON.stringify(request.reason)}`,
103
+ ` created_at ${request.createdAt}`,
104
+ ` created_by ${request.actor}`,
105
+ ...(request.locator === null ? [] : [` locator ${JSON.stringify(request.locator)}`]),
106
+ ].join(eol);
107
+ }
108
+ function createInsertion(text, requestId, declaration) {
109
+ const blocks = scanPlanReviewDeclarationBlocks(text);
110
+ const nextRequest = blocks.find(({ id }) => compareStableStrings(id, requestId) > 0);
111
+ const firstLater = splitTemporalSourceLines(text).find((line) => /^(?:task_relation|plan_seal|task_outcome|assurance_receipt|milestone_criterion_set|milestone_acceptance_receipt|work_event)\b/u.test(line.text));
112
+ const offset = nextRequest?.header.start ?? firstLater?.start ?? text.length;
113
+ const eol = lineEnding(text);
114
+ const prefix = offset > 0 && !text.slice(0, offset).endsWith(`${eol}${eol}`) ? eol : "";
115
+ const suffix = offset === text.length
116
+ ? (text.endsWith(eol) ? eol : `${eol}${eol}`)
117
+ : "";
118
+ return Object.freeze({
119
+ startOffset: offset,
120
+ endOffset: offset,
121
+ replacement: `${prefix}${declaration}${eol}${suffix}`,
122
+ });
123
+ }
124
+ function requestNamed(model, id) {
125
+ return model.requests.find((request) => request.id === id) ?? null;
126
+ }
127
+ function exactCreateReplay(stored, request) {
128
+ return stored.taskId === request.taskId && stored.reason === request.reason &&
129
+ stored.createdAt === request.createdAt && stored.createdBy === request.actor &&
130
+ stored.locator === request.locator;
131
+ }
132
+ function replayResult(operation, text, model, stored) {
133
+ const digest = sha256DigestUtf8(text);
134
+ const projection = projectPlanReviewState(model);
135
+ return Object.freeze({
136
+ operation,
137
+ ok: true,
138
+ documentId: model.documentId,
139
+ changed: false,
140
+ originalDigest: digest,
141
+ updatedDigest: digest,
142
+ updatedText: text,
143
+ diff: null,
144
+ edits: Object.freeze([]),
145
+ requestBefore: stored,
146
+ requestAfter: stored,
147
+ projectionBefore: projection,
148
+ projectionAfter: projection,
149
+ planBasis: emptyBasis,
150
+ planReviewAuthority: null,
151
+ composedMutation: null,
152
+ diagnostics: Object.freeze([]),
153
+ diagnosticsTruncated: false,
154
+ });
155
+ }
156
+ export function planPlanReviewCreate(text, input, options = {}) {
157
+ const checked = validSource("create", text, options);
158
+ if (!("model" in checked))
159
+ return checked;
160
+ const normalized = normalizePlanReviewCreateRequest(input);
161
+ if (!normalized.ok || normalized.request === null) {
162
+ return failure("create", text, checked.model.documentId, normalized.diagnostics, options, { projectionBefore: projectPlanReviewState(checked.model) });
163
+ }
164
+ const existing = requestNamed(checked.model, normalized.request.requestId);
165
+ if (existing !== null) {
166
+ return exactCreateReplay(existing, normalized.request)
167
+ ? replayResult("create", text, checked.model, existing)
168
+ : failure("create", text, checked.model.documentId, [diagnostic("PTREV-105", "Plan Review request identity already has different normalized content", { request_id: normalized.request.requestId })], options, { requestBefore: existing, projectionBefore: projectPlanReviewState(checked.model) });
169
+ }
170
+ const edit = createInsertion(text, normalized.request.requestId, serializedOpen(normalized.request, lineEnding(text)));
171
+ const edits = normalizeTextEdits(text, [edit], "Plan Review create");
172
+ const candidate = applyTextEdits(text, edits);
173
+ const after = parsePlanReviewSource(candidate, PLAN_REVIEW_SOURCE_CAPABILITY, options);
174
+ if (!after.ok || after.model === null) {
175
+ return failure("create", text, checked.model.documentId, after.diagnostics, options, { projectionBefore: projectPlanReviewState(checked.model) });
176
+ }
177
+ const created = requestNamed(after.model, normalized.request.requestId);
178
+ if (created === null)
179
+ throw new Error("Plan Review create candidate lost its request");
180
+ return successful({
181
+ operation: "create", text, candidate, edits, before: checked.model,
182
+ after: after.model, requestBefore: null, requestAfter: created,
183
+ planBasis: emptyBasis, authority: null, composedMutation: null,
184
+ diagnostics: [], options,
185
+ });
186
+ }
187
+ function exactResolveReplay(stored, request) {
188
+ return stored.outcome === request.outcome && stored.resolvedAt === request.resolvedAt &&
189
+ stored.resolvedBy === request.actor && stored.resolutionReason === request.resolutionReason &&
190
+ stored.changeRequestDigest === request.changeRequestDigest;
191
+ }
192
+ const defaultDependencies = Object.freeze({
193
+ composeBatch: () => {
194
+ throw new TypeError("Plan Review plan_changed composition requires an Application batch planner");
195
+ },
196
+ });
197
+ function reboundComposedMutation(result, text, candidate) {
198
+ const sourceDigest = sha256DigestUtf8(text);
199
+ const governance = result["governance"];
200
+ return Object.freeze({
201
+ ...result,
202
+ originalDigest: sourceDigest,
203
+ updatedDigest: sha256DigestUtf8(candidate),
204
+ updatedText: candidate,
205
+ diff: createUnifiedDiff(text, candidate, {
206
+ originalLabel: "original",
207
+ updatedLabel: "candidate",
208
+ }),
209
+ ...(governance === null || typeof governance !== "object"
210
+ ? {}
211
+ : { governance: Object.freeze({
212
+ ...governance,
213
+ sourceDigest,
214
+ }) }),
215
+ });
216
+ }
217
+ function liftGrammar9EditsToGrammar10(text, edits) {
218
+ const versionStart = text.indexOf(" version 10");
219
+ if (versionStart < 0) {
220
+ throw new Error("Grammar 10 source lost its version field");
221
+ }
222
+ const baseBoundary = versionStart + " version 9".length;
223
+ const lift = (offset) => offset >= baseBoundary ? offset + 1 : offset;
224
+ return Object.freeze(edits.map((edit) => Object.freeze({
225
+ ...edit,
226
+ startOffset: lift(edit.startOffset),
227
+ endOffset: lift(edit.endOffset),
228
+ })));
229
+ }
230
+ function resolutionEdit(stored, request, reviewedSourceDigest, beforeBasis, afterBasis, eol) {
231
+ const fields = [
232
+ ` outcome ${request.outcome}`,
233
+ ` resolved_at ${request.resolvedAt}`,
234
+ ` resolved_by ${request.actor}`,
235
+ ` resolution_reason ${JSON.stringify(request.resolutionReason)}`,
236
+ ` reviewed_source_digest ${reviewedSourceDigest}`,
237
+ ...(request.outcome === "plan_changed" ? [
238
+ ` change_request_digest ${request.changeRequestDigest}`,
239
+ ` plan_basis_before ${beforeBasis}`,
240
+ ` plan_basis_after ${afterBasis}`,
241
+ ] : []),
242
+ ];
243
+ return Object.freeze({
244
+ startOffset: stored.span.end.offset,
245
+ endOffset: stored.span.end.offset,
246
+ replacement: `${eol}${fields.join(eol)}`,
247
+ });
248
+ }
249
+ function prepareResolve(text, input, options) {
250
+ const checked = validSource("resolve", text, options);
251
+ if (!("model" in checked))
252
+ return checked;
253
+ const projectionBefore = projectPlanReviewState(checked.model);
254
+ const normalized = normalizePlanReviewResolveRequest(input);
255
+ if (!normalized.ok || normalized.request === null) {
256
+ return failure("resolve", text, checked.model.documentId, normalized.diagnostics, options, { projectionBefore });
257
+ }
258
+ const stored = requestNamed(checked.model, normalized.request.requestId);
259
+ if (stored === null) {
260
+ return failure("resolve", text, checked.model.documentId, [diagnostic("PTREV-104", "Plan Review request does not exist", { request_id: normalized.request.requestId })], options, { projectionBefore });
261
+ }
262
+ if (stored.outcome !== null) {
263
+ return exactResolveReplay(stored, normalized.request)
264
+ ? replayResult("resolve", text, checked.model, stored)
265
+ : failure("resolve", text, checked.model.documentId, [diagnostic("PTREV-105", "Plan Review resolution replay does not match stored evidence", { request_id: stored.id })], options, { requestBefore: stored, projectionBefore });
266
+ }
267
+ return Object.freeze({
268
+ text, options, model: checked.model, projectionBefore,
269
+ request: normalized.request, stored,
270
+ });
271
+ }
272
+ function composeResolutionPlan(context, dependencies) {
273
+ if (context.request.outcome === "plan_retained") {
274
+ return Object.freeze({
275
+ planCandidate: context.text,
276
+ planEdits: Object.freeze([]),
277
+ composed: null,
278
+ });
279
+ }
280
+ if (context.request.request === null) {
281
+ throw new Error("normalized plan_changed request lost its batch");
282
+ }
283
+ const base = planReviewBaseText(context.text, scanPlanReviewDeclarationBlocks(context.text));
284
+ const planned = dependencies.composeBatch(base, context.request.request, {
285
+ actor: context.request.actor,
286
+ acceptedOwners: context.request.acceptedOwners,
287
+ });
288
+ const guarded = planned.ok && planned.changed && planned.updatedText !== null &&
289
+ planned.updatedDigest !== null &&
290
+ !planned.diagnostics.some(({ severity }) => severity === "error");
291
+ if (!guarded) {
292
+ return failure("resolve", context.text, context.model.documentId, [
293
+ ...planned.diagnostics,
294
+ diagnostic("PTREV-109", "composed Plan Review plan mutation did not satisfy every independent guard", { request_id: context.stored.id }),
295
+ ], context.options, {
296
+ requestBefore: context.stored,
297
+ projectionBefore: context.projectionBefore,
298
+ composedMutation: planned,
299
+ });
300
+ }
301
+ const planEdits = liftGrammar9EditsToGrammar10(context.text, planned.edits);
302
+ const planCandidate = applyTextEdits(context.text, planEdits);
303
+ return Object.freeze({
304
+ planCandidate,
305
+ planEdits,
306
+ composed: reboundComposedMutation(planned, context.text, planCandidate),
307
+ });
308
+ }
309
+ function evaluateResolutionBasis(context, composition) {
310
+ const beforeDigest = digestPlanReviewBasis(projectPlanReviewBasis(context.model));
311
+ const probeRequest = context.request.outcome === "plan_changed"
312
+ ? Object.freeze({
313
+ ...context.request,
314
+ outcome: "plan_retained",
315
+ request: null,
316
+ canonicalChangeRequest: null,
317
+ changeRequestDigest: null,
318
+ })
319
+ : context.request;
320
+ const probeEdit = resolutionEdit(context.stored, probeRequest, sha256DigestUtf8(composition.planCandidate), beforeDigest, beforeDigest, lineEnding(context.text));
321
+ const probeEdits = normalizeTextEdits(context.text, [...composition.planEdits, probeEdit], "Plan Review basis probe");
322
+ const probe = parsePlanReviewSource(applyTextEdits(context.text, probeEdits), PLAN_REVIEW_SOURCE_CAPABILITY, context.options);
323
+ if (probe.model === null) {
324
+ return failure("resolve", context.text, context.model.documentId, [diagnostic("PTREV-109", "complete Plan Review candidate basis is unavailable", { request_id: context.stored.id })], context.options, {
325
+ requestBefore: context.stored,
326
+ projectionBefore: context.projectionBefore,
327
+ composedMutation: composition.composed,
328
+ });
329
+ }
330
+ const afterDigest = digestPlanReviewBasis(projectPlanReviewBasis(probe.model));
331
+ const changed = beforeDigest !== afterDigest;
332
+ if (changed !== (context.request.outcome === "plan_changed")) {
333
+ return failure("resolve", context.text, context.model.documentId, [diagnostic("PTREV-107", context.request.outcome === "plan_retained"
334
+ ? "plan_retained requires an unchanged Plan Review basis"
335
+ : "plan_changed requires a changed Plan Review basis", { request_id: context.stored.id, before: beforeDigest, after: afterDigest })], context.options, {
336
+ requestBefore: context.stored,
337
+ projectionBefore: context.projectionBefore,
338
+ composedMutation: composition.composed,
339
+ });
340
+ }
341
+ return Object.freeze({
342
+ beforeDigest,
343
+ afterDigest,
344
+ projection: changed
345
+ ? Object.freeze({ status: "changed", beforeDigest, afterDigest })
346
+ : emptyBasis,
347
+ });
348
+ }
349
+ function finalizeResolution(context, composition, basis) {
350
+ const finalEdit = resolutionEdit(context.stored, context.request, sha256DigestUtf8(composition.planCandidate), basis.beforeDigest, basis.afterDigest, lineEnding(context.text));
351
+ const edits = normalizeTextEdits(context.text, [...composition.planEdits, finalEdit], "Plan Review complete resolution");
352
+ const candidate = applyTextEdits(context.text, edits);
353
+ const lifecycle = assessPlanReviewTaskLifecycle(context.text, candidate, "ordinary");
354
+ if (!lifecycle.ok) {
355
+ return failure("resolve", context.text, context.model.documentId, lifecycle.diagnostics, context.options, {
356
+ requestBefore: context.stored,
357
+ projectionBefore: context.projectionBefore,
358
+ composedMutation: composition.composed,
359
+ });
360
+ }
361
+ const after = parsePlanReviewSource(candidate, PLAN_REVIEW_SOURCE_CAPABILITY, context.options);
362
+ if (!after.ok || after.model === null) {
363
+ return failure("resolve", context.text, context.model.documentId, after.diagnostics, context.options, {
364
+ requestBefore: context.stored,
365
+ projectionBefore: context.projectionBefore,
366
+ composedMutation: composition.composed,
367
+ });
368
+ }
369
+ const authority = evaluatePlanReviewAuthority(context.stored.id, sha256DigestUtf8(context.text), sha256DigestUtf8(candidate), context.request.actor, context.request.acceptedOwners, governanceMetadataFromDocument(context.model.baseDocument.document).effective);
370
+ if (!authority.authorized) {
371
+ return failure("resolve", context.text, context.model.documentId, [diagnostic("PTREV-106", "Plan Review resolution authority was not established", { request_id: context.stored.id, required_owner: authority.effective_dag_owner })], context.options, {
372
+ requestBefore: context.stored,
373
+ projectionBefore: context.projectionBefore,
374
+ planReviewAuthority: authority,
375
+ composedMutation: composition.composed,
376
+ });
377
+ }
378
+ const resolved = requestNamed(after.model, context.stored.id);
379
+ if (resolved === null) {
380
+ throw new Error("Plan Review resolution candidate lost its request");
381
+ }
382
+ return successful({
383
+ operation: "resolve",
384
+ text: context.text,
385
+ candidate,
386
+ edits,
387
+ before: context.model,
388
+ after: after.model,
389
+ requestBefore: context.stored,
390
+ requestAfter: resolved,
391
+ planBasis: basis.projection,
392
+ authority,
393
+ composedMutation: composition.composed,
394
+ diagnostics: composition.composed?.diagnostics ?? [],
395
+ options: context.options,
396
+ });
397
+ }
398
+ export function planPlanReviewResolve(text, input, options = {}, dependencies = defaultDependencies) {
399
+ const prepared = prepareResolve(text, input, options);
400
+ if ("operation" in prepared)
401
+ return prepared;
402
+ const composition = composeResolutionPlan(prepared, dependencies);
403
+ if ("operation" in composition)
404
+ return composition;
405
+ if (prepared.request.outcome === "plan_changed") {
406
+ const preliminary = assessPlanReviewTaskLifecycle(text, composition.planCandidate, "ordinary");
407
+ const otherOpen = preliminary.blockingRequestIds
408
+ .filter((id) => id !== prepared.stored.id);
409
+ if (otherOpen.length > 0)
410
+ return failure("resolve", text, prepared.model.documentId, [diagnostic("PTREV-108", `Task removal would orphan Plan Review request(s): ${otherOpen.join(", ")}`, { request_ids: Object.freeze(otherOpen) })], options, {
411
+ requestBefore: prepared.stored,
412
+ projectionBefore: prepared.projectionBefore,
413
+ composedMutation: composition.composed,
414
+ });
415
+ }
416
+ const basis = evaluateResolutionBasis(prepared, composition);
417
+ if ("operation" in basis)
418
+ return basis;
419
+ return finalizeResolution(prepared, composition, basis);
420
+ }
421
+ //# sourceMappingURL=mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation.js","sourceRoot":"","sources":["../../src/plan-review/mutation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PlanReviewProjectionV1, PlanReviewSourceModel } from "./source-types.js";
2
+ export declare const PLAN_REVIEW_PROJECTION_MODEL_VERSION: 1;
3
+ export declare function projectPlanReviewState(model: PlanReviewSourceModel): PlanReviewProjectionV1;
4
+ //# sourceMappingURL=projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../src/plan-review/projection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,oCAAoC,EAAG,CAAU,CAAC;AAE/D,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,sBAAsB,CAgBxB"}
@@ -0,0 +1,19 @@
1
+ export const PLAN_REVIEW_PROJECTION_MODEL_VERSION = 1;
2
+ export function projectPlanReviewState(model) {
3
+ const openRequestIds = Object.freeze(model.requests
4
+ .filter(({ outcome }) => outcome === null)
5
+ .map(({ id }) => id));
6
+ const requiredActions = openRequestIds.length === 0
7
+ ? Object.freeze([])
8
+ : Object.freeze([Object.freeze({
9
+ kind: "review_before_new_downstream_work",
10
+ request_ids: openRequestIds,
11
+ })]);
12
+ return Object.freeze({
13
+ model_version: PLAN_REVIEW_PROJECTION_MODEL_VERSION,
14
+ state: openRequestIds.length === 0 ? "clear" : "review_required",
15
+ open_request_ids: openRequestIds,
16
+ required_actions: requiredActions,
17
+ });
18
+ }
19
+ //# sourceMappingURL=projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../src/plan-review/projection.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAU,CAAC;AAE/D,MAAM,UAAU,sBAAsB,CACpC,KAA4B;IAE5B,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;SAChD,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;SACzC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACnB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC3B,IAAI,EAAE,mCAA4C;gBAClD,WAAW,EAAE,cAAc;aAC5B,CAAC,CAAC,CAAC,CAAC;IACT,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,aAAa,EAAE,oCAAoC;QACnD,KAAK,EAAE,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB;QAChE,gBAAgB,EAAE,cAAc;QAChC,gBAAgB,EAAE,eAAe;KAClC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Count canonical JSON bytes without constructing escaped strings or JSON. */
2
+ export declare function planReviewBatchFitsUtf8(value: unknown, maximum: number): boolean;
3
+ //# sourceMappingURL=request-size.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-size.d.ts","sourceRoot":"","sources":["../../src/plan-review/request-size.ts"],"names":[],"mappings":"AAIA,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CA8DhF"}