perttool 0.9.4 → 0.10.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.
- package/CHANGELOG.md +29 -1
- package/README.md +38 -17
- package/dist/application/cli-facade.d.ts +33 -8
- package/dist/application/cli-facade.d.ts.map +1 -1
- package/dist/application/cli-facade.js +1 -2
- package/dist/application/cli-facade.js.map +1 -1
- package/dist/application/contract9-assurance-mutation.d.ts +35 -0
- package/dist/application/contract9-assurance-mutation.d.ts.map +1 -0
- package/dist/application/contract9-assurance-mutation.js +146 -0
- package/dist/application/contract9-assurance-mutation.js.map +1 -0
- package/dist/application/contract9-assurance.d.ts +23 -0
- package/dist/application/contract9-assurance.d.ts.map +1 -0
- package/dist/application/contract9-assurance.js +114 -0
- package/dist/application/contract9-assurance.js.map +1 -0
- package/dist/application/contract9-candidate.d.ts +33 -0
- package/dist/application/contract9-candidate.d.ts.map +1 -0
- package/dist/application/contract9-candidate.js +39 -0
- package/dist/application/contract9-candidate.js.map +1 -0
- package/dist/application/contract9-format-migration.d.ts +22 -0
- package/dist/application/contract9-format-migration.d.ts.map +1 -0
- package/dist/application/contract9-format-migration.js +52 -0
- package/dist/application/contract9-format-migration.js.map +1 -0
- package/dist/application/contract9-mixed-mutation.d.ts +14 -0
- package/dist/application/contract9-mixed-mutation.d.ts.map +1 -0
- package/dist/application/contract9-mixed-mutation.js +88 -0
- package/dist/application/contract9-mixed-mutation.js.map +1 -0
- package/dist/application/contract9-project.d.ts +15 -0
- package/dist/application/contract9-project.d.ts.map +1 -0
- package/dist/application/contract9-project.js +24 -0
- package/dist/application/contract9-project.js.map +1 -0
- package/dist/application/contract9-projection.d.ts +23 -0
- package/dist/application/contract9-projection.d.ts.map +1 -0
- package/dist/application/contract9-projection.js +89 -0
- package/dist/application/contract9-projection.js.map +1 -0
- package/dist/application/contract9-runtime.d.ts +43 -0
- package/dist/application/contract9-runtime.d.ts.map +1 -0
- package/dist/application/contract9-runtime.js +36 -0
- package/dist/application/contract9-runtime.js.map +1 -0
- package/dist/application/contract9-temporal-context.d.ts +15 -0
- package/dist/application/contract9-temporal-context.d.ts.map +1 -0
- package/dist/application/contract9-temporal-context.js +127 -0
- package/dist/application/contract9-temporal-context.js.map +1 -0
- package/dist/application/contract9-temporal-mutation.d.ts +20 -0
- package/dist/application/contract9-temporal-mutation.d.ts.map +1 -0
- package/dist/application/contract9-temporal-mutation.js +78 -0
- package/dist/application/contract9-temporal-mutation.js.map +1 -0
- package/dist/application/contract9-temporal.d.ts +17 -0
- package/dist/application/contract9-temporal.d.ts.map +1 -0
- package/dist/application/contract9-temporal.js +65 -0
- package/dist/application/contract9-temporal.js.map +1 -0
- package/dist/application/contract9-write.d.ts +28 -0
- package/dist/application/contract9-write.d.ts.map +1 -0
- package/dist/application/contract9-write.js +25 -0
- package/dist/application/contract9-write.js.map +1 -0
- package/dist/application/editor-milestone-acceptance.d.ts +4 -0
- package/dist/application/editor-milestone-acceptance.d.ts.map +1 -1
- package/dist/application/editor-milestone-acceptance.js +90 -0
- package/dist/application/editor-milestone-acceptance.js.map +1 -1
- package/dist/application/editor-repair.d.ts +12 -0
- package/dist/application/editor-repair.d.ts.map +1 -0
- package/dist/application/editor-repair.js +74 -0
- package/dist/application/editor-repair.js.map +1 -0
- package/dist/application/target-postdue-analysis.d.ts +18 -0
- package/dist/application/target-postdue-analysis.d.ts.map +1 -0
- package/dist/application/target-postdue-analysis.js +26 -0
- package/dist/application/target-postdue-analysis.js.map +1 -0
- package/dist/application/target-postdue-check.d.ts +10 -0
- package/dist/application/target-postdue-check.d.ts.map +1 -0
- package/dist/application/target-postdue-check.js +18 -0
- package/dist/application/target-postdue-check.js.map +1 -0
- package/dist/application/target-postdue-next.d.ts +10 -0
- package/dist/application/target-postdue-next.d.ts.map +1 -0
- package/dist/application/target-postdue-next.js +13 -0
- package/dist/application/target-postdue-next.js.map +1 -0
- package/dist/application/target-postdue-projection.d.ts +11 -0
- package/dist/application/target-postdue-projection.d.ts.map +1 -0
- package/dist/application/target-postdue-projection.js +17 -0
- package/dist/application/target-postdue-projection.js.map +1 -0
- package/dist/assurance/canonical.d.ts +3 -3
- package/dist/assurance/canonical.d.ts.map +1 -1
- package/dist/assurance/canonical.js +19 -6
- package/dist/assurance/canonical.js.map +1 -1
- package/dist/assurance/evaluate.d.ts.map +1 -1
- package/dist/assurance/evaluate.js +10 -2
- package/dist/assurance/evaluate.js.map +1 -1
- package/dist/assurance/types.d.ts +11 -1
- package/dist/assurance/types.d.ts.map +1 -1
- package/dist/cli.js +184 -85
- package/dist/cli.js.map +1 -1
- package/dist/command/contract9-discovery.d.ts +17 -0
- package/dist/command/contract9-discovery.d.ts.map +1 -0
- package/dist/command/contract9-discovery.js +126 -0
- package/dist/command/contract9-discovery.js.map +1 -0
- package/dist/command/contract9-usage.d.ts +24 -0
- package/dist/command/contract9-usage.d.ts.map +1 -0
- package/dist/command/contract9-usage.js +23 -0
- package/dist/command/contract9-usage.js.map +1 -0
- package/dist/core/index.d.ts +4 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/editor/repair.d.ts +95 -0
- package/dist/editor/repair.d.ts.map +1 -0
- package/dist/editor/repair.js +232 -0
- package/dist/editor/repair.js.map +1 -0
- package/dist/editor/semantic-fingerprint.d.ts +8 -0
- package/dist/editor/semantic-fingerprint.d.ts.map +1 -0
- package/dist/editor/semantic-fingerprint.js +177 -0
- package/dist/editor/semantic-fingerprint.js.map +1 -0
- package/dist/help/assurance-guide.js +7 -7
- package/dist/help/assurance-guide.js.map +1 -1
- package/dist/help/contract9-guide.d.ts +10 -0
- package/dist/help/contract9-guide.d.ts.map +1 -0
- package/dist/help/contract9-guide.js +32 -0
- package/dist/help/contract9-guide.js.map +1 -0
- package/dist/help/guide.d.ts +1 -1
- package/dist/help/guide.d.ts.map +1 -1
- package/dist/index.d.ts +10 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/mutation/advance.d.ts.map +1 -1
- package/dist/mutation/advance.js.map +1 -1
- package/dist/perttool-vscode-private-0.0.0-d1578b9.vsix +0 -0
- package/dist/recommendation/override-types.d.ts +2 -2
- package/dist/recommendation/override.js +2 -2
- package/dist/schema/registry.d.ts +1 -1
- package/dist/schema/registry.js +8 -8
- package/dist/session/document-session.d.ts +23 -0
- package/dist/session/document-session.d.ts.map +1 -1
- package/dist/session/document-session.js +104 -2
- package/dist/session/document-session.js.map +1 -1
- package/dist/temporal-schedule/alert-types.d.ts +109 -0
- package/dist/temporal-schedule/alert-types.d.ts.map +1 -0
- package/dist/temporal-schedule/alert-types.js +2 -0
- package/dist/temporal-schedule/alert-types.js.map +1 -0
- package/dist/temporal-schedule/alert.d.ts +4 -0
- package/dist/temporal-schedule/alert.d.ts.map +1 -0
- package/dist/temporal-schedule/alert.js +214 -0
- package/dist/temporal-schedule/alert.js.map +1 -0
- package/dist/temporal-schedule/calendar-mutation.d.ts +11 -0
- package/dist/temporal-schedule/calendar-mutation.d.ts.map +1 -0
- package/dist/temporal-schedule/calendar-mutation.js +59 -0
- package/dist/temporal-schedule/calendar-mutation.js.map +1 -0
- package/dist/temporal-schedule/calendar.d.ts +16 -0
- package/dist/temporal-schedule/calendar.d.ts.map +1 -0
- package/dist/temporal-schedule/calendar.js +179 -0
- package/dist/temporal-schedule/calendar.js.map +1 -0
- package/dist/temporal-schedule/constraint-types.d.ts +47 -0
- package/dist/temporal-schedule/constraint-types.d.ts.map +1 -0
- package/dist/temporal-schedule/constraint-types.js +2 -0
- package/dist/temporal-schedule/constraint-types.js.map +1 -0
- package/dist/temporal-schedule/constraint.d.ts +7 -0
- package/dist/temporal-schedule/constraint.d.ts.map +1 -0
- package/dist/temporal-schedule/constraint.js +224 -0
- package/dist/temporal-schedule/constraint.js.map +1 -0
- package/dist/temporal-schedule/entity-mutation.d.ts +31 -0
- package/dist/temporal-schedule/entity-mutation.d.ts.map +1 -0
- package/dist/temporal-schedule/entity-mutation.js +107 -0
- package/dist/temporal-schedule/entity-mutation.js.map +1 -0
- package/dist/temporal-schedule/format.d.ts +9 -0
- package/dist/temporal-schedule/format.d.ts.map +1 -0
- package/dist/temporal-schedule/format.js +183 -0
- package/dist/temporal-schedule/format.js.map +1 -0
- package/dist/temporal-schedule/required-types.d.ts +68 -0
- package/dist/temporal-schedule/required-types.d.ts.map +1 -0
- package/dist/temporal-schedule/required-types.js +2 -0
- package/dist/temporal-schedule/required-types.js.map +1 -0
- package/dist/temporal-schedule/required.d.ts +5 -0
- package/dist/temporal-schedule/required.d.ts.map +1 -0
- package/dist/temporal-schedule/required.js +183 -0
- package/dist/temporal-schedule/required.js.map +1 -0
- package/dist/temporal-schedule/schedule-graph.d.ts +8 -0
- package/dist/temporal-schedule/schedule-graph.d.ts.map +1 -0
- package/dist/temporal-schedule/schedule-graph.js +33 -0
- package/dist/temporal-schedule/schedule-graph.js.map +1 -0
- package/dist/temporal-schedule/scheduler-types.d.ts +115 -0
- package/dist/temporal-schedule/scheduler-types.d.ts.map +1 -0
- package/dist/temporal-schedule/scheduler-types.js +2 -0
- package/dist/temporal-schedule/scheduler-types.js.map +1 -0
- package/dist/temporal-schedule/scheduler.d.ts +12 -0
- package/dist/temporal-schedule/scheduler.d.ts.map +1 -0
- package/dist/temporal-schedule/scheduler.js +584 -0
- package/dist/temporal-schedule/scheduler.js.map +1 -0
- package/dist/temporal-schedule/source-lexical.d.ts +30 -0
- package/dist/temporal-schedule/source-lexical.d.ts.map +1 -0
- package/dist/temporal-schedule/source-lexical.js +166 -0
- package/dist/temporal-schedule/source-lexical.js.map +1 -0
- package/dist/temporal-schedule/source-types.d.ts +124 -0
- package/dist/temporal-schedule/source-types.d.ts.map +1 -0
- package/dist/temporal-schedule/source-types.js +2 -0
- package/dist/temporal-schedule/source-types.js.map +1 -0
- package/dist/temporal-schedule/source-values.d.ts +17 -0
- package/dist/temporal-schedule/source-values.d.ts.map +1 -0
- package/dist/temporal-schedule/source-values.js +138 -0
- package/dist/temporal-schedule/source-values.js.map +1 -0
- package/dist/temporal-schedule/source.d.ts +17 -0
- package/dist/temporal-schedule/source.d.ts.map +1 -0
- package/dist/temporal-schedule/source.js +520 -0
- package/dist/temporal-schedule/source.js.map +1 -0
- package/dist/temporal-schedule/tzdb-2026c.d.ts +7 -0
- package/dist/temporal-schedule/tzdb-2026c.d.ts.map +1 -0
- package/dist/temporal-schedule/tzdb-2026c.js +611 -0
- package/dist/temporal-schedule/tzdb-2026c.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/schemas/Perttool.AdvanceResult.v3.schema.json +1 -1
- package/schemas/Perttool.AgentGuidanceResult.v1.schema.json +1 -1
- package/schemas/{Perttool.AnalysisResult.v6.schema.json → Perttool.AnalysisResult.v7.schema.json} +178 -6
- package/schemas/{Perttool.CheckResult.v5.schema.json → Perttool.CheckResult.v6.schema.json} +10 -6
- package/schemas/Perttool.CliError.v1.schema.json +1 -1
- package/schemas/Perttool.CommandHelpResult.v1.schema.json +2 -2
- package/schemas/Perttool.ExportResult.v1.schema.json +1 -1
- package/schemas/Perttool.FormatResult.v1.schema.json +1 -1
- package/schemas/Perttool.GuideResult.v1.schema.json +1 -1
- package/schemas/Perttool.HistoricalGraphResult.v1.schema.json +1 -1
- package/schemas/Perttool.ImportResult.v1.schema.json +1 -1
- package/schemas/Perttool.InitResult.v1.schema.json +1 -1
- package/schemas/Perttool.MilestoneAcceptanceMigrationResult.v1.schema.json +1 -1
- package/schemas/Perttool.MilestoneAcceptanceResult.v1.schema.json +1 -1
- package/schemas/{Perttool.MutationResult.v5.schema.json → Perttool.MutationResult.v6.schema.json} +4 -4
- package/schemas/{Perttool.NextResult.v7.schema.json → Perttool.NextResult.v8.schema.json} +10 -6
- package/schemas/Perttool.OverrideDecision.v1.schema.json +1 -1
- package/schemas/{Perttool.PlanAssuranceResult.v1.schema.json → Perttool.PlanAssuranceResult.v2.schema.json} +5 -5
- package/schemas/Perttool.ProjectHistoryResult.v1.schema.json +1 -1
- package/schemas/{Perttool.ProjectResult.v4.schema.json → Perttool.ProjectResult.v5.schema.json} +70 -7
- package/schemas/Perttool.SchemaResult.v1.schema.json +1 -1
- package/schemas/{Perttool.UnitMigrationResult.v3.schema.json → Perttool.UnitMigrationResult.v4.schema.json} +5 -5
- package/schemas/Perttool.VelocityObservationResult.v1.schema.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type DocumentNode, type TargetDeclarationKind } from "../model/syntax.js";
|
|
2
|
+
import type { TemporalScheduleSourceResult } from "../temporal-schedule/source-types.js";
|
|
3
|
+
export type Contract9DriverLevel = "none" | "compact" | "full";
|
|
4
|
+
export declare function composeContract9TemporalContext(text: string, document: DocumentNode<TargetDeclarationKind>, operand: string, driverLevel: Contract9DriverLevel, capacityOverrides?: ReadonlyMap<string, number>): Readonly<{
|
|
5
|
+
source: TemporalScheduleSourceResult;
|
|
6
|
+
scheduler: null;
|
|
7
|
+
required: null;
|
|
8
|
+
alerts: null;
|
|
9
|
+
}> | Readonly<{
|
|
10
|
+
source: TemporalScheduleSourceResult;
|
|
11
|
+
scheduler: import("../temporal-schedule/scheduler-types.js").CalendarSchedulerResult;
|
|
12
|
+
required: import("../temporal-schedule/required-types.js").RequiredScheduleResult;
|
|
13
|
+
alerts: import("../temporal-schedule/alert-types.js").ScheduleAlertResult;
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=contract9-temporal-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-temporal-context.d.ts","sourceRoot":"","sources":["../../src/application/contract9-temporal-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAW/F,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AA2F/D,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,YAAY,CAAC,qBAAqB,CAAC,EAC7C,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,oBAAoB,EACjC,iBAAiB,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa;;;;;;;;;;GAwB3D"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { buildResidualGraph } from "../analysis/graph.js";
|
|
2
|
+
import { fieldNamed } from "../model/syntax.js";
|
|
3
|
+
import { parseDeclaredCalendarValue } from "../model/calendar.js";
|
|
4
|
+
import { add, divide, multiply, rational } from "../model/rational.js";
|
|
5
|
+
import { sha256DigestUtf8 } from "../model/sha256.js";
|
|
6
|
+
import { analyzeTemporalConstraints, TEMPORAL_CONSTRAINT_CAPABILITY } from "../temporal-schedule/constraint.js";
|
|
7
|
+
import { analyzeRequiredSchedule, REQUIRED_SCHEDULE_CAPABILITY } from "../temporal-schedule/required.js";
|
|
8
|
+
import { analyzeCalendarSchedule, TEMPORAL_SCHEDULE_SCHEDULER_CAPABILITY } from "../temporal-schedule/scheduler.js";
|
|
9
|
+
import { evaluateScheduleAlerts, SCHEDULE_ALERT_CAPABILITY } from "../temporal-schedule/alert.js";
|
|
10
|
+
import { parseTemporalScheduleSource, TEMPORAL_SCHEDULE_SOURCE_CAPABILITY } from "../temporal-schedule/source.js";
|
|
11
|
+
function instant(value) {
|
|
12
|
+
if (value === undefined || value.kind === "date")
|
|
13
|
+
return null;
|
|
14
|
+
const whole = Date.UTC(value.year, value.month - 1, value.day, value.hour, value.minute, 0) / 1000
|
|
15
|
+
- value.offsetMinutes * 60;
|
|
16
|
+
return add(rational(BigInt(whole)), value.second);
|
|
17
|
+
}
|
|
18
|
+
function workSeconds(expected, graph, source) {
|
|
19
|
+
if (graph.durationUnit === "hour")
|
|
20
|
+
return multiply(expected, rational(3600n));
|
|
21
|
+
const model = source.model;
|
|
22
|
+
const workday = model.profile.kind === "named_zone" ? model.profile.workdayHours : null;
|
|
23
|
+
if (graph.durationUnit === "day")
|
|
24
|
+
return workday === null ? null : multiply(multiply(expected, workday), rational(3600n));
|
|
25
|
+
if (graph.velocity === null)
|
|
26
|
+
return null;
|
|
27
|
+
const periodSeconds = graph.velocity.periodUnit === "hour"
|
|
28
|
+
? multiply(graph.velocity.period, rational(3600n))
|
|
29
|
+
: workday === null ? null : multiply(multiply(graph.velocity.period, workday), rational(3600n));
|
|
30
|
+
return periodSeconds === null ? null : multiply(divide(expected, graph.velocity.points), periodSeconds);
|
|
31
|
+
}
|
|
32
|
+
function schedulerInput(document, source, capacityOverrides) {
|
|
33
|
+
const graph = buildResidualGraph(document);
|
|
34
|
+
const asOf = source.model?.asOf?.instantSeconds;
|
|
35
|
+
if (asOf === undefined)
|
|
36
|
+
return null;
|
|
37
|
+
const edges = graph.edges.map((edge) => {
|
|
38
|
+
if (edge.kind === "gate")
|
|
39
|
+
return Object.freeze({ kind: "gate", id: edge.id, source: edge.source, target: edge.target });
|
|
40
|
+
const expectedWorkSeconds = workSeconds(edge.expected, graph, source);
|
|
41
|
+
return expectedWorkSeconds === null ? null : Object.freeze({
|
|
42
|
+
kind: "task", id: edge.id, source: edge.source, target: edge.target,
|
|
43
|
+
status: edge.status, expectedWorkSeconds, priority: edge.priority, totalFloat: rational(0n),
|
|
44
|
+
requirements: Object.freeze(edge.requirements.map(({ resourceId, units }) => Object.freeze({ resourceId, units }))),
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
if (edges.some((edge) => edge === null))
|
|
48
|
+
return null;
|
|
49
|
+
return Object.freeze({
|
|
50
|
+
documentId: source.documentId, asOf, horizonEnd: rational(4102444800n), finishMilestoneId: graph.finish,
|
|
51
|
+
frontierMilestoneIds: Object.freeze([...graph.frontier]), milestoneIds: Object.freeze([...graph.vertices.keys()]),
|
|
52
|
+
resources: Object.freeze([...graph.resources.values()].map(({ id, capacity }) => Object.freeze({ id, capacity }))),
|
|
53
|
+
edges: Object.freeze(edges), capacityOverrides,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function targets(document, source) {
|
|
57
|
+
const result = [];
|
|
58
|
+
for (const declaration of document.declarations) {
|
|
59
|
+
if (declaration.kind !== "task" && declaration.kind !== "milestone")
|
|
60
|
+
continue;
|
|
61
|
+
const deadline = fieldNamed(declaration, "deadline");
|
|
62
|
+
if (deadline !== undefined) {
|
|
63
|
+
const parsed = typeof deadline.value === "string" ? parseDeclaredCalendarValue(deadline.value) : deadline.value;
|
|
64
|
+
result.push(Object.freeze({
|
|
65
|
+
subjectKind: declaration.kind, subjectId: declaration.id,
|
|
66
|
+
event: declaration.kind === "task" ? "finish" : "reach", targetKind: "deadline",
|
|
67
|
+
temporalKind: parsed?.kind === "date_time" ? "instant" : "date", instant: instant(parsed),
|
|
68
|
+
sourceText: parsed?.sourceText ?? "", sourceRange: deadline.valueSpan,
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
for (const bound of [...source.model.taskBounds, ...source.model.milestoneBounds]) {
|
|
73
|
+
if (bound.direction !== "latest")
|
|
74
|
+
continue;
|
|
75
|
+
result.push(Object.freeze({
|
|
76
|
+
subjectKind: bound.entityKind, subjectId: bound.entityId, event: bound.event,
|
|
77
|
+
targetKind: "latest", temporalKind: "instant", instant: bound.value.instantSeconds,
|
|
78
|
+
sourceText: bound.value.sourceText, sourceRange: bound.span,
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
return Object.freeze(result);
|
|
82
|
+
}
|
|
83
|
+
function eventStates(document) {
|
|
84
|
+
const graph = buildResidualGraph(document);
|
|
85
|
+
const result = [];
|
|
86
|
+
for (const declaration of document.declarations) {
|
|
87
|
+
if (declaration.kind === "task") {
|
|
88
|
+
const status = (fieldNamed(declaration, "status")?.value ?? "planned");
|
|
89
|
+
result.push(Object.freeze({ subjectKind: "task", subjectId: declaration.id, event: "start",
|
|
90
|
+
complete: status === "active" || status === "done", actualInstant: null }));
|
|
91
|
+
result.push(Object.freeze({ subjectKind: "task", subjectId: declaration.id, event: "finish",
|
|
92
|
+
complete: status === "done", actualInstant: null }));
|
|
93
|
+
}
|
|
94
|
+
else if (declaration.kind === "milestone") {
|
|
95
|
+
result.push(Object.freeze({ subjectKind: "milestone", subjectId: declaration.id, event: "reach",
|
|
96
|
+
complete: graph.effectiveReached.has(declaration.id), actualInstant: null }));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return Object.freeze(result);
|
|
100
|
+
}
|
|
101
|
+
export function composeContract9TemporalContext(text, document, operand, driverLevel, capacityOverrides = new Map()) {
|
|
102
|
+
const source = parseTemporalScheduleSource(text, TEMPORAL_SCHEDULE_SOURCE_CAPABILITY);
|
|
103
|
+
if (!source.ok || source.model === null || source.grammarVersion !== 8)
|
|
104
|
+
return Object.freeze({ source, scheduler: null, required: null, alerts: null });
|
|
105
|
+
const schedule = schedulerInput(document, source, capacityOverrides);
|
|
106
|
+
if (schedule === null)
|
|
107
|
+
return Object.freeze({ source, scheduler: null, required: null, alerts: null });
|
|
108
|
+
const scheduler = analyzeCalendarSchedule(source, schedule, TEMPORAL_SCHEDULE_SCHEDULER_CAPABILITY);
|
|
109
|
+
const constraints = analyzeTemporalConstraints(source, schedule, TEMPORAL_CONSTRAINT_CAPABILITY);
|
|
110
|
+
const graph = buildResidualGraph(document);
|
|
111
|
+
const finishDeclaration = document.declarations.find(({ kind, id }) => kind === "milestone" && id === graph.finish);
|
|
112
|
+
const deadlineField = finishDeclaration === undefined ? undefined : fieldNamed(finishDeclaration, "deadline");
|
|
113
|
+
const deadlineValue = deadlineField === undefined ? undefined
|
|
114
|
+
: typeof deadlineField.value === "string" ? parseDeclaredCalendarValue(deadlineField.value)
|
|
115
|
+
: deadlineField.value;
|
|
116
|
+
const required = analyzeRequiredSchedule(source, {
|
|
117
|
+
schedule, horizonStart: rational(0n), finishDeadline: instant(deadlineValue),
|
|
118
|
+
precedenceForward: constraints.precedence, resourceForward: scheduler.resource,
|
|
119
|
+
}, REQUIRED_SCHEDULE_CAPABILITY);
|
|
120
|
+
const alerts = evaluateScheduleAlerts({
|
|
121
|
+
source, sourceDigest: sha256DigestUtf8(text), operand, schedule, targets: targets(document, source),
|
|
122
|
+
eventStates: eventStates(document), precedenceForward: constraints.precedence,
|
|
123
|
+
resourceForward: scheduler.resource, requiredSchedule: required, driverLevel,
|
|
124
|
+
}, SCHEDULE_ALERT_CAPABILITY);
|
|
125
|
+
return Object.freeze({ source, scheduler, required, alerts });
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=contract9-temporal-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-temporal-context.js","sourceRoot":"","sources":["../../src/application/contract9-temporal-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Contract9CommandInvocationValidation } from "../command/contract9-usage.js";
|
|
2
|
+
import { type CalendarMutationRequest } from "../temporal-schedule/calendar-mutation.js";
|
|
3
|
+
import { type TemporalEntityMutation } from "../temporal-schedule/entity-mutation.js";
|
|
4
|
+
import type { TemporalScheduleMutationResult } from "../temporal-schedule/source-types.js";
|
|
5
|
+
export type Contract9TemporalMutationRequest = Readonly<{
|
|
6
|
+
kind: "calendar";
|
|
7
|
+
request: CalendarMutationRequest;
|
|
8
|
+
}> | Readonly<{
|
|
9
|
+
kind: "entity";
|
|
10
|
+
request: TemporalEntityMutation;
|
|
11
|
+
}>;
|
|
12
|
+
export declare function contract9TemporalMutationRequest(invocation: Extract<Contract9CommandInvocationValidation, {
|
|
13
|
+
readonly ok: true;
|
|
14
|
+
}>): Contract9TemporalMutationRequest | null;
|
|
15
|
+
export declare function planContract9TemporalMutation(text: string, invocation: Extract<Contract9CommandInvocationValidation, {
|
|
16
|
+
readonly ok: true;
|
|
17
|
+
}>, options?: Readonly<{
|
|
18
|
+
maxDiagnostics?: number;
|
|
19
|
+
}>): TemporalScheduleMutationResult | null;
|
|
20
|
+
//# sourceMappingURL=contract9-temporal-mutation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-temporal-mutation.d.ts","sourceRoot":"","sources":["../../src/application/contract9-temporal-mutation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EAAwB,KAAK,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAC/G,OAAO,EAA8B,KAAK,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAElH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAE3F,MAAM,MAAM,gCAAgC,GACxC,QAAQ,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAA;CAAE,CAAC,GAChE,QAAQ,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAAC;AA+DlE,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,OAAO,CAAC,oCAAoC,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAC/E,gCAAgC,GAAG,IAAI,CAIzC;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EACxD,UAAU,EAAE,OAAO,CAAC,oCAAoC,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,EAChF,OAAO,GAAE,QAAQ,CAAC;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAM,GAAG,8BAA8B,GAAG,IAAI,CAM5F"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { planCalendarMutation } from "../temporal-schedule/calendar-mutation.js";
|
|
2
|
+
import { planTemporalEntityMutation } from "../temporal-schedule/entity-mutation.js";
|
|
3
|
+
import { TEMPORAL_SCHEDULE_SOURCE_CAPABILITY } from "../temporal-schedule/source.js";
|
|
4
|
+
function values(options, name) {
|
|
5
|
+
return Object.freeze(options.flatMap((option) => option.name === name && option.value !== null ? [option.value] : []));
|
|
6
|
+
}
|
|
7
|
+
function cleared(options, name) {
|
|
8
|
+
return values(options, "clear").includes(name);
|
|
9
|
+
}
|
|
10
|
+
function optional(options, name, clearName = name.replaceAll("-", "_")) {
|
|
11
|
+
const selected = values(options, name);
|
|
12
|
+
if (selected.length > 0 && cleared(options, clearName))
|
|
13
|
+
throw new TypeError(`--${name} conflicts with --clear ${clearName}`);
|
|
14
|
+
return selected[0] ?? (cleared(options, clearName) ? null : undefined);
|
|
15
|
+
}
|
|
16
|
+
function calendarRequest(operation, operands, options) {
|
|
17
|
+
return Object.freeze({ kind: "calendar", request: Object.freeze({
|
|
18
|
+
action: operation.slice("calendar.".length), id: operands[1],
|
|
19
|
+
...(operation === "calendar.remove" ? {} : {
|
|
20
|
+
weekdays: values(options, "weekday"), exceptions: values(options, "except"),
|
|
21
|
+
}),
|
|
22
|
+
}) });
|
|
23
|
+
}
|
|
24
|
+
function entityRequest(operation, operands, options) {
|
|
25
|
+
if (operation === "project.set") {
|
|
26
|
+
const set = { timeZone: optional(options, "time-zone"), tzdb: optional(options, "tzdb"),
|
|
27
|
+
calendar: optional(options, "calendar"), workday: optional(options, "workday") };
|
|
28
|
+
if (Object.values(set).every((value) => value === undefined))
|
|
29
|
+
return null;
|
|
30
|
+
return Object.freeze({ kind: "entity", request: Object.freeze({ kind: "project.set", set: Object.freeze({
|
|
31
|
+
...(set.timeZone === undefined ? {} : { timeZone: set.timeZone === null ? null : JSON.stringify(set.timeZone) }),
|
|
32
|
+
...(set.tzdb === undefined ? {} : { tzdb: set.tzdb === null ? null : JSON.stringify(set.tzdb) }),
|
|
33
|
+
...(set.calendar === undefined ? {} : { calendar: set.calendar }),
|
|
34
|
+
...(set.workday === undefined ? {} : { workday: set.workday }),
|
|
35
|
+
}) }) });
|
|
36
|
+
}
|
|
37
|
+
if (operation === "resource.set") {
|
|
38
|
+
const set = { calendar: optional(options, "calendar"), availableFrom: optional(options, "available-from"),
|
|
39
|
+
availableUntil: optional(options, "available-until") };
|
|
40
|
+
const availability = values(options, "availability");
|
|
41
|
+
if (availability.length > 0 && cleared(options, "availability"))
|
|
42
|
+
throw new TypeError("--availability conflicts with --clear availability");
|
|
43
|
+
if (Object.values(set).every((value) => value === undefined) && availability.length === 0 && !cleared(options, "availability"))
|
|
44
|
+
return null;
|
|
45
|
+
return Object.freeze({ kind: "entity", request: Object.freeze({ kind: "resource.set", id: operands[1], set: Object.freeze({
|
|
46
|
+
...(set.calendar === undefined ? {} : { calendar: set.calendar }),
|
|
47
|
+
...(set.availableFrom === undefined ? {} : { availableFrom: set.availableFrom }),
|
|
48
|
+
...(set.availableUntil === undefined ? {} : { availableUntil: set.availableUntil }),
|
|
49
|
+
...(availability.length > 0 || cleared(options, "availability") ? { availability } : {}),
|
|
50
|
+
}) }) });
|
|
51
|
+
}
|
|
52
|
+
if (operation === "task.set" || operation === "milestone.set") {
|
|
53
|
+
const when = values(options, "when");
|
|
54
|
+
if (when.length > 0 && cleared(options, "when"))
|
|
55
|
+
throw new TypeError("--when conflicts with --clear when");
|
|
56
|
+
if (when.length === 0 && !cleared(options, "when"))
|
|
57
|
+
return null;
|
|
58
|
+
return Object.freeze({ kind: "entity", request: Object.freeze(operation === "task.set"
|
|
59
|
+
? { kind: "task.set", id: operands[1], when }
|
|
60
|
+
: { kind: "milestone.set", id: operands[1], when }) });
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
export function contract9TemporalMutationRequest(invocation) {
|
|
65
|
+
const { operation } = invocation.descriptor;
|
|
66
|
+
if (operation.startsWith("calendar."))
|
|
67
|
+
return calendarRequest(operation, invocation.operands, invocation.options);
|
|
68
|
+
return entityRequest(operation, invocation.operands, invocation.options);
|
|
69
|
+
}
|
|
70
|
+
export function planContract9TemporalMutation(text, invocation, options = {}) {
|
|
71
|
+
const mutation = contract9TemporalMutationRequest(invocation);
|
|
72
|
+
if (mutation === null)
|
|
73
|
+
return null;
|
|
74
|
+
return mutation.kind === "calendar"
|
|
75
|
+
? planCalendarMutation(text, mutation.request, TEMPORAL_SCHEDULE_SOURCE_CAPABILITY, options)
|
|
76
|
+
: planTemporalEntityMutation(text, mutation.request, TEMPORAL_SCHEDULE_SOURCE_CAPABILITY, options);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=contract9-temporal-mutation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-temporal-mutation.js","sourceRoot":"","sources":["../../src/application/contract9-temporal-mutation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAgC,MAAM,2CAA2C,CAAC;AAC/G,OAAO,EAAE,0BAA0B,EAA+B,MAAM,yCAAyC,CAAC;AAClH,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC;AAOrF,SAAS,MAAM,CAAC,OAA2C,EAAE,IAAY;IACvE,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzH,CAAC;AAED,SAAS,OAAO,CAAC,OAA2C,EAAE,IAAY;IACxE,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,OAA2C,EAAE,IAAY,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;IAChH,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;QACpD,MAAM,IAAI,SAAS,CAAC,KAAK,IAAI,2BAA2B,SAAS,EAAE,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB,EAAE,QAA2B,EAAE,OAA2C;IAClH,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YAC9D,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAsC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAE;YAClG,GAAG,CAAC,SAAS,KAAK,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC;aAC5E,CAAC;SACH,CAAC,EAAE,CAAC,CAAC;AACR,CAAC;AAED,SAAS,aAAa,CAAC,SAAiB,EAAE,QAA2B,EAAE,OAA2C;IAChH,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;YACrF,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;QACnF,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;oBACtG,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChH,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChG,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACjE,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC/D,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC;IACD,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;YACvG,cAAc,EAAE,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACrD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC;YAC7D,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5I,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;oBACzH,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACjE,GAAG,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC;oBAChF,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;oBACnF,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzF,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC;IACD,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAC3G,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAChE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU;gBACpF,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE;gBAC9C,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,UAAgF;IAEhF,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC;IAC5C,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAClH,OAAO,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAY,EACxD,UAAgF,EAChF,OAAO,GAA0C,EAAE;IACnD,MAAM,QAAQ,GAAG,gCAAgC,CAAC,UAAU,CAAC,CAAC;IAC9D,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU;QACjC,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,mCAAmC,EAAE,OAAO,CAAC;QAC5F,CAAC,CAAC,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,mCAAmC,EAAE,OAAO,CAAC,CAAC;AACvG,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AnalyzeOptions } from "./analyze.js";
|
|
2
|
+
import type { CheckOptions } from "./check.js";
|
|
3
|
+
import type { NextOptions } from "./next.js";
|
|
4
|
+
import { type TargetPostdueAnalysisResultV7 } from "./target-postdue-analysis.js";
|
|
5
|
+
import { type TargetPostdueCheckResultV6 } from "./target-postdue-check.js";
|
|
6
|
+
import { type TargetPostdueNextResultV8 } from "./target-postdue-next.js";
|
|
7
|
+
export type Contract9CheckResult = TargetPostdueCheckResultV6;
|
|
8
|
+
export type Contract9AnalysisResult = TargetPostdueAnalysisResultV7;
|
|
9
|
+
export type Contract9NextResult = TargetPostdueNextResultV8;
|
|
10
|
+
type Contract9SourceOptions = {
|
|
11
|
+
readonly sourceOperand?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function checkDocument(text: string, options?: CheckOptions & Contract9SourceOptions): Contract9CheckResult;
|
|
14
|
+
export declare function analyzeDocument(text: string, options?: AnalyzeOptions & Contract9SourceOptions): Contract9AnalysisResult;
|
|
15
|
+
export declare function selectNextTasks(text: string, options?: AnalyzeOptions & NextOptions & Contract9SourceOptions): Contract9NextResult;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=contract9-temporal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-temporal.d.ts","sourceRoot":"","sources":["../../src/application/contract9-temporal.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAgC,KAAK,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAChH,OAAO,EAA6B,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvG,OAAO,EAA4B,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAmBpG,MAAM,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAC9D,MAAM,MAAM,uBAAuB,GAAG,6BAA6B,CAAC;AACpE,MAAM,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAC5D,KAAK,sBAAsB,GAAG;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAY,GAAG,sBAA2B,GAAG,oBAAoB,CAerH;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAc,GAAG,sBAA2B,GAAG,uBAAuB,CAS5H;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAc,GAAG,WAAW,GAAG,sBAA2B,GAAG,mBAAmB,CAStI"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { limitDiagnostics, normalizeMaxDiagnostics, sortDiagnostics } from "../model/diagnostics.js";
|
|
2
|
+
import { temporalScheduleBaseText, scanTemporalDeclarationBlocks } from "../temporal-schedule/source-lexical.js";
|
|
3
|
+
import { parseTemporalScheduleSource, TEMPORAL_SCHEDULE_SOURCE_CAPABILITY } from "../temporal-schedule/source.js";
|
|
4
|
+
import { analyzeDocument as analyzeContract8Document, checkDocument as checkContract8Document, selectNextTasks as selectContract8NextTasks, } from "./contract8-milestone-acceptance.js";
|
|
5
|
+
import { composeContract9TemporalContext } from "./contract9-temporal-context.js";
|
|
6
|
+
import { projectTargetPostdueAnalysis } from "./target-postdue-analysis.js";
|
|
7
|
+
import { projectTargetPostdueCheck } from "./target-postdue-check.js";
|
|
8
|
+
import { projectTargetPostdueNext } from "./target-postdue-next.js";
|
|
9
|
+
function isGrammar8(text) {
|
|
10
|
+
return /^ version 8$/mu.test(text);
|
|
11
|
+
}
|
|
12
|
+
function baseText(text) {
|
|
13
|
+
return temporalScheduleBaseText(text, scanTemporalDeclarationBlocks(text));
|
|
14
|
+
}
|
|
15
|
+
function temporalDiagnostics(text, maximum) {
|
|
16
|
+
const source = parseTemporalScheduleSource(text, TEMPORAL_SCHEDULE_SOURCE_CAPABILITY, { maxDiagnostics: maximum });
|
|
17
|
+
return Object.freeze(source.diagnostics.filter(({ code }) => code.startsWith("PTSCH-10")).map((item) => Object.freeze({
|
|
18
|
+
code: item.code, severity: item.severity, message: item.message,
|
|
19
|
+
...(item.entityId === undefined ? {} : { entityId: item.entityId }),
|
|
20
|
+
...(item.span === undefined ? {} : { span: item.span }), helpTopic: "syntax", data: item.data ?? Object.freeze({}),
|
|
21
|
+
})));
|
|
22
|
+
}
|
|
23
|
+
export function checkDocument(text, options = {}) {
|
|
24
|
+
if (!isGrammar8(text))
|
|
25
|
+
return projectTargetPostdueCheck(checkContract8Document(text, options), null);
|
|
26
|
+
const maximum = normalizeMaxDiagnostics(options.maxDiagnostics);
|
|
27
|
+
const base = checkContract8Document(baseText(text), options);
|
|
28
|
+
const extra = temporalDiagnostics(text, maximum);
|
|
29
|
+
const limited = limitDiagnostics(sortDiagnostics([...base.diagnostics, ...extra]), maximum);
|
|
30
|
+
const errors = extra.filter(({ severity }) => severity === "error").length;
|
|
31
|
+
const warnings = extra.filter(({ severity }) => severity === "warning").length;
|
|
32
|
+
const candidate = Object.freeze({ ...base, document: Object.freeze({ ...base.document, text }), documentId: base.documentId,
|
|
33
|
+
grammarVersion: 8, ok: base.ok && errors === 0, diagnostics: limited.diagnostics,
|
|
34
|
+
diagnosticsTruncated: base.diagnosticsTruncated || limited.truncated,
|
|
35
|
+
summary: Object.freeze({ ...base.summary, errors: base.summary.errors + errors, warnings: base.summary.warnings + warnings }) });
|
|
36
|
+
if (!candidate.ok)
|
|
37
|
+
return projectTargetPostdueCheck(candidate, null);
|
|
38
|
+
const context = composeContract9TemporalContext(text, base.document, options.sourceOperand ?? "FILE", "compact");
|
|
39
|
+
return projectTargetPostdueCheck(candidate, context.alerts);
|
|
40
|
+
}
|
|
41
|
+
export function analyzeDocument(text, options = {}) {
|
|
42
|
+
if (!isGrammar8(text))
|
|
43
|
+
return projectTargetPostdueAnalysis(analyzeContract8Document(text, options), null, null, null);
|
|
44
|
+
const base = analyzeContract8Document(baseText(text), options);
|
|
45
|
+
const extra = temporalDiagnostics(text, normalizeMaxDiagnostics(options.maxDiagnostics));
|
|
46
|
+
const candidate = Object.freeze({ ...base, grammarVersion: 8, ok: base.ok && !extra.some(({ severity }) => severity === "error"),
|
|
47
|
+
diagnostics: Object.freeze([...base.diagnostics, ...extra]) });
|
|
48
|
+
if (!candidate.ok)
|
|
49
|
+
return projectTargetPostdueAnalysis(candidate, null, null, null);
|
|
50
|
+
const context = composeContract9TemporalContext(text, base.document, options.sourceOperand ?? "FILE", "full", options.capacityOverrides);
|
|
51
|
+
return projectTargetPostdueAnalysis(candidate, context.scheduler, context.required, context.alerts);
|
|
52
|
+
}
|
|
53
|
+
export function selectNextTasks(text, options = {}) {
|
|
54
|
+
if (!isGrammar8(text))
|
|
55
|
+
return projectTargetPostdueNext(selectContract8NextTasks(text, options), null);
|
|
56
|
+
const base = selectContract8NextTasks(baseText(text), options);
|
|
57
|
+
const extra = temporalDiagnostics(text, normalizeMaxDiagnostics(options.maxDiagnostics));
|
|
58
|
+
const candidate = Object.freeze({ ...base, grammarVersion: 8, ok: base.ok && !extra.some(({ severity }) => severity === "error"),
|
|
59
|
+
diagnostics: Object.freeze([...base.diagnostics, ...extra]) });
|
|
60
|
+
if (!candidate.ok)
|
|
61
|
+
return projectTargetPostdueNext(candidate, null);
|
|
62
|
+
const context = composeContract9TemporalContext(text, base.document, options.sourceOperand ?? "FILE", "compact", options.capacityOverrides);
|
|
63
|
+
return projectTargetPostdueNext(candidate, context.alerts);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=contract9-temporal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-temporal.js","sourceRoot":"","sources":["../../src/application/contract9-temporal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface Contract9WritableCandidate {
|
|
2
|
+
readonly ok: boolean;
|
|
3
|
+
readonly changed: boolean;
|
|
4
|
+
readonly originalDigest: string;
|
|
5
|
+
readonly updatedDigest: string | null;
|
|
6
|
+
readonly updatedText: string | null;
|
|
7
|
+
readonly governance?: Readonly<{
|
|
8
|
+
readonly writeAuthorized: boolean;
|
|
9
|
+
readonly intent: string;
|
|
10
|
+
}> | null;
|
|
11
|
+
}
|
|
12
|
+
export type Contract9WriteRequest = Readonly<{
|
|
13
|
+
mode: "preview";
|
|
14
|
+
}> | Readonly<{
|
|
15
|
+
mode: "in_place";
|
|
16
|
+
target: string;
|
|
17
|
+
expectedDigest?: string;
|
|
18
|
+
}> | Readonly<{
|
|
19
|
+
mode: "out";
|
|
20
|
+
target: string;
|
|
21
|
+
}>;
|
|
22
|
+
export interface Contract9WriteProjection {
|
|
23
|
+
readonly mode: "preview" | "in_place" | "out";
|
|
24
|
+
readonly target: string | null;
|
|
25
|
+
readonly written: boolean;
|
|
26
|
+
}
|
|
27
|
+
export declare function persistContract9Mutation(result: Contract9WritableCandidate, request: Contract9WriteRequest): Promise<Contract9WriteProjection>;
|
|
28
|
+
//# sourceMappingURL=contract9-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-write.d.ts","sourceRoot":"","sources":["../../src/application/contract9-write.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACxH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;QAAE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;CAC5I;AAED,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACvI,QAAQ,CAAC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC9C,MAAM,WAAW,wBAAwB;IAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE;AAEtJ,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,0BAA0B,EAC/E,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAenE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { digestDocumentBytes } from "../io/document-file.js";
|
|
2
|
+
import { createValidatedDocumentFile, replaceValidatedDocumentFile } from "../io/safe-write.js";
|
|
3
|
+
import { parseTemporalScheduleSource, TEMPORAL_SCHEDULE_SOURCE_CAPABILITY } from "../temporal-schedule/source.js";
|
|
4
|
+
export async function persistContract9Mutation(result, request) {
|
|
5
|
+
if (request.mode === "preview" || !result.changed)
|
|
6
|
+
return Object.freeze({ mode: request.mode, target: request.mode === "preview" ? null : request.target, written: false });
|
|
7
|
+
if (!result.ok || result.updatedText === null || result.updatedDigest === null ||
|
|
8
|
+
(result.governance !== undefined && result.governance !== null && (!result.governance.writeAuthorized || result.governance.intent !== "persist"))) {
|
|
9
|
+
throw new TypeError("authorized Contract 9 result does not contain a writable candidate");
|
|
10
|
+
}
|
|
11
|
+
if (digestDocumentBytes(Buffer.from(result.updatedText, "utf8")) !== result.updatedDigest)
|
|
12
|
+
throw new TypeError("Contract 9 candidate digest mismatch");
|
|
13
|
+
const validator = (text) => {
|
|
14
|
+
const parsed = parseTemporalScheduleSource(text, TEMPORAL_SCHEDULE_SOURCE_CAPABILITY);
|
|
15
|
+
return { ok: parsed.ok && parsed.grammarVersion === 8 && parsed.model !== null, diagnostics: [] };
|
|
16
|
+
};
|
|
17
|
+
const output = request.mode === "in_place"
|
|
18
|
+
? await replaceValidatedDocumentFile(request.target, result.updatedText, { initialDigest: result.originalDigest,
|
|
19
|
+
...(request.expectedDigest === undefined ? {} : { expectedDigest: request.expectedDigest }) }, validator)
|
|
20
|
+
: await createValidatedDocumentFile(request.target, result.updatedText, validator);
|
|
21
|
+
if (output.digest !== result.updatedDigest)
|
|
22
|
+
throw new TypeError("Contract 9 safe-write digest mismatch");
|
|
23
|
+
return Object.freeze({ mode: request.mode, target: request.target, written: output.written });
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=contract9-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-write.js","sourceRoot":"","sources":["../../src/application/contract9-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,2BAA2B,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC;AAUlH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,MAAkC,EAC/E,OAA8B;IAC9B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5K,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI;QAC5E,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC;QACpJ,MAAM,IAAI,SAAS,CAAC,oEAAoE,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,aAAa;QAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IACvJ,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE;QAAG,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,EAAE,mCAAmC,CAAC,CAAC;QAC1H,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,cAAc,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAAC,CAAC,CAAC;IACvG,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,UAAU;QACxC,CAAC,CAAC,MAAM,4BAA4B,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,cAAc;YAC7G,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC;QAC3G,CAAC,CAAC,MAAM,2BAA2B,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACrF,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,aAAa;QAAE,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;IACzG,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAChG,CAAC"}
|
|
@@ -4,6 +4,7 @@ export declare const EDITOR_MILESTONE_ACCEPTANCE_MODEL_VERSION: 1;
|
|
|
4
4
|
export interface EditorMilestoneAcceptanceDocumentPreparationV1 {
|
|
5
5
|
readonly analysisText: string;
|
|
6
6
|
readonly diagnostics: readonly Diagnostic[];
|
|
7
|
+
readonly semanticFingerprintExtensions: readonly unknown[];
|
|
7
8
|
}
|
|
8
9
|
export interface EditorMilestoneAcceptanceSourceBindingV1 {
|
|
9
10
|
readonly bindingId: string;
|
|
@@ -71,5 +72,8 @@ export interface EditorMilestoneAcceptanceInspectionV1 {
|
|
|
71
72
|
readonly acceptance: EditorMilestoneAcceptanceProjectionV1 | null;
|
|
72
73
|
}
|
|
73
74
|
export declare function prepareEditorMilestoneAcceptanceDocument(text: string, maxDiagnostics?: number): EditorMilestoneAcceptanceDocumentPreparationV1;
|
|
75
|
+
/** Coordinate-preserving Grammar 8 preparation for the private editor adapters. */
|
|
76
|
+
export declare function prepareEditorContract9Document(text: string, maxDiagnostics?: number): EditorMilestoneAcceptanceDocumentPreparationV1;
|
|
77
|
+
export declare function formatEditorContract9Document(text: string): import("../formatter/source-formatter.js").FormatResult;
|
|
74
78
|
export declare function inspectEditorMilestoneAcceptance(text: string, expectedDigest: string): EditorMilestoneAcceptanceInspectionV1;
|
|
75
79
|
//# sourceMappingURL=editor-milestone-acceptance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-milestone-acceptance.d.ts","sourceRoot":"","sources":["../../src/application/editor-milestone-acceptance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"editor-milestone-acceptance.d.ts","sourceRoot":"","sources":["../../src/application/editor-milestone-acceptance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGtE,OAAO,EAIL,KAAK,qBAAqB,EAI3B,MAAM,mCAAmC,CAAC;AAQ3C,eAAO,MAAM,yCAAyC,EAAG,CAAU,CAAC;AAEpE,MAAM,WAAW,8CAA8C;IAC7D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,QAAQ,CAAC,6BAA6B,EAAE,SAAS,OAAO,EAAE,CAAC;CAC5D;AAED,MAAM,WAAW,wCAAwC;IACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EACpB,WAAW,GACX,yBAAyB,GACzB,WAAW,GACX,8BAA8B,GAC9B,gCAAgC,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,UAAU,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC9E,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,UAAU,EACf,gBAAgB,GAChB,cAAc,GACd,SAAS,GACT,UAAU,GACV,QAAQ,GACR,aAAa,CAAC;IAClB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,sBAAsB,EAAE,UAAU,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,QAAQ,EAAE,SAAS,oCAAoC,EAAE,CAAC;IACnE,QAAQ,CAAC,4BAA4B,EAAE,SAAS,MAAM,EAAE,CAAC;IACzD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,UAAU,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,UAAU,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,yBAAyB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,WAAW,GAAG,gBAAgB,CAAC;IACtD,QAAQ,CAAC,UAAU,EAAE,SAAS,oCAAoC,EAAE,CAAC;IACrE,QAAQ,CAAC,SAAS,EAAE,oCAAoC,GAAG,IAAI,CAAC;IAChE,QAAQ,CAAC,cAAc,EAAE,SAAS,wCAAwC,EAAE,CAAC;CAC9E;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,qCAAqC,GAAG,IAAI,CAAC;CACnE;AA4DD,wBAAgB,wCAAwC,CACtD,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,MAAM,GACtB,8CAA8C,CAmEhD;AAED,mFAAmF;AACnF,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,MAAM,GACtB,8CAA8C,CAoBhD;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,GACX,OAAO,kCAAkC,EAAE,YAAY,CAYzD;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,GACrB,qCAAqC,CAmKvC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { computeEffectiveReached } from "../analysis/graph.js";
|
|
2
|
+
import { formatDocument as formatCoreDocument } from "../core/source.js";
|
|
2
3
|
import { sha256DigestUtf8 } from "../model/sha256.js";
|
|
3
4
|
import { MILESTONE_ACCEPTANCE_SOURCE_CAPABILITY, milestoneAcceptanceBaseText, parseMilestoneAcceptanceSource, } from "../milestone-acceptance/source.js";
|
|
4
5
|
import { checkDocument, } from "./contract8-milestone-acceptance.js";
|
|
6
|
+
import { checkDocument as checkContract9Document } from "./contract9-temporal.js";
|
|
7
|
+
import { planContract9Format } from "./contract9-format-migration.js";
|
|
8
|
+
import { scanTemporalDeclarationBlocks, temporalScheduleBaseText } from "../temporal-schedule/source-lexical.js";
|
|
5
9
|
export const EDITOR_MILESTONE_ACCEPTANCE_MODEL_VERSION = 1;
|
|
6
10
|
function fieldValue(declaration, name) {
|
|
7
11
|
return declaration.fields.find((field) => field.name === name)?.value;
|
|
@@ -48,9 +52,95 @@ export function prepareEditorMilestoneAcceptanceDocument(text, maxDiagnostics) {
|
|
|
48
52
|
const checked = checkDocument(text, {
|
|
49
53
|
...(maxDiagnostics === undefined ? {} : { maxDiagnostics }),
|
|
50
54
|
});
|
|
55
|
+
const source = parseMilestoneAcceptanceSource(text, MILESTONE_ACCEPTANCE_SOURCE_CAPABILITY);
|
|
56
|
+
const records = source.records.map((record) => {
|
|
57
|
+
if (record.kind === "milestone_criterion_set") {
|
|
58
|
+
return Object.freeze({
|
|
59
|
+
kind: record.kind,
|
|
60
|
+
id: record.id,
|
|
61
|
+
milestoneId: record.milestoneId,
|
|
62
|
+
revisionId: record.revisionId,
|
|
63
|
+
commitment: record.commitment,
|
|
64
|
+
criteria: Object.freeze(record.criteria.map((criterion) => Object.freeze({
|
|
65
|
+
criterionId: criterion.criterionId,
|
|
66
|
+
required: criterion.required,
|
|
67
|
+
evidenceKind: criterion.evidenceKind,
|
|
68
|
+
description: criterion.description,
|
|
69
|
+
commitment: criterion.commitment,
|
|
70
|
+
}))),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
if (record.kind === "milestone_acceptance_migration") {
|
|
74
|
+
return Object.freeze({
|
|
75
|
+
kind: record.kind,
|
|
76
|
+
id: record.id,
|
|
77
|
+
model: record.model,
|
|
78
|
+
repositoryId: record.repositoryId,
|
|
79
|
+
path: record.path,
|
|
80
|
+
objectFormat: record.objectFormat,
|
|
81
|
+
head: record.head,
|
|
82
|
+
blob: record.blob,
|
|
83
|
+
sourceDigest: record.sourceDigest,
|
|
84
|
+
candidateDigest: record.candidateDigest,
|
|
85
|
+
grandfatheredMilestoneIds: record.grandfatheredMilestoneIds,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return Object.freeze({
|
|
89
|
+
kind: record.kind,
|
|
90
|
+
id: record.id,
|
|
91
|
+
model: record.model,
|
|
92
|
+
setId: record.setId,
|
|
93
|
+
setCommitment: record.setCommitment,
|
|
94
|
+
criterionId: record.criterionId,
|
|
95
|
+
criterionCommitment: record.criterionCommitment,
|
|
96
|
+
action: record.action,
|
|
97
|
+
evidenceKind: record.evidenceKind,
|
|
98
|
+
evidenceReference: record.evidenceReference,
|
|
99
|
+
evidenceRevision: record.evidenceRevision,
|
|
100
|
+
verifier: record.verifier,
|
|
101
|
+
occurredAt: record.occurredAt,
|
|
102
|
+
reason: record.reason,
|
|
103
|
+
revokes: record.revokes,
|
|
104
|
+
});
|
|
105
|
+
});
|
|
51
106
|
return Object.freeze({
|
|
52
107
|
analysisText: milestoneAcceptanceBaseText(text),
|
|
53
108
|
diagnostics: checked.diagnostics,
|
|
109
|
+
semanticFingerprintExtensions: Object.freeze([Object.freeze({
|
|
110
|
+
schemaVersion: "Perttool.MilestoneAcceptanceSemanticFingerprintInput.v1",
|
|
111
|
+
grammarVersion: source.grammarVersion,
|
|
112
|
+
records: Object.freeze(records),
|
|
113
|
+
})]),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/** Coordinate-preserving Grammar 8 preparation for the private editor adapters. */
|
|
117
|
+
export function prepareEditorContract9Document(text, maxDiagnostics) {
|
|
118
|
+
if (!/^ version 8$/mu.test(text)) {
|
|
119
|
+
return prepareEditorMilestoneAcceptanceDocument(text, maxDiagnostics);
|
|
120
|
+
}
|
|
121
|
+
const checked = checkContract9Document(text, {
|
|
122
|
+
...(maxDiagnostics === undefined ? {} : { maxDiagnostics }),
|
|
123
|
+
});
|
|
124
|
+
const temporalBase = temporalScheduleBaseText(text, scanTemporalDeclarationBlocks(text));
|
|
125
|
+
const acceptance = prepareEditorMilestoneAcceptanceDocument(temporalBase, maxDiagnostics);
|
|
126
|
+
return Object.freeze({
|
|
127
|
+
analysisText: acceptance.analysisText,
|
|
128
|
+
diagnostics: checked.diagnostics,
|
|
129
|
+
semanticFingerprintExtensions: acceptance.semanticFingerprintExtensions,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
export function formatEditorContract9Document(text) {
|
|
133
|
+
if (!/^ version 8$/mu.test(text))
|
|
134
|
+
return formatCoreDocument(text);
|
|
135
|
+
const planned = planContract9Format(text);
|
|
136
|
+
return Object.freeze({
|
|
137
|
+
ok: planned.ok,
|
|
138
|
+
documentId: planned.documentId,
|
|
139
|
+
changed: planned.changed,
|
|
140
|
+
formattedText: planned.updatedText,
|
|
141
|
+
edits: planned.edits,
|
|
142
|
+
diagnostics: planned.diagnostics,
|
|
143
|
+
diagnosticsTruncated: planned.diagnosticsTruncated,
|
|
54
144
|
});
|
|
55
145
|
}
|
|
56
146
|
export function inspectEditorMilestoneAcceptance(text, expectedDigest) {
|