perttool 0.9.3 → 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 +51 -1
- package/README.md +63 -31
- 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 +215 -92
- 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/milestone-acceptance/advance.js +1 -1
- package/dist/milestone-acceptance/advance.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 +6 -2
- 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,17 @@
|
|
|
1
|
+
import type { CommandHelpQuery } from "./discovery.js";
|
|
2
|
+
import type { AssuranceCommandDescriptor, AssuranceCommandHelpResult } from "./assurance-discovery.js";
|
|
3
|
+
export type Contract9CommandDescriptor = Omit<AssuranceCommandDescriptor, "contractVersion"> & {
|
|
4
|
+
readonly contractVersion: 9;
|
|
5
|
+
};
|
|
6
|
+
export type Contract9CommandHelpResult = Omit<AssuranceCommandHelpResult, "cliContractVersion" | "commands"> & {
|
|
7
|
+
readonly cliContractVersion: 9;
|
|
8
|
+
readonly commands: readonly Contract9CommandDescriptor[];
|
|
9
|
+
};
|
|
10
|
+
export declare const CONTRACT9_COMMAND_REGISTRY: readonly Contract9CommandDescriptor[];
|
|
11
|
+
export declare function getContract9CommandDiscovery(query: CommandHelpQuery): Contract9CommandHelpResult;
|
|
12
|
+
export declare function contract9CommandHelpResultToJson(value: Contract9CommandHelpResult): Readonly<Record<string, unknown>>;
|
|
13
|
+
export declare function contract9CommandDescriptorToJson(value: Contract9CommandDescriptor): Readonly<Record<string, unknown>>;
|
|
14
|
+
export declare function contract9CommandRegistryToJson(): readonly Readonly<Record<string, unknown>>[];
|
|
15
|
+
export declare function serializeContract9CommandHelpResult(value: Contract9CommandHelpResult): string;
|
|
16
|
+
export declare function renderContract9CommandHelpResult(value: Contract9CommandHelpResult): string;
|
|
17
|
+
//# sourceMappingURL=contract9-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-discovery.d.ts","sourceRoot":"","sources":["../../src/command/contract9-discovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAA0B,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAGvG,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,GAAG;IAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAA;CAAE,CAAC;AAC/H,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,EAAE,oBAAoB,GAAG,UAAU,CAAC,GAAG;IAC7G,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC1D,CAAC;AA6EF,eAAO,MAAM,0BAA0B,EAAE,SAAS,0BAA0B,EAE1E,CAAC;AAiBH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,GAAG,0BAA0B,CAchG;AACD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,0BAA0B,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAErH;AACD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,0BAA0B,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAErH;AACD,wBAAgB,8BAA8B,IAAI,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAE7F;AACD,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,0BAA0B,GAAG,MAAM,CAE7F;AACD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,0BAA0B,GAAG,MAAM,CAE1F"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { TOOL_VERSION } from "../version.js";
|
|
2
|
+
import { ASSURANCE_COMMAND_REGISTRY, assuranceCommandDescriptorToJson, assuranceCommandHelpResultToJson, renderAssuranceCommandHelpResult } from "./assurance-discovery.js";
|
|
3
|
+
const replacements = new Map([
|
|
4
|
+
["Perttool.ProjectResult.v4", "Perttool.ProjectResult.v5"],
|
|
5
|
+
["Perttool.CheckResult.v5", "Perttool.CheckResult.v6"],
|
|
6
|
+
["Perttool.AnalysisResult.v6", "Perttool.AnalysisResult.v7"],
|
|
7
|
+
["Perttool.NextResult.v7", "Perttool.NextResult.v8"],
|
|
8
|
+
["Perttool.MutationResult.v5", "Perttool.MutationResult.v6"],
|
|
9
|
+
["Perttool.PlanAssuranceResult.v1", "Perttool.PlanAssuranceResult.v2"],
|
|
10
|
+
["Perttool.UnitMigrationResult.v3", "Perttool.UnitMigrationResult.v4"],
|
|
11
|
+
]);
|
|
12
|
+
function temporalOption(name, valueType, repeatable = false) {
|
|
13
|
+
return Object.freeze({
|
|
14
|
+
name, kind: "value", valueType, required: false, repeatable, defaultValue: null,
|
|
15
|
+
enumValues: Object.freeze(name === "tzdb" ? ["2026c"] : []), conflicts: Object.freeze([]), requires: Object.freeze([]),
|
|
16
|
+
sharedGroup: null, description: null,
|
|
17
|
+
spelling: Object.freeze({ cli: `--${name}`, dsl: name.replaceAll("-", "_"), json: name.replaceAll("-", "_") }),
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
const temporalOptions = Object.freeze({
|
|
21
|
+
"project.set": Object.freeze([
|
|
22
|
+
temporalOption("time-zone", "iana-time-zone"), temporalOption("tzdb", "tzdb-release"),
|
|
23
|
+
temporalOption("calendar", "calendar-id"), temporalOption("workday", "duration"),
|
|
24
|
+
]),
|
|
25
|
+
"resource.set": Object.freeze([
|
|
26
|
+
temporalOption("calendar", "calendar-id"), temporalOption("available-from", "date-time"),
|
|
27
|
+
temporalOption("available-until", "date-time"), temporalOption("availability", "availability-window", true),
|
|
28
|
+
]),
|
|
29
|
+
"task.set": Object.freeze([temporalOption("when", "task-event-bound", true)]),
|
|
30
|
+
"milestone.set": Object.freeze([temporalOption("when", "milestone-event-bound", true)]),
|
|
31
|
+
});
|
|
32
|
+
function contract9Options(descriptor) {
|
|
33
|
+
const additions = temporalOptions[descriptor.operation];
|
|
34
|
+
if (additions === undefined)
|
|
35
|
+
return descriptor.options;
|
|
36
|
+
return Object.freeze(descriptor.options.map((option) => option.name !== "clear" ? option : Object.freeze({ ...option,
|
|
37
|
+
enumValues: Object.freeze([...option.enumValues, ...additions.map(({ spelling }) => spelling.dsl)]) }))
|
|
38
|
+
.concat(additions));
|
|
39
|
+
}
|
|
40
|
+
function converted(descriptor) {
|
|
41
|
+
const migration = descriptor.operation === "document.migrate";
|
|
42
|
+
return Object.freeze({ ...descriptor, contractVersion: 9,
|
|
43
|
+
...(migration ? { summary: "Prepares a complete document for Grammar 8." } : {}),
|
|
44
|
+
options: Object.freeze(contract9Options(descriptor).map((option) => migration && option.name === "target-grammar"
|
|
45
|
+
? Object.freeze({ ...option, enumValues: Object.freeze(["8"]) }) : option)),
|
|
46
|
+
examples: migration ? Object.freeze([Object.freeze({ id: "preview",
|
|
47
|
+
invocation: "perttool document migrate plan.pert --target-grammar 8",
|
|
48
|
+
summary: "Preview the Grammar 8 migration candidate." })]) : descriptor.examples,
|
|
49
|
+
resultSchemas: Object.freeze(descriptor.resultSchemas.map((schema) => replacements.get(schema) ?? schema)) });
|
|
50
|
+
}
|
|
51
|
+
const template = ASSURANCE_COMMAND_REGISTRY.find(({ operation }) => operation === "task.add");
|
|
52
|
+
if (template === undefined)
|
|
53
|
+
throw new Error("Contract 9 mutation descriptor template is unavailable");
|
|
54
|
+
const shared = template.options.filter(({ sharedGroup }) => sharedGroup !== null);
|
|
55
|
+
const calendarCommand = (action) => Object.freeze({
|
|
56
|
+
...converted(template), path: Object.freeze(["calendar", action]), operation: `calendar.${action}`,
|
|
57
|
+
summary: `${action === "remove" ? "Removes" : action === "add" ? "Adds" : "Changes"} one working-time calendar.`,
|
|
58
|
+
operands: Object.freeze([
|
|
59
|
+
Object.freeze({ name: "file", position: 0, valueType: "path-or-stdin", required: true }),
|
|
60
|
+
Object.freeze({ name: "id", position: 1, valueType: "identifier", required: true }),
|
|
61
|
+
]),
|
|
62
|
+
options: Object.freeze(action === "remove" ? shared : [
|
|
63
|
+
Object.freeze({ ...template.options.find(({ name }) => name === "title"), name: "weekday", required: false, repeatable: true,
|
|
64
|
+
valueType: "weekday-windows", spelling: Object.freeze({ cli: "--weekday", dsl: "weekday windows", json: "weekday" }) }),
|
|
65
|
+
Object.freeze({ ...template.options.find(({ name }) => name === "title"), name: "except", required: false, repeatable: true,
|
|
66
|
+
valueType: "date-windows", spelling: Object.freeze({ cli: "--except", dsl: "except date windows", json: "except" }) }),
|
|
67
|
+
...shared,
|
|
68
|
+
]),
|
|
69
|
+
examples: Object.freeze([Object.freeze({ id: action, invocation: action === "remove"
|
|
70
|
+
? "perttool calendar remove plan.pert STANDARD --diff"
|
|
71
|
+
: `perttool calendar ${action} plan.pert STANDARD --weekday 'mon 09:00..17:00' --diff`,
|
|
72
|
+
summary: `${action} a source-preserving calendar declaration.` })]),
|
|
73
|
+
});
|
|
74
|
+
export const CONTRACT9_COMMAND_REGISTRY = Object.freeze([
|
|
75
|
+
...ASSURANCE_COMMAND_REGISTRY.map(converted), calendarCommand("add"), calendarCommand("set"), calendarCommand("remove"),
|
|
76
|
+
]);
|
|
77
|
+
const resources = Object.freeze([...new Set(CONTRACT9_COMMAND_REGISTRY
|
|
78
|
+
.filter(({ path }) => path.length >= 2).map(({ path }) => path[0]))].sort().map((name) => Object.freeze({
|
|
79
|
+
name, summary: name === "calendar" ? "Maintains working-time calendars." : `${name} commands.`,
|
|
80
|
+
actions: Object.freeze(CONTRACT9_COMMAND_REGISTRY.filter(({ path }) => path.length >= 2 && path[0] === name)
|
|
81
|
+
.map(({ path }) => path.slice(1).join(" ")).sort()),
|
|
82
|
+
})));
|
|
83
|
+
const byPath = new Map(CONTRACT9_COMMAND_REGISTRY.map((descriptor) => [descriptor.path.join("\0"), descriptor]));
|
|
84
|
+
function diagnostic(code, message, query) {
|
|
85
|
+
return Object.freeze({ code, severity: "error", message, data: Object.freeze({ resource: query.resource, action: query.action }) });
|
|
86
|
+
}
|
|
87
|
+
function result(query, selectedResources, commands, diagnostics) {
|
|
88
|
+
return Object.freeze({ schemaVersion: "Perttool.CommandHelpResult.v1", cliContractVersion: 9, toolVersion: TOOL_VERSION,
|
|
89
|
+
operation: "help", ok: diagnostics.length === 0, query: Object.freeze({ ...query }), resources: Object.freeze([...selectedResources]),
|
|
90
|
+
commands: Object.freeze([...commands]), diagnostics: Object.freeze([...diagnostics]) });
|
|
91
|
+
}
|
|
92
|
+
export function getContract9CommandDiscovery(query) {
|
|
93
|
+
if (query.resource === null)
|
|
94
|
+
return query.action === null ? result(query, resources, CONTRACT9_COMMAND_REGISTRY, [])
|
|
95
|
+
: result(query, [], [], [diagnostic("PTHLP-002", "a command action requires a resource", query)]);
|
|
96
|
+
if (query.action === null) {
|
|
97
|
+
const top = byPath.get(query.resource);
|
|
98
|
+
if (top?.path.length === 1)
|
|
99
|
+
return result(query, [], [top], []);
|
|
100
|
+
const resource = resources.find(({ name }) => name === query.resource);
|
|
101
|
+
return resource === undefined ? result(query, [], [], [diagnostic("PTHLP-002", `unknown command resource or top-level command: ${query.resource}`, query)])
|
|
102
|
+
: result(query, [resource], CONTRACT9_COMMAND_REGISTRY.filter(({ path }) => path.length >= 2 && path[0] === query.resource), []);
|
|
103
|
+
}
|
|
104
|
+
const resource = resources.find(({ name }) => name === query.resource);
|
|
105
|
+
if (resource === undefined)
|
|
106
|
+
return result(query, [], [], [diagnostic("PTHLP-002", `unknown command resource: ${query.resource}`, query)]);
|
|
107
|
+
const command = byPath.get(`${query.resource}\0${query.action.replaceAll(" ", "\0")}`);
|
|
108
|
+
return command === undefined ? result(query, [], [], [diagnostic("PTHLP-003", `unknown action ${query.action} for command resource ${query.resource}`, query)])
|
|
109
|
+
: result(query, [resource], [command], []);
|
|
110
|
+
}
|
|
111
|
+
export function contract9CommandHelpResultToJson(value) {
|
|
112
|
+
return assuranceCommandHelpResultToJson(value);
|
|
113
|
+
}
|
|
114
|
+
export function contract9CommandDescriptorToJson(value) {
|
|
115
|
+
return assuranceCommandDescriptorToJson(value);
|
|
116
|
+
}
|
|
117
|
+
export function contract9CommandRegistryToJson() {
|
|
118
|
+
return CONTRACT9_COMMAND_REGISTRY.map(contract9CommandDescriptorToJson);
|
|
119
|
+
}
|
|
120
|
+
export function serializeContract9CommandHelpResult(value) {
|
|
121
|
+
return `${JSON.stringify(contract9CommandHelpResultToJson(value), null, 2)}\n`;
|
|
122
|
+
}
|
|
123
|
+
export function renderContract9CommandHelpResult(value) {
|
|
124
|
+
return renderAssuranceCommandHelpResult(value).replaceAll("CLI Contract 8", "CLI Contract 9");
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=contract9-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-discovery.js","sourceRoot":"","sources":["../../src/command/contract9-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CommandOptionOccurrence, CommandUsageError } from "./usage.js";
|
|
2
|
+
import { renderCommandUsageError } from "./usage.js";
|
|
3
|
+
import { type Contract9CommandDescriptor } from "./contract9-discovery.js";
|
|
4
|
+
export type Contract9CommandInvocationValidation = {
|
|
5
|
+
readonly ok: true;
|
|
6
|
+
readonly descriptor: Contract9CommandDescriptor;
|
|
7
|
+
readonly helpAlias: boolean;
|
|
8
|
+
readonly operands: readonly string[];
|
|
9
|
+
readonly options: readonly CommandOptionOccurrence[];
|
|
10
|
+
} | {
|
|
11
|
+
readonly ok: false;
|
|
12
|
+
readonly error: CommandUsageError;
|
|
13
|
+
};
|
|
14
|
+
export type Contract9ValidCommandInvocation = Extract<Contract9CommandInvocationValidation, {
|
|
15
|
+
readonly ok: true;
|
|
16
|
+
}>;
|
|
17
|
+
export type Contract9InvalidCommandInvocation = Extract<Contract9CommandInvocationValidation, {
|
|
18
|
+
readonly ok: false;
|
|
19
|
+
}>;
|
|
20
|
+
export declare function validateContract9CommandInvocation(argv: readonly string[]): Contract9CommandInvocationValidation;
|
|
21
|
+
export declare function serializeContract9CommandUsageError(error: CommandUsageError): string;
|
|
22
|
+
export declare function contract9CommandUsageErrorToJson(error: CommandUsageError): Readonly<Record<string, unknown>>;
|
|
23
|
+
export { renderCommandUsageError as renderContract9CommandUsageError };
|
|
24
|
+
//# sourceMappingURL=contract9-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-usage.d.ts","sourceRoot":"","sources":["../../src/command/contract9-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAsC,uBAAuB,EAA4C,MAAM,YAAY,CAAC;AACnI,OAAO,EAA8B,KAAK,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAGvG,MAAM,MAAM,oCAAoC,GAC5C;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAA;CAAE,GAC/L;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAC9D,MAAM,MAAM,+BAA+B,GAAG,OAAO,CAAC,oCAAoC,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AACnH,MAAM,MAAM,iCAAiC,GAAG,OAAO,CAAC,oCAAoC,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAItH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,oCAAoC,CAMhH;AACD,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAEpF;AACD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAE5G;AACD,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { commandUsageErrorToJsonForContract, renderCommandUsageError, validateCommandInvocationAgainstRegistry } from "./usage.js";
|
|
2
|
+
import { CONTRACT9_COMMAND_REGISTRY } from "./contract9-discovery.js";
|
|
3
|
+
import { validateAssuranceCommandInvocation } from "./assurance-usage.js";
|
|
4
|
+
const contract9ExtendedOperations = new Set([
|
|
5
|
+
"calendar.add", "calendar.set", "calendar.remove", "project.set", "resource.set", "task.set", "milestone.set", "document.migrate",
|
|
6
|
+
]);
|
|
7
|
+
export function validateContract9CommandInvocation(argv) {
|
|
8
|
+
const generic = validateCommandInvocationAgainstRegistry(argv, CONTRACT9_COMMAND_REGISTRY);
|
|
9
|
+
if (!generic.ok || contract9ExtendedOperations.has(generic.descriptor.operation))
|
|
10
|
+
return generic;
|
|
11
|
+
const legacy = validateAssuranceCommandInvocation(argv);
|
|
12
|
+
if (!legacy.ok)
|
|
13
|
+
return legacy;
|
|
14
|
+
return Object.freeze({ ...legacy, descriptor: generic.descriptor });
|
|
15
|
+
}
|
|
16
|
+
export function serializeContract9CommandUsageError(error) {
|
|
17
|
+
return `${JSON.stringify(commandUsageErrorToJsonForContract(error, 9), null, 2)}\n`;
|
|
18
|
+
}
|
|
19
|
+
export function contract9CommandUsageErrorToJson(error) {
|
|
20
|
+
return commandUsageErrorToJsonForContract(error, 9);
|
|
21
|
+
}
|
|
22
|
+
export { renderCommandUsageError as renderContract9CommandUsageError };
|
|
23
|
+
//# sourceMappingURL=contract9-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract9-usage.js","sourceRoot":"","sources":["../../src/command/contract9-usage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,uBAAuB,EAAE,wCAAwC,EAAE,MAAM,YAAY,CAAC;AACnI,OAAO,EAAE,0BAA0B,EAAmC,MAAM,0BAA0B,CAAC;AACvG,OAAO,EAAE,kCAAkC,EAAE,MAAM,sBAAsB,CAAC;AAO1E,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IAC1C,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,kBAAkB;CAClI,CAAC,CAAC;AACH,MAAM,UAAU,kCAAkC,CAAC,IAAuB;IACxE,MAAM,OAAO,GAAG,wCAAwC,CAAC,IAAI,EAAE,0BAAmC,CAAyC,CAAC;IAC5I,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,OAAO,CAAC;IACjG,MAAM,MAAM,GAAG,kCAAkC,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAA8C,CAAC;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAyC,CAAC;AAC9G,CAAC;AACD,MAAM,UAAU,mCAAmC,CAAC,KAAwB;IAC1E,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,kCAAkC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AACtF,CAAC;AACD,MAAM,UAAU,gCAAgC,CAAC,KAAwB;IACvE,OAAO,kCAAkC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AACD,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,CAAC"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { buildResidualGraph, computeEffectiveReached } from "../analysis/graph.j
|
|
|
3
3
|
export { analyzePrecedence } from "../analysis/precedence.js";
|
|
4
4
|
export { analyzeResources } from "../analysis/resource.js";
|
|
5
5
|
export { getHelp } from "../help/registry.js";
|
|
6
|
-
export {
|
|
6
|
+
export { contract9GuideResultToJson as guideResultToJson, getContract9Guide as getGuide, renderContract9GuideResult as renderGuideResult, serializeContract9GuideResult as serializeGuideResult, } from "../help/contract9-guide.js";
|
|
7
7
|
export { recommendationAnalysisToJson } from "../recommendation/json.js";
|
|
8
8
|
export { DEFAULT_MAX_DIAGNOSTICS, MAX_DIAGNOSTICS_LIMIT, compareStableStrings, countDiagnostics, hasErrors, limitDiagnostics, normalizeMaxDiagnostics, sortDiagnostics, } from "../model/diagnostics.js";
|
|
9
9
|
export * from "../model/rational.js";
|
|
@@ -19,7 +19,7 @@ export type { ParseOptions } from "../parser/document-parser.js";
|
|
|
19
19
|
export type { FormatOptions, FormatResult, } from "../formatter/source-formatter.js";
|
|
20
20
|
export type { TextEdit } from "../mutation/text-edits.js";
|
|
21
21
|
export type { HelpExample, HelpLevel, HelpNode, HelpResult, HelpSection, } from "../help/registry.js";
|
|
22
|
-
export type {
|
|
22
|
+
export type { Contract9GuideResult as GuideResult, } from "../help/contract9-guide.js";
|
|
23
23
|
export type { RecommendationAnalysis, RecommendationComparison, RecommendationDecisionStep, RecommendationDescription, RecommendationExpression, RecommendationFact, RecommendationReasonOccurrence, RecommendationRelation, RecommendationResultDecision, } from "../recommendation/explanation-types.js";
|
|
24
24
|
export type { CheckOptions as BaseCheckOptions, CheckResult as BaseCheckResult, CheckSummary, TemporalInputs, } from "../semantic/check.js";
|
|
25
25
|
export type { AnalysisResult as BaseAnalysisResult, AnalyzeOptions as BaseAnalyzeOptions, AnalysisMode, } from "../analysis/service.js";
|
|
@@ -29,5 +29,6 @@ export type { ProjectHistoryCoreResult as ProjectHistoryResult, } from "../histo
|
|
|
29
29
|
export type { VelocityObservationCoreResult as VelocityObservationResult, } from "../history/velocity-observation.js";
|
|
30
30
|
export type { PlanAssuranceGovernanceDecisionV2 as GovernanceDecision, } from "../assurance/governance.js";
|
|
31
31
|
export type { PlanAssuranceProjectionV1, PlanAssuranceStartAuthorityV1, PlanAssuranceStateCountsV1, } from "../assurance/authority.js";
|
|
32
|
-
export type { DocumentAnalysisMode, DocumentAnalysisOptions, DocumentAnalysisProjection, DocumentBinding, DocumentContentChange, DocumentPosition, DocumentProjectionRequest, DocumentProjectionResult, DocumentProjectionStatus, DocumentRange, DocumentSemanticResult, DocumentSession, DocumentSessionAnalysisResult, DocumentSessionChange, DocumentSessionFailureReason, DocumentSessionTransition, DocumentSnapshot, DocumentSnapshotInput, DocumentSnapshotOptions, DocumentSnapshotPreparation, DocumentSourceDigest, } from "../session/document-session.js";
|
|
32
|
+
export type { DocumentFormatResult, DocumentFormatSemanticEvidenceV1, DocumentAnalysisMode, DocumentAnalysisOptions, DocumentAnalysisProjection, DocumentBinding, DocumentContentChange, DocumentPosition, DocumentProjectionRequest, DocumentProjectionResult, DocumentProjectionStatus, DocumentRange, DocumentSemanticResult, DocumentSession, DocumentSessionAnalysisResult, DocumentSessionChange, DocumentSessionFailureReason, DocumentSessionTransition, DocumentSnapshot, DocumentSnapshotInput, DocumentSnapshotOptions, DocumentSnapshotPreparation, DocumentSourceDigest, } from "../session/document-session.js";
|
|
33
|
+
export type { EditorSemanticFingerprintV1, } from "../editor/semantic-fingerprint.js";
|
|
33
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { buildResidualGraph, computeEffectiveReached } from "../analysis/graph.j
|
|
|
3
3
|
export { analyzePrecedence } from "../analysis/precedence.js";
|
|
4
4
|
export { analyzeResources } from "../analysis/resource.js";
|
|
5
5
|
export { getHelp } from "../help/registry.js";
|
|
6
|
-
export {
|
|
6
|
+
export { contract9GuideResultToJson as guideResultToJson, getContract9Guide as getGuide, renderContract9GuideResult as renderGuideResult, serializeContract9GuideResult as serializeGuideResult, } from "../help/contract9-guide.js";
|
|
7
7
|
export { recommendationAnalysisToJson } from "../recommendation/json.js";
|
|
8
8
|
export { DEFAULT_MAX_DIAGNOSTICS, MAX_DIAGNOSTICS_LIMIT, compareStableStrings, countDiagnostics, hasErrors, limitDiagnostics, normalizeMaxDiagnostics, sortDiagnostics, } from "../model/diagnostics.js";
|
|
9
9
|
export * from "../model/rational.js";
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { Diagnostic } from "../model/diagnostics.js";
|
|
2
|
+
import { type TextEdit } from "../mutation/text-edits.js";
|
|
3
|
+
import type { EffectivePlanDependencyV1, PlanAssuranceEvaluationV1 } from "../assurance/types.js";
|
|
4
|
+
export declare const EDITOR_REPAIR_REGISTRY: Readonly<{
|
|
5
|
+
readonly id: "perttool.editor-repair";
|
|
6
|
+
readonly version: 1;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const EDITOR_REPAIR_ID: "duration_unit_to_point";
|
|
9
|
+
export declare const EDITOR_REPAIR_QUICK_FIX_TITLE: "Migrate duration unit to point";
|
|
10
|
+
export declare const EDITOR_REPAIR_FIX_ALL_KIND: "source.fixAll.perttool";
|
|
11
|
+
export type EditorRepairInteraction = "quickfix" | typeof EDITOR_REPAIR_FIX_ALL_KIND;
|
|
12
|
+
export interface EditorRepairDocumentBindingV1 {
|
|
13
|
+
readonly documentUri: string;
|
|
14
|
+
readonly documentGeneration: string;
|
|
15
|
+
readonly documentVersion: number;
|
|
16
|
+
readonly sourceDigest: `sha256:${string}`;
|
|
17
|
+
}
|
|
18
|
+
export interface EditorRepairConvertedFieldV1 {
|
|
19
|
+
readonly entityKind: "project" | "task" | "work_event";
|
|
20
|
+
readonly entityId: string;
|
|
21
|
+
readonly fieldPath: string;
|
|
22
|
+
readonly canonicalToken: string;
|
|
23
|
+
}
|
|
24
|
+
export interface EditorRepairMigrationInputV1 {
|
|
25
|
+
readonly ok: boolean;
|
|
26
|
+
readonly changed: boolean;
|
|
27
|
+
readonly sourceGrammarVersion: number | null;
|
|
28
|
+
readonly targetGrammarVersion: number | null;
|
|
29
|
+
readonly sourceUnit: string | null;
|
|
30
|
+
readonly targetUnit: string;
|
|
31
|
+
readonly velocityDisposition: string | null;
|
|
32
|
+
readonly updatedDigest: string | null;
|
|
33
|
+
readonly updatedText: string | null;
|
|
34
|
+
readonly diff: string | null;
|
|
35
|
+
readonly edits: readonly TextEdit[];
|
|
36
|
+
readonly convertedFields: readonly EditorRepairConvertedFieldV1[];
|
|
37
|
+
readonly diagnostics: readonly Diagnostic[];
|
|
38
|
+
readonly diagnosticsTruncated: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface EditorRepairEvaluationInputV1 {
|
|
41
|
+
readonly binding: EditorRepairDocumentBindingV1;
|
|
42
|
+
readonly sourceText: string;
|
|
43
|
+
readonly sourceOk: boolean;
|
|
44
|
+
readonly sourceDiagnostics: readonly Diagnostic[];
|
|
45
|
+
readonly sourceDiagnosticsTruncated: boolean;
|
|
46
|
+
readonly migration: EditorRepairMigrationInputV1;
|
|
47
|
+
readonly candidateOk: boolean;
|
|
48
|
+
readonly candidateDiagnostics: readonly Diagnostic[];
|
|
49
|
+
readonly candidateDiagnosticsTruncated: boolean;
|
|
50
|
+
readonly sourceAssurance: PlanAssuranceEvaluationV1 | null;
|
|
51
|
+
readonly candidateAssurance: PlanAssuranceEvaluationV1 | null;
|
|
52
|
+
readonly sourceDeclarationIdentities: readonly string[];
|
|
53
|
+
readonly candidateDeclarationIdentities: readonly string[];
|
|
54
|
+
readonly protectedRecordKinds: readonly string[];
|
|
55
|
+
readonly interaction: EditorRepairInteraction;
|
|
56
|
+
readonly automatic: boolean;
|
|
57
|
+
readonly matchingDiagnosticCount: number;
|
|
58
|
+
readonly requestedRangeIntersectsDiagnostic: boolean;
|
|
59
|
+
}
|
|
60
|
+
export type EditorRepairDiagnosticCode = "PTEDM-102" | "PTEDM-104" | "PTEDM-105" | "PTEDM-107" | "PTEDM-108" | "PTEDM-110";
|
|
61
|
+
export interface EditorRepairUnavailableCauseV1 {
|
|
62
|
+
readonly diagnosticCode: EditorRepairDiagnosticCode;
|
|
63
|
+
readonly reason: string;
|
|
64
|
+
}
|
|
65
|
+
export interface EditorRepairAffectedTaskV1 {
|
|
66
|
+
readonly taskId: string;
|
|
67
|
+
readonly pathTaskIds: readonly string[];
|
|
68
|
+
readonly sourceContractHash: string;
|
|
69
|
+
readonly candidateContractHash: string;
|
|
70
|
+
readonly sourceComputedBasisHash: string;
|
|
71
|
+
readonly candidateComputedBasisHash: string;
|
|
72
|
+
readonly sourceStatus: "unsealed";
|
|
73
|
+
readonly candidateStatus: "unsealed";
|
|
74
|
+
}
|
|
75
|
+
export interface EditorRepairCandidateV1 {
|
|
76
|
+
readonly registry: typeof EDITOR_REPAIR_REGISTRY;
|
|
77
|
+
readonly repairId: typeof EDITOR_REPAIR_ID;
|
|
78
|
+
readonly binding: EditorRepairDocumentBindingV1;
|
|
79
|
+
readonly interaction: EditorRepairInteraction;
|
|
80
|
+
readonly automatic: boolean;
|
|
81
|
+
readonly status: "applicable" | "unavailable";
|
|
82
|
+
readonly complete: boolean;
|
|
83
|
+
readonly strictClass: "E1" | null;
|
|
84
|
+
readonly candidateSourceDigest: `sha256:${string}` | null;
|
|
85
|
+
readonly convertedFields: readonly EditorRepairConvertedFieldV1[];
|
|
86
|
+
readonly affectedTasks: readonly EditorRepairAffectedTaskV1[];
|
|
87
|
+
readonly planningRelations: readonly EffectivePlanDependencyV1[];
|
|
88
|
+
readonly governanceScopes: readonly [];
|
|
89
|
+
readonly destructiveRecordRanges: readonly [];
|
|
90
|
+
readonly forwardEdits: readonly TextEdit[];
|
|
91
|
+
readonly inverseEdits: readonly TextEdit[];
|
|
92
|
+
readonly unavailableCauses: readonly EditorRepairUnavailableCauseV1[];
|
|
93
|
+
}
|
|
94
|
+
export declare function evaluateEditorRepairCandidate(input: EditorRepairEvaluationInputV1): EditorRepairCandidateV1;
|
|
95
|
+
//# sourceMappingURL=repair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../../src/editor/repair.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { sha256DigestUtf8 } from "../model/sha256.js";
|
|
2
|
+
import { applyTextEdits, normalizeTextEdits, } from "../mutation/text-edits.js";
|
|
3
|
+
export const EDITOR_REPAIR_REGISTRY = Object.freeze({
|
|
4
|
+
id: "perttool.editor-repair",
|
|
5
|
+
version: 1,
|
|
6
|
+
});
|
|
7
|
+
export const EDITOR_REPAIR_ID = "duration_unit_to_point";
|
|
8
|
+
export const EDITOR_REPAIR_QUICK_FIX_TITLE = "Migrate duration unit to point";
|
|
9
|
+
export const EDITOR_REPAIR_FIX_ALL_KIND = "source.fixAll.perttool";
|
|
10
|
+
const MAX_SOURCE_BYTES = 8_388_608;
|
|
11
|
+
const MAX_CANDIDATE_BYTES = 8_388_608;
|
|
12
|
+
const MAX_EDITS = 10_000;
|
|
13
|
+
const MAX_REPLACEMENT_BYTES = 8_388_608;
|
|
14
|
+
const MAX_AFFECTED_IDENTITIES = 20_000;
|
|
15
|
+
const MAX_DIFF_BYTES = 1_048_576;
|
|
16
|
+
function utf8Bytes(text) {
|
|
17
|
+
return new TextEncoder().encode(text).byteLength;
|
|
18
|
+
}
|
|
19
|
+
function cause(diagnosticCode, reason) {
|
|
20
|
+
return Object.freeze({ diagnosticCode, reason });
|
|
21
|
+
}
|
|
22
|
+
function unavailable(input, causes) {
|
|
23
|
+
return Object.freeze({
|
|
24
|
+
registry: EDITOR_REPAIR_REGISTRY,
|
|
25
|
+
repairId: EDITOR_REPAIR_ID,
|
|
26
|
+
binding: input.binding,
|
|
27
|
+
interaction: input.interaction,
|
|
28
|
+
automatic: input.automatic,
|
|
29
|
+
status: "unavailable",
|
|
30
|
+
complete: false,
|
|
31
|
+
strictClass: null,
|
|
32
|
+
candidateSourceDigest: null,
|
|
33
|
+
convertedFields: Object.freeze([]),
|
|
34
|
+
affectedTasks: Object.freeze([]),
|
|
35
|
+
planningRelations: Object.freeze([]),
|
|
36
|
+
governanceScopes: Object.freeze([]),
|
|
37
|
+
destructiveRecordRanges: Object.freeze([]),
|
|
38
|
+
forwardEdits: Object.freeze([]),
|
|
39
|
+
inverseEdits: Object.freeze([]),
|
|
40
|
+
unavailableCauses: Object.freeze([...causes]),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function relationIdentity(relation) {
|
|
44
|
+
return [
|
|
45
|
+
relation.relationId ?? "",
|
|
46
|
+
relation.predecessorTaskId,
|
|
47
|
+
relation.successorTaskId,
|
|
48
|
+
relation.mode,
|
|
49
|
+
relation.explicit ? "explicit" : "derived",
|
|
50
|
+
].join("\u0000");
|
|
51
|
+
}
|
|
52
|
+
function exactUnsealedAssurance(evaluation) {
|
|
53
|
+
return evaluation !== null &&
|
|
54
|
+
evaluation.ok &&
|
|
55
|
+
evaluation.modelVersion === 1 &&
|
|
56
|
+
evaluation.hashModelVersion === 1 &&
|
|
57
|
+
evaluation.coverage === "unsealed" &&
|
|
58
|
+
evaluation.directMismatchTaskIds.length === 0 &&
|
|
59
|
+
evaluation.inheritedMismatchTaskIds.length === 0 &&
|
|
60
|
+
evaluation.replanRequiredTaskIds.length === 0 &&
|
|
61
|
+
evaluation.unavailableTaskIds.length === 0 &&
|
|
62
|
+
evaluation.taskResults.every((task) => task.status === "unsealed" &&
|
|
63
|
+
task.outcomeStatus === "unfinished" &&
|
|
64
|
+
task.contractHash !== null &&
|
|
65
|
+
task.computedBasisHash !== null &&
|
|
66
|
+
task.acceptedBasisHash === null &&
|
|
67
|
+
task.directCauses.length === 0 &&
|
|
68
|
+
task.inheritedCauses.length === 0);
|
|
69
|
+
}
|
|
70
|
+
function taskById(tasks) {
|
|
71
|
+
return new Map(tasks.map((task) => [task.taskId, task]));
|
|
72
|
+
}
|
|
73
|
+
function inverseEdits(sourceText, candidateText, forward) {
|
|
74
|
+
let delta = 0;
|
|
75
|
+
const values = forward.map((edit) => {
|
|
76
|
+
const startOffset = edit.startOffset + delta;
|
|
77
|
+
const endOffset = startOffset + edit.replacement.length;
|
|
78
|
+
const replacement = sourceText.slice(edit.startOffset, edit.endOffset);
|
|
79
|
+
delta += edit.replacement.length - (edit.endOffset - edit.startOffset);
|
|
80
|
+
return Object.freeze({ startOffset, endOffset, replacement });
|
|
81
|
+
});
|
|
82
|
+
return Object.freeze([
|
|
83
|
+
...normalizeTextEdits(candidateText, values, "editor repair inverse"),
|
|
84
|
+
]);
|
|
85
|
+
}
|
|
86
|
+
function sameOrderedStrings(left, right) {
|
|
87
|
+
return left.length === right.length &&
|
|
88
|
+
left.every((value, index) => value === right[index]);
|
|
89
|
+
}
|
|
90
|
+
export function evaluateEditorRepairCandidate(input) {
|
|
91
|
+
const causes = [];
|
|
92
|
+
const migration = input.migration;
|
|
93
|
+
if (sha256DigestUtf8(input.sourceText) !== input.binding.sourceDigest) {
|
|
94
|
+
causes.push(cause("PTEDM-104", "the repair request does not match the bound source digest"));
|
|
95
|
+
}
|
|
96
|
+
if (input.automatic && input.interaction !== EDITOR_REPAIR_FIX_ALL_KIND ||
|
|
97
|
+
!input.automatic && input.interaction === "quickfix" &&
|
|
98
|
+
!input.requestedRangeIntersectsDiagnostic) {
|
|
99
|
+
causes.push(cause("PTEDM-107", "the requested repair interaction is not eligible"));
|
|
100
|
+
}
|
|
101
|
+
if (input.matchingDiagnosticCount < 1) {
|
|
102
|
+
causes.push(cause("PTEDM-107", "the request does not carry a current matching PTSEM-114 diagnostic"));
|
|
103
|
+
}
|
|
104
|
+
if (!input.sourceOk ||
|
|
105
|
+
input.sourceDiagnosticsTruncated ||
|
|
106
|
+
!migration.ok ||
|
|
107
|
+
!migration.changed ||
|
|
108
|
+
migration.updatedText === null ||
|
|
109
|
+
migration.updatedDigest === null ||
|
|
110
|
+
migration.diff === null ||
|
|
111
|
+
migration.diagnosticsTruncated ||
|
|
112
|
+
!input.candidateOk ||
|
|
113
|
+
input.candidateDiagnosticsTruncated) {
|
|
114
|
+
causes.push(cause("PTEDM-110", "the complete source or final repair candidate is invalid or incomplete"));
|
|
115
|
+
}
|
|
116
|
+
const sourceDiagnosticCount = input.sourceDiagnostics.filter(({ code }) => code === "PTSEM-114").length;
|
|
117
|
+
const candidateDiagnosticCount = input.candidateDiagnostics.filter(({ code }) => code === "PTSEM-114").length;
|
|
118
|
+
if (sourceDiagnosticCount !== 1 || candidateDiagnosticCount !== 0) {
|
|
119
|
+
causes.push(cause("PTEDM-110", "the repair must remove exactly one actionable PTSEM-114 diagnostic"));
|
|
120
|
+
}
|
|
121
|
+
if ((migration.sourceGrammarVersion !== 6 &&
|
|
122
|
+
migration.sourceGrammarVersion !== 7) ||
|
|
123
|
+
migration.targetGrammarVersion !== migration.sourceGrammarVersion ||
|
|
124
|
+
(migration.sourceUnit !== "day" && migration.sourceUnit !== "hour") ||
|
|
125
|
+
migration.targetUnit !== "point" ||
|
|
126
|
+
migration.velocityDisposition !== "retained") {
|
|
127
|
+
causes.push(cause("PTEDM-102", "the migration is outside the registered Grammar, unit, or velocity boundary"));
|
|
128
|
+
}
|
|
129
|
+
if (input.protectedRecordKinds.length > 0 ||
|
|
130
|
+
migration.convertedFields.some(({ entityKind }) => entityKind === "work_event")) {
|
|
131
|
+
causes.push(cause("PTEDM-102", "protected evidence or work-event state makes the candidate stricter than E1"));
|
|
132
|
+
}
|
|
133
|
+
if (!sameOrderedStrings(input.sourceDeclarationIdentities, input.candidateDeclarationIdentities)) {
|
|
134
|
+
causes.push(cause("PTEDM-102", "the candidate changed the declaration identity set or order"));
|
|
135
|
+
}
|
|
136
|
+
if (!exactUnsealedAssurance(input.sourceAssurance) ||
|
|
137
|
+
!exactUnsealedAssurance(input.candidateAssurance)) {
|
|
138
|
+
causes.push(cause("PTEDM-102", "complete before-and-after unsealed assurance was not proved"));
|
|
139
|
+
}
|
|
140
|
+
const candidateText = migration.updatedText;
|
|
141
|
+
let forward = Object.freeze([]);
|
|
142
|
+
let inverse = Object.freeze([]);
|
|
143
|
+
if (candidateText !== null) {
|
|
144
|
+
try {
|
|
145
|
+
forward = Object.freeze([
|
|
146
|
+
...normalizeTextEdits(input.sourceText, migration.edits, "editor repair"),
|
|
147
|
+
]);
|
|
148
|
+
if (forward.length !== migration.edits.length ||
|
|
149
|
+
applyTextEdits(input.sourceText, forward) !== candidateText ||
|
|
150
|
+
sha256DigestUtf8(candidateText) !== migration.updatedDigest)
|
|
151
|
+
throw new Error("forward proof mismatch");
|
|
152
|
+
inverse = inverseEdits(input.sourceText, candidateText, forward);
|
|
153
|
+
if (applyTextEdits(candidateText, inverse) !== input.sourceText) {
|
|
154
|
+
throw new Error("inverse proof mismatch");
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
causes.push(cause("PTEDM-105", "normalized forward or inverse recovery evidence does not match"));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const sourceAssurance = input.sourceAssurance;
|
|
162
|
+
const candidateAssurance = input.candidateAssurance;
|
|
163
|
+
let affectedTasks = Object.freeze([]);
|
|
164
|
+
let relations = Object.freeze([]);
|
|
165
|
+
if (exactUnsealedAssurance(sourceAssurance) &&
|
|
166
|
+
exactUnsealedAssurance(candidateAssurance)) {
|
|
167
|
+
const sourceIds = sourceAssurance.taskResults.map(({ taskId }) => taskId);
|
|
168
|
+
const candidateIds = candidateAssurance.taskResults.map(({ taskId }) => taskId);
|
|
169
|
+
const sourceRelations = sourceAssurance.effectiveDependencies.map(relationIdentity);
|
|
170
|
+
const candidateRelations = candidateAssurance.effectiveDependencies.map(relationIdentity);
|
|
171
|
+
if (!sameOrderedStrings(sourceIds, candidateIds) ||
|
|
172
|
+
!sameOrderedStrings(sourceRelations, candidateRelations)) {
|
|
173
|
+
causes.push(cause("PTEDM-102", "the complete task or planning-relation closure changed"));
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
const candidateTasks = taskById(candidateAssurance.taskResults);
|
|
177
|
+
affectedTasks = Object.freeze(sourceAssurance.taskResults.map((sourceTask) => {
|
|
178
|
+
const candidateTask = candidateTasks.get(sourceTask.taskId);
|
|
179
|
+
return Object.freeze({
|
|
180
|
+
taskId: sourceTask.taskId,
|
|
181
|
+
pathTaskIds: Object.freeze([sourceTask.taskId]),
|
|
182
|
+
sourceContractHash: sourceTask.contractHash,
|
|
183
|
+
candidateContractHash: candidateTask.contractHash,
|
|
184
|
+
sourceComputedBasisHash: sourceTask.computedBasisHash,
|
|
185
|
+
candidateComputedBasisHash: candidateTask.computedBasisHash,
|
|
186
|
+
sourceStatus: "unsealed",
|
|
187
|
+
candidateStatus: "unsealed",
|
|
188
|
+
});
|
|
189
|
+
}));
|
|
190
|
+
relations = Object.freeze([...sourceAssurance.effectiveDependencies]);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (candidateText !== null && migration.diff !== null) {
|
|
194
|
+
const forwardReplacementBytes = forward.reduce((total, edit) => total + utf8Bytes(edit.replacement), 0);
|
|
195
|
+
const inverseReplacementBytes = inverse.reduce((total, edit) => total + utf8Bytes(edit.replacement), 0);
|
|
196
|
+
const affectedIdentities = migration.convertedFields.length +
|
|
197
|
+
affectedTasks.length + relations.length;
|
|
198
|
+
if (utf8Bytes(input.sourceText) > MAX_SOURCE_BYTES ||
|
|
199
|
+
utf8Bytes(candidateText) > MAX_CANDIDATE_BYTES ||
|
|
200
|
+
forward.length > MAX_EDITS ||
|
|
201
|
+
inverse.length > MAX_EDITS ||
|
|
202
|
+
forwardReplacementBytes > MAX_REPLACEMENT_BYTES ||
|
|
203
|
+
inverseReplacementBytes > MAX_REPLACEMENT_BYTES ||
|
|
204
|
+
affectedIdentities > MAX_AFFECTED_IDENTITIES ||
|
|
205
|
+
utf8Bytes(migration.diff) > MAX_DIFF_BYTES) {
|
|
206
|
+
causes.push(cause("PTEDM-108", "the repair exceeds an editor-mutation hard limit"));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (causes.length > 0 || candidateText === null) {
|
|
210
|
+
return unavailable(input, causes);
|
|
211
|
+
}
|
|
212
|
+
return Object.freeze({
|
|
213
|
+
registry: EDITOR_REPAIR_REGISTRY,
|
|
214
|
+
repairId: EDITOR_REPAIR_ID,
|
|
215
|
+
binding: input.binding,
|
|
216
|
+
interaction: input.interaction,
|
|
217
|
+
automatic: input.automatic,
|
|
218
|
+
status: "applicable",
|
|
219
|
+
complete: true,
|
|
220
|
+
strictClass: "E1",
|
|
221
|
+
candidateSourceDigest: migration.updatedDigest,
|
|
222
|
+
convertedFields: Object.freeze([...migration.convertedFields]),
|
|
223
|
+
affectedTasks,
|
|
224
|
+
planningRelations: relations,
|
|
225
|
+
governanceScopes: Object.freeze([]),
|
|
226
|
+
destructiveRecordRanges: Object.freeze([]),
|
|
227
|
+
forwardEdits: forward,
|
|
228
|
+
inverseEdits: inverse,
|
|
229
|
+
unavailableCauses: Object.freeze([]),
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=repair.js.map
|