perttool 0.3.0 → 0.4.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 +35 -1
- package/README.md +82 -22
- package/dist/analysis/temporal-deadline.d.ts +2 -2
- package/dist/analysis/temporal-deadline.d.ts.map +1 -1
- package/dist/analysis/temporal-deadline.js.map +1 -1
- package/dist/analysis/temporal-precedence.d.ts +2 -2
- package/dist/analysis/temporal-precedence.d.ts.map +1 -1
- package/dist/analysis/temporal-precedence.js.map +1 -1
- package/dist/analysis/temporal-resource.d.ts +2 -2
- package/dist/analysis/temporal-resource.d.ts.map +1 -1
- package/dist/analysis/temporal-resource.js.map +1 -1
- package/dist/application/contract4.js +3 -3
- package/dist/application/contract5-governance.d.ts +8 -0
- package/dist/application/contract5-governance.d.ts.map +1 -0
- package/dist/application/contract5-governance.js +12 -0
- package/dist/application/contract5-governance.js.map +1 -0
- package/dist/application/init.d.ts +3 -12
- package/dist/application/init.d.ts.map +1 -1
- package/dist/application/init.js +16 -138
- package/dist/application/init.js.map +1 -1
- package/dist/application/project.d.ts +4 -24
- package/dist/application/project.d.ts.map +1 -1
- package/dist/application/project.js +3 -52
- package/dist/application/project.js.map +1 -1
- package/dist/application/target-governance-init.d.ts +36 -0
- package/dist/application/target-governance-init.d.ts.map +1 -0
- package/dist/application/target-governance-init.js +185 -0
- package/dist/application/target-governance-init.js.map +1 -0
- package/dist/application/target-governance-mutation.d.ts +20 -0
- package/dist/application/target-governance-mutation.d.ts.map +1 -0
- package/dist/application/target-governance-mutation.js +175 -0
- package/dist/application/target-governance-mutation.js.map +1 -0
- package/dist/application/target-governance-project.d.ts +34 -0
- package/dist/application/target-governance-project.d.ts.map +1 -0
- package/dist/application/target-governance-project.js +80 -0
- package/dist/application/target-governance-project.js.map +1 -0
- package/dist/application/target-governance-projection.d.ts +18 -0
- package/dist/application/target-governance-projection.d.ts.map +1 -0
- package/dist/application/target-governance-projection.js +248 -0
- package/dist/application/target-governance-projection.js.map +1 -0
- package/dist/application/target-governance-write.d.ts +17 -0
- package/dist/application/target-governance-write.d.ts.map +1 -0
- package/dist/application/target-governance-write.js +55 -0
- package/dist/application/target-governance-write.js.map +1 -0
- package/dist/application/target-mutate.d.ts +4 -2
- package/dist/application/target-mutate.d.ts.map +1 -1
- package/dist/application/target-mutate.js +27 -2
- package/dist/application/target-mutate.js.map +1 -1
- package/dist/application/target-temporal-analysis.d.ts +6 -4
- package/dist/application/target-temporal-analysis.d.ts.map +1 -1
- package/dist/application/target-temporal-analysis.js +8 -3
- package/dist/application/target-temporal-analysis.js.map +1 -1
- package/dist/application/target-temporal-input.d.ts +5 -5
- package/dist/application/target-temporal-input.d.ts.map +1 -1
- package/dist/application/target-temporal-input.js +4 -2
- package/dist/application/target-temporal-input.js.map +1 -1
- package/dist/application/target-unit-migration-candidate.d.ts +2 -2
- package/dist/application/target-unit-migration-candidate.d.ts.map +1 -1
- package/dist/application/target-unit-migration-candidate.js +8 -4
- package/dist/application/target-unit-migration-candidate.js.map +1 -1
- package/dist/application/target-unit-migration-request.d.ts +4 -4
- package/dist/application/target-unit-migration-request.d.ts.map +1 -1
- package/dist/application/target-unit-migration-request.js +4 -2
- package/dist/application/target-unit-migration-request.js.map +1 -1
- package/dist/application/target-unit-migration-result.d.ts +2 -2
- package/dist/application/target-unit-migration-result.d.ts.map +1 -1
- package/dist/application/target-unit-migration-result.js.map +1 -1
- package/dist/application/unit-migration.d.ts +4 -1
- package/dist/application/unit-migration.d.ts.map +1 -1
- package/dist/application/unit-migration.js +5 -3
- package/dist/application/unit-migration.js.map +1 -1
- package/dist/cli.js +144 -131
- package/dist/cli.js.map +1 -1
- package/dist/command/registry.d.ts +7 -1
- package/dist/command/registry.d.ts.map +1 -1
- package/dist/command/registry.js.map +1 -1
- package/dist/command/target-governance-discovery.d.ts +31 -0
- package/dist/command/target-governance-discovery.d.ts.map +1 -0
- package/dist/command/target-governance-discovery.js +390 -0
- package/dist/command/target-governance-discovery.js.map +1 -0
- package/dist/command/target-governance-usage.d.ts +22 -0
- package/dist/command/target-governance-usage.d.ts.map +1 -0
- package/dist/command/target-governance-usage.js +116 -0
- package/dist/command/target-governance-usage.js.map +1 -0
- package/dist/command/usage.d.ts +2 -0
- package/dist/command/usage.d.ts.map +1 -1
- package/dist/command/usage.js +43 -25
- package/dist/command/usage.js.map +1 -1
- package/dist/conversion/mermaid-import.d.ts.map +1 -1
- package/dist/conversion/mermaid-import.js +3 -2
- package/dist/conversion/mermaid-import.js.map +1 -1
- package/dist/conversion/mermaid.d.ts.map +1 -1
- package/dist/conversion/mermaid.js +27 -0
- package/dist/conversion/mermaid.js.map +1 -1
- package/dist/formatter/source-formatter.d.ts.map +1 -1
- package/dist/formatter/source-formatter.js +13 -2
- package/dist/formatter/source-formatter.js.map +1 -1
- package/dist/formatter/target-source-formatter.d.ts +2 -1
- package/dist/formatter/target-source-formatter.d.ts.map +1 -1
- package/dist/formatter/target-source-formatter.js +18 -2
- package/dist/formatter/target-source-formatter.js.map +1 -1
- package/dist/governance/authority.d.ts +21 -0
- package/dist/governance/authority.d.ts.map +1 -0
- package/dist/governance/authority.js +206 -0
- package/dist/governance/authority.js.map +1 -0
- package/dist/governance/guidance.d.ts +2 -0
- package/dist/governance/guidance.d.ts.map +1 -0
- package/dist/governance/guidance.js +2 -0
- package/dist/governance/guidance.js.map +1 -0
- package/dist/governance/source.d.ts +37 -0
- package/dist/governance/source.d.ts.map +1 -0
- package/dist/governance/source.js +103 -0
- package/dist/governance/source.js.map +1 -0
- package/dist/governance/types.d.ts +41 -0
- package/dist/governance/types.d.ts.map +1 -0
- package/dist/governance/types.js +2 -0
- package/dist/governance/types.js.map +1 -0
- package/dist/help/guide.d.ts +8 -5
- package/dist/help/guide.d.ts.map +1 -1
- package/dist/help/guide.js.map +1 -1
- package/dist/help/registry.js +2 -2
- package/dist/help/registry.js.map +1 -1
- package/dist/help/target-governance-guide.d.ts +10 -0
- package/dist/help/target-governance-guide.d.ts.map +1 -0
- package/dist/help/target-governance-guide.js +57 -0
- package/dist/help/target-governance-guide.js.map +1 -0
- package/dist/index.d.ts +17 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/io/safe-write.d.ts +4 -0
- package/dist/io/safe-write.d.ts.map +1 -1
- package/dist/io/safe-write.js +22 -1
- package/dist/io/safe-write.js.map +1 -1
- package/dist/io/target-safe-write.d.ts +5 -2
- package/dist/io/target-safe-write.d.ts.map +1 -1
- package/dist/io/target-safe-write.js +20 -2
- package/dist/io/target-safe-write.js.map +1 -1
- package/dist/migration/grammar-boundary.d.ts +1 -1
- package/dist/migration/grammar-boundary.d.ts.map +1 -1
- package/dist/migration/grammar-boundary.js +7 -4
- package/dist/migration/grammar-boundary.js.map +1 -1
- package/dist/model/declaration-fields.d.ts +7 -0
- package/dist/model/declaration-fields.d.ts.map +1 -1
- package/dist/model/declaration-fields.js +18 -0
- package/dist/model/declaration-fields.js.map +1 -1
- package/dist/mutation/advance.d.ts +11 -0
- package/dist/mutation/advance.d.ts.map +1 -1
- package/dist/mutation/advance.js +16 -3
- package/dist/mutation/advance.js.map +1 -1
- package/dist/mutation/project.d.ts +5 -1
- package/dist/mutation/project.d.ts.map +1 -1
- package/dist/mutation/project.js +99 -6
- package/dist/mutation/project.js.map +1 -1
- package/dist/mutation/target-types.d.ts +18 -1
- package/dist/mutation/target-types.d.ts.map +1 -1
- package/dist/mutation/types.d.ts +8 -1
- package/dist/mutation/types.d.ts.map +1 -1
- package/dist/parser/document-parser.d.ts +7 -0
- package/dist/parser/document-parser.d.ts.map +1 -1
- package/dist/parser/document-parser.js +57 -2
- package/dist/parser/document-parser.js.map +1 -1
- package/dist/semantic/target-validator.d.ts +11 -1
- package/dist/semantic/target-validator.d.ts.map +1 -1
- package/dist/semantic/target-validator.js +45 -2
- package/dist/semantic/target-validator.js.map +1 -1
- package/dist/semantic/validator.d.ts +1 -0
- package/dist/semantic/validator.d.ts.map +1 -1
- package/dist/semantic/validator.js +29 -1
- package/dist/semantic/validator.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/application/init.js
CHANGED
|
@@ -1,145 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { mutationDiagnostic } from "../mutation/diagnostics.js";
|
|
1
|
+
import { TARGET_GRAMMAR_4_CAPABILITY } from "../parser/document-parser.js";
|
|
3
2
|
import { TOOL_VERSION } from "../version.js";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"durationUnit",
|
|
9
|
-
"initialMilestone",
|
|
10
|
-
"initialMilestoneTitle",
|
|
11
|
-
"finish",
|
|
12
|
-
"version",
|
|
13
|
-
"asOf",
|
|
14
|
-
"velocity",
|
|
15
|
-
"initialMilestoneDeadline",
|
|
16
|
-
]);
|
|
17
|
-
const previewWrite = Object.freeze({
|
|
18
|
-
mode: "preview",
|
|
19
|
-
target: null,
|
|
20
|
-
written: false,
|
|
21
|
-
});
|
|
22
|
-
function requestError(value) {
|
|
23
|
-
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
24
|
-
return "project init request is not an object";
|
|
25
|
-
}
|
|
26
|
-
const request = value;
|
|
27
|
-
if (Object.keys(request).some((name) => !requestFields.has(name))) {
|
|
28
|
-
return "project init request contains unsupported fields";
|
|
29
|
-
}
|
|
30
|
-
for (const field of [
|
|
31
|
-
"projectId",
|
|
32
|
-
"title",
|
|
33
|
-
"initialMilestone",
|
|
34
|
-
"initialMilestoneTitle",
|
|
35
|
-
"finish",
|
|
36
|
-
]) {
|
|
37
|
-
if (typeof request[field] !== "string") {
|
|
38
|
-
return `project init request requires string field ${field}`;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (request["durationUnit"] !== "day" &&
|
|
42
|
-
request["durationUnit"] !== "hour" &&
|
|
43
|
-
request["durationUnit"] !== "point") {
|
|
44
|
-
return "project init durationUnit must be day, hour, or point";
|
|
45
|
-
}
|
|
46
|
-
if (request["version"] !== undefined &&
|
|
47
|
-
(!Number.isSafeInteger(request["version"]) ||
|
|
48
|
-
request["version"] < 0 ||
|
|
49
|
-
request["version"] > 2_147_483_647)) {
|
|
50
|
-
return "project init version must be an integer from 0 to 2147483647";
|
|
51
|
-
}
|
|
52
|
-
for (const field of ["asOf", "velocity", "initialMilestoneDeadline"]) {
|
|
53
|
-
if (request[field] !== undefined && typeof request[field] !== "string") {
|
|
54
|
-
return `project init ${field} must be a string when provided`;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (request["finish"] !== request["initialMilestone"]) {
|
|
58
|
-
return "project init finish must equal initialMilestone in initialization version 1";
|
|
59
|
-
}
|
|
60
|
-
if (request["durationUnit"] === "point" && request["velocity"] === undefined) {
|
|
61
|
-
return "project init with point durationUnit requires velocity";
|
|
62
|
-
}
|
|
63
|
-
if (request["initialMilestoneDeadline"] !== undefined &&
|
|
64
|
-
((request["version"] !== 2 && request["version"] !== 3) ||
|
|
65
|
-
request["asOf"] === undefined)) {
|
|
66
|
-
return "project init initialMilestoneDeadline requires version 2 or 3 and asOf";
|
|
67
|
-
}
|
|
68
|
-
return undefined;
|
|
69
|
-
}
|
|
70
|
-
function renderCandidate(request) {
|
|
71
|
-
const fields = [
|
|
72
|
-
` version ${request.version ?? 1}`,
|
|
73
|
-
` title ${JSON.stringify(request.title)}`,
|
|
74
|
-
...(request.asOf === undefined ? [] : [` as_of ${request.asOf}`]),
|
|
75
|
-
` duration_unit ${request.durationUnit}`,
|
|
76
|
-
...(request.velocity === undefined ? [] : [` velocity ${request.velocity}`]),
|
|
77
|
-
` finish ${request.finish}`,
|
|
78
|
-
];
|
|
79
|
-
return [
|
|
80
|
-
`project ${request.projectId}:`,
|
|
81
|
-
...fields,
|
|
82
|
-
"",
|
|
83
|
-
`milestone ${request.initialMilestone}:`,
|
|
84
|
-
` title ${JSON.stringify(request.initialMilestoneTitle)}`,
|
|
85
|
-
" state reached",
|
|
86
|
-
...(request.initialMilestoneDeadline === undefined
|
|
87
|
-
? []
|
|
88
|
-
: [` deadline ${request.initialMilestoneDeadline}`]),
|
|
89
|
-
"",
|
|
90
|
-
].join("\n");
|
|
91
|
-
}
|
|
92
|
-
function result(values) {
|
|
93
|
-
return {
|
|
3
|
+
import { planTargetGovernanceProjectInit, } from "./target-governance-init.js";
|
|
4
|
+
export function planProjectInit(request) {
|
|
5
|
+
const planned = planTargetGovernanceProjectInit(request, TARGET_GRAMMAR_4_CAPABILITY);
|
|
6
|
+
return Object.freeze({
|
|
94
7
|
schemaVersion: "Perttool.InitResult.v1",
|
|
95
|
-
cliContractVersion:
|
|
8
|
+
cliContractVersion: 5,
|
|
96
9
|
toolVersion: TOOL_VERSION,
|
|
97
10
|
operation: "project.init",
|
|
11
|
+
ok: planned.ok,
|
|
12
|
+
documentId: planned.documentId,
|
|
98
13
|
source: null,
|
|
99
14
|
sourceDigest: null,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (error !== undefined) {
|
|
107
|
-
return result({
|
|
108
|
-
ok: false,
|
|
109
|
-
documentId: null,
|
|
110
|
-
candidateText: null,
|
|
111
|
-
candidateDigest: null,
|
|
112
|
-
edits: [],
|
|
113
|
-
diagnostics: [mutationDiagnostic("PTMUT-301", error)],
|
|
114
|
-
diagnosticsTruncated: false,
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
const candidateText = renderCandidate(request);
|
|
118
|
-
const checked = checkDocument(candidateText);
|
|
119
|
-
if (!checked.ok) {
|
|
120
|
-
return result({
|
|
121
|
-
ok: false,
|
|
122
|
-
documentId: null,
|
|
123
|
-
candidateText: null,
|
|
124
|
-
candidateDigest: null,
|
|
125
|
-
edits: [],
|
|
126
|
-
diagnostics: checked.diagnostics,
|
|
127
|
-
diagnosticsTruncated: checked.diagnosticsTruncated,
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
const edit = Object.freeze({
|
|
131
|
-
startOffset: 0,
|
|
132
|
-
endOffset: 0,
|
|
133
|
-
replacement: candidateText,
|
|
134
|
-
});
|
|
135
|
-
return result({
|
|
136
|
-
ok: true,
|
|
137
|
-
documentId: checked.documentId,
|
|
138
|
-
candidateText,
|
|
139
|
-
candidateDigest: digestDocumentBytes(Buffer.from(candidateText, "utf8")),
|
|
140
|
-
edits: Object.freeze([edit]),
|
|
141
|
-
diagnostics: checked.diagnostics,
|
|
142
|
-
diagnosticsTruncated: checked.diagnosticsTruncated,
|
|
15
|
+
candidateText: planned.candidateText,
|
|
16
|
+
candidateDigest: planned.candidateDigest,
|
|
17
|
+
edits: planned.edits,
|
|
18
|
+
write: planned.write,
|
|
19
|
+
diagnostics: planned.diagnostics,
|
|
20
|
+
diagnosticsTruncated: planned.diagnosticsTruncated,
|
|
143
21
|
});
|
|
144
22
|
}
|
|
145
23
|
export function withProjectInitOutput(value, output) {
|
|
@@ -152,14 +30,14 @@ export function withProjectInitOutput(value, output) {
|
|
|
152
30
|
output.digest !== value.candidateDigest) {
|
|
153
31
|
throw new Error("project init output does not match the candidate");
|
|
154
32
|
}
|
|
155
|
-
return {
|
|
33
|
+
return Object.freeze({
|
|
156
34
|
...value,
|
|
157
35
|
write: Object.freeze({
|
|
158
36
|
mode: "out",
|
|
159
37
|
target: output.target,
|
|
160
38
|
written: true,
|
|
161
39
|
}),
|
|
162
|
-
};
|
|
40
|
+
});
|
|
163
41
|
}
|
|
164
42
|
function diagnosticToJson(diagnostic) {
|
|
165
43
|
const spanToJson = (span) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/application/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/application/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type {
|
|
3
|
-
import { type CheckOptions } from "./check.js";
|
|
1
|
+
import { type TargetGovernanceProjectMetadata, type TargetGovernanceProjectMetadataResult } from "./target-governance-project.js";
|
|
2
|
+
import type { CheckOptions } from "./check.js";
|
|
4
3
|
export type ProjectMetadataDurationUnit = "day" | "hour" | "point";
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
readonly version: number;
|
|
8
|
-
readonly title: string;
|
|
9
|
-
readonly description: string | null;
|
|
10
|
-
readonly asOf: TargetCalendarValue | null;
|
|
11
|
-
readonly durationUnit: ProjectMetadataDurationUnit;
|
|
12
|
-
readonly velocity: string | null;
|
|
13
|
-
readonly finish: string;
|
|
14
|
-
readonly finishDeadline: TargetCalendarValue | null;
|
|
15
|
-
readonly criticalEpsilon: string | null;
|
|
16
|
-
readonly targetDuration: string | null;
|
|
17
|
-
}
|
|
18
|
-
export interface ProjectMetadataResult {
|
|
19
|
-
readonly ok: boolean;
|
|
20
|
-
readonly documentId: string | null;
|
|
21
|
-
readonly grammarVersion: number | null;
|
|
22
|
-
readonly project: ProjectMetadata | null;
|
|
23
|
-
readonly diagnostics: readonly Diagnostic[];
|
|
24
|
-
readonly diagnosticsTruncated: boolean;
|
|
25
|
-
}
|
|
4
|
+
export type ProjectMetadata = TargetGovernanceProjectMetadata;
|
|
5
|
+
export type ProjectMetadataResult = TargetGovernanceProjectMetadataResult;
|
|
26
6
|
export declare function getProjectMetadata(text: string, options?: CheckOptions): ProjectMetadataResult;
|
|
27
7
|
//# sourceMappingURL=project.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/application/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/application/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,+BAA+B,EACpC,KAAK,qCAAqC,EAC3C,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,2BAA2B,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AACnE,MAAM,MAAM,eAAe,GAAG,+BAA+B,CAAC;AAC9D,MAAM,MAAM,qBAAqB,GAAG,qCAAqC,CAAC;AAE1E,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,YAAiB,GACzB,qBAAqB,CAMvB"}
|
|
@@ -1,55 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
function optionalString(value) {
|
|
4
|
-
return typeof value === "string" ? value : null;
|
|
5
|
-
}
|
|
6
|
-
function optionalLiteral(value) {
|
|
7
|
-
return value !== null &&
|
|
8
|
-
typeof value === "object" &&
|
|
9
|
-
typeof value.text === "string"
|
|
10
|
-
? value.text
|
|
11
|
-
: null;
|
|
12
|
-
}
|
|
1
|
+
import { getTargetGovernanceProjectMetadata, } from "./target-governance-project.js";
|
|
2
|
+
import { TARGET_GRAMMAR_4_CAPABILITY } from "../parser/document-parser.js";
|
|
13
3
|
export function getProjectMetadata(text, options = {}) {
|
|
14
|
-
|
|
15
|
-
const declaration = checked.document.declarations.find(({ kind }) => kind === "project");
|
|
16
|
-
if (!checked.ok || declaration === undefined || checked.grammarVersion === null) {
|
|
17
|
-
return {
|
|
18
|
-
ok: false,
|
|
19
|
-
documentId: checked.documentId,
|
|
20
|
-
grammarVersion: null,
|
|
21
|
-
project: null,
|
|
22
|
-
diagnostics: checked.diagnostics,
|
|
23
|
-
diagnosticsTruncated: checked.diagnosticsTruncated,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
const title = fieldNamed(declaration, "title")?.value;
|
|
27
|
-
const durationUnit = fieldNamed(declaration, "duration_unit")?.value;
|
|
28
|
-
const finish = fieldNamed(declaration, "finish")?.value;
|
|
29
|
-
if (typeof title !== "string" ||
|
|
30
|
-
(durationUnit !== "day" && durationUnit !== "hour" && durationUnit !== "point") ||
|
|
31
|
-
typeof finish !== "string") {
|
|
32
|
-
throw new Error("valid project document is missing required project metadata");
|
|
33
|
-
}
|
|
34
|
-
return {
|
|
35
|
-
ok: true,
|
|
36
|
-
documentId: checked.documentId,
|
|
37
|
-
grammarVersion: checked.grammarVersion,
|
|
38
|
-
project: {
|
|
39
|
-
id: declaration.id,
|
|
40
|
-
version: checked.grammarVersion,
|
|
41
|
-
title,
|
|
42
|
-
description: optionalString(fieldNamed(declaration, "description")?.value),
|
|
43
|
-
asOf: checked.temporalInputs?.anchor ?? null,
|
|
44
|
-
durationUnit,
|
|
45
|
-
velocity: optionalLiteral(fieldNamed(declaration, "velocity")?.value),
|
|
46
|
-
finish,
|
|
47
|
-
finishDeadline: checked.temporalInputs?.milestoneDeadlines.find(({ milestoneId }) => milestoneId === finish)?.deadline ?? null,
|
|
48
|
-
criticalEpsilon: optionalLiteral(fieldNamed(declaration, "critical_epsilon")?.value),
|
|
49
|
-
targetDuration: optionalLiteral(fieldNamed(declaration, "target_duration")?.value),
|
|
50
|
-
},
|
|
51
|
-
diagnostics: checked.diagnostics,
|
|
52
|
-
diagnosticsTruncated: checked.diagnosticsTruncated,
|
|
53
|
-
};
|
|
4
|
+
return getTargetGovernanceProjectMetadata(text, TARGET_GRAMMAR_4_CAPABILITY, options);
|
|
54
5
|
}
|
|
55
6
|
//# sourceMappingURL=project.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/application/project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/application/project.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,GAGnC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAO3E,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,OAAO,GAAiB,EAAE;IAE1B,OAAO,kCAAkC,CACvC,IAAI,EACJ,2BAA2B,EAC3B,OAAO,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Diagnostic } from "../model/diagnostics.js";
|
|
2
|
+
import type { TextEdit } from "../mutation/text-edits.js";
|
|
3
|
+
import type { TargetGrammar4Capability } from "../parser/document-parser.js";
|
|
4
|
+
import { GOVERNANCE_DIRECT_EDIT_WARNING } from "../governance/guidance.js";
|
|
5
|
+
import { type TargetValidationOptions } from "../semantic/target-validator.js";
|
|
6
|
+
import type { ProjectInitDurationUnit, ProjectInitWrite } from "./init.js";
|
|
7
|
+
export { GOVERNANCE_DIRECT_EDIT_WARNING };
|
|
8
|
+
export interface TargetGovernanceProjectInitRequest {
|
|
9
|
+
readonly projectId: string;
|
|
10
|
+
readonly title: string;
|
|
11
|
+
readonly durationUnit: ProjectInitDurationUnit;
|
|
12
|
+
readonly initialMilestone: string;
|
|
13
|
+
readonly initialMilestoneTitle: string;
|
|
14
|
+
readonly finish: string;
|
|
15
|
+
readonly version?: number;
|
|
16
|
+
readonly asOf?: string;
|
|
17
|
+
readonly velocity?: string;
|
|
18
|
+
readonly initialMilestoneDeadline?: string;
|
|
19
|
+
readonly goalOwner?: string;
|
|
20
|
+
readonly goalDelegates?: readonly string[];
|
|
21
|
+
readonly dagOwner?: string;
|
|
22
|
+
readonly dagDelegates?: readonly string[];
|
|
23
|
+
}
|
|
24
|
+
export interface TargetGovernanceProjectInitResult {
|
|
25
|
+
readonly ok: boolean;
|
|
26
|
+
readonly documentId: string | null;
|
|
27
|
+
readonly grammarVersion: 1 | 2 | 3 | 4 | null;
|
|
28
|
+
readonly candidateText: string | null;
|
|
29
|
+
readonly candidateDigest: string | null;
|
|
30
|
+
readonly edits: readonly TextEdit[];
|
|
31
|
+
readonly write: ProjectInitWrite;
|
|
32
|
+
readonly diagnostics: readonly Diagnostic[];
|
|
33
|
+
readonly diagnosticsTruncated: boolean;
|
|
34
|
+
}
|
|
35
|
+
export declare function planTargetGovernanceProjectInit(request: unknown, capability: TargetGrammar4Capability, options?: TargetValidationOptions): TargetGovernanceProjectInitResult;
|
|
36
|
+
//# sourceMappingURL=target-governance-init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-governance-init.d.ts","sourceRoot":"","sources":["../../src/application/target-governance-init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,8BAA8B,EAAE,CAAC;AAE1C,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;CACxC;AAyKD,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,wBAAwB,EACpC,OAAO,GAAE,uBAA4B,GACpC,iCAAiC,CAoDnC"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { digestDocumentBytes } from "../io/document-file.js";
|
|
2
|
+
import { mutationDiagnostic } from "../mutation/diagnostics.js";
|
|
3
|
+
import { GOVERNANCE_DIRECT_EDIT_WARNING } from "../governance/guidance.js";
|
|
4
|
+
import { validateTargetGrammar4Document, } from "../semantic/target-validator.js";
|
|
5
|
+
export { GOVERNANCE_DIRECT_EDIT_WARNING };
|
|
6
|
+
const requestFields = new Set([
|
|
7
|
+
"projectId",
|
|
8
|
+
"title",
|
|
9
|
+
"durationUnit",
|
|
10
|
+
"initialMilestone",
|
|
11
|
+
"initialMilestoneTitle",
|
|
12
|
+
"finish",
|
|
13
|
+
"version",
|
|
14
|
+
"asOf",
|
|
15
|
+
"velocity",
|
|
16
|
+
"initialMilestoneDeadline",
|
|
17
|
+
"goalOwner",
|
|
18
|
+
"goalDelegates",
|
|
19
|
+
"dagOwner",
|
|
20
|
+
"dagDelegates",
|
|
21
|
+
]);
|
|
22
|
+
const principalPattern = /^[A-Za-z][A-Za-z0-9_-]*$/;
|
|
23
|
+
const previewWrite = Object.freeze({
|
|
24
|
+
mode: "preview",
|
|
25
|
+
target: null,
|
|
26
|
+
written: false,
|
|
27
|
+
});
|
|
28
|
+
function hasGovernance(request) {
|
|
29
|
+
return (request.goalOwner !== undefined ||
|
|
30
|
+
request.goalDelegates !== undefined ||
|
|
31
|
+
request.dagOwner !== undefined ||
|
|
32
|
+
request.dagDelegates !== undefined);
|
|
33
|
+
}
|
|
34
|
+
function requestError(value) {
|
|
35
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
36
|
+
return "project init request is not an object";
|
|
37
|
+
}
|
|
38
|
+
const request = value;
|
|
39
|
+
if (Object.keys(request).some((field) => !requestFields.has(field))) {
|
|
40
|
+
return "project init request contains unsupported fields";
|
|
41
|
+
}
|
|
42
|
+
for (const field of [
|
|
43
|
+
"projectId",
|
|
44
|
+
"title",
|
|
45
|
+
"initialMilestone",
|
|
46
|
+
"initialMilestoneTitle",
|
|
47
|
+
"finish",
|
|
48
|
+
]) {
|
|
49
|
+
if (typeof request[field] !== "string") {
|
|
50
|
+
return `project init request requires string field ${field}`;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (request["durationUnit"] !== "day" &&
|
|
54
|
+
request["durationUnit"] !== "hour" &&
|
|
55
|
+
request["durationUnit"] !== "point") {
|
|
56
|
+
return "project init durationUnit must be day, hour, or point";
|
|
57
|
+
}
|
|
58
|
+
if (request["version"] !== undefined &&
|
|
59
|
+
(!Number.isSafeInteger(request["version"]) ||
|
|
60
|
+
request["version"] < 1 ||
|
|
61
|
+
request["version"] > 4)) {
|
|
62
|
+
return "project init version must be an integer from 1 to 4";
|
|
63
|
+
}
|
|
64
|
+
for (const field of ["asOf", "velocity", "initialMilestoneDeadline"]) {
|
|
65
|
+
if (request[field] !== undefined && typeof request[field] !== "string") {
|
|
66
|
+
return `project init ${field} must be a string when provided`;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
for (const field of ["goalOwner", "dagOwner"]) {
|
|
70
|
+
const principal = request[field];
|
|
71
|
+
if (principal !== undefined &&
|
|
72
|
+
(typeof principal !== "string" || !principalPattern.test(principal))) {
|
|
73
|
+
return `project init ${field} must be a principal when provided`;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
for (const field of ["goalDelegates", "dagDelegates"]) {
|
|
77
|
+
const principals = request[field];
|
|
78
|
+
if (principals !== undefined &&
|
|
79
|
+
(!Array.isArray(principals) ||
|
|
80
|
+
principals.some((principal) => typeof principal !== "string" || !principalPattern.test(principal)))) {
|
|
81
|
+
return `project init ${field} must be a principal list when provided`;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (request["finish"] !== request["initialMilestone"]) {
|
|
85
|
+
return "project init finish must equal initialMilestone in initialization version 1";
|
|
86
|
+
}
|
|
87
|
+
if (request["durationUnit"] === "point" && request["velocity"] === undefined) {
|
|
88
|
+
return "project init with point durationUnit requires velocity";
|
|
89
|
+
}
|
|
90
|
+
const governance = hasGovernance(request);
|
|
91
|
+
if (governance && request["version"] !== undefined && request["version"] !== 4) {
|
|
92
|
+
return "project init governance fields require version 4";
|
|
93
|
+
}
|
|
94
|
+
const version = governance ? 4 : (request["version"] ?? 1);
|
|
95
|
+
if (request["initialMilestoneDeadline"] !== undefined &&
|
|
96
|
+
((version !== 2 && version !== 3 && version !== 4) ||
|
|
97
|
+
request["asOf"] === undefined)) {
|
|
98
|
+
return "project init initialMilestoneDeadline requires version 2, 3, or 4 and asOf";
|
|
99
|
+
}
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
function principalList(values) {
|
|
103
|
+
return `[${values.join(", ")}]`;
|
|
104
|
+
}
|
|
105
|
+
function renderCandidate(request) {
|
|
106
|
+
const version = hasGovernance(request) ? 4 : (request.version ?? 1);
|
|
107
|
+
return [
|
|
108
|
+
GOVERNANCE_DIRECT_EDIT_WARNING,
|
|
109
|
+
`project ${request.projectId}:`,
|
|
110
|
+
` version ${version}`,
|
|
111
|
+
` title ${JSON.stringify(request.title)}`,
|
|
112
|
+
...(request.asOf === undefined ? [] : [` as_of ${request.asOf}`]),
|
|
113
|
+
` duration_unit ${request.durationUnit}`,
|
|
114
|
+
...(request.velocity === undefined ? [] : [` velocity ${request.velocity}`]),
|
|
115
|
+
` finish ${request.finish}`,
|
|
116
|
+
...(request.goalOwner === undefined
|
|
117
|
+
? []
|
|
118
|
+
: [` goal_owner ${request.goalOwner}`]),
|
|
119
|
+
...(request.goalDelegates === undefined
|
|
120
|
+
? []
|
|
121
|
+
: [` goal_delegates ${principalList(request.goalDelegates)}`]),
|
|
122
|
+
...(request.dagOwner === undefined
|
|
123
|
+
? []
|
|
124
|
+
: [` dag_owner ${request.dagOwner}`]),
|
|
125
|
+
...(request.dagDelegates === undefined
|
|
126
|
+
? []
|
|
127
|
+
: [` dag_delegates ${principalList(request.dagDelegates)}`]),
|
|
128
|
+
"",
|
|
129
|
+
`milestone ${request.initialMilestone}:`,
|
|
130
|
+
` title ${JSON.stringify(request.initialMilestoneTitle)}`,
|
|
131
|
+
" state reached",
|
|
132
|
+
...(request.initialMilestoneDeadline === undefined
|
|
133
|
+
? []
|
|
134
|
+
: [` deadline ${request.initialMilestoneDeadline}`]),
|
|
135
|
+
"",
|
|
136
|
+
].join("\n");
|
|
137
|
+
}
|
|
138
|
+
export function planTargetGovernanceProjectInit(request, capability, options = {}) {
|
|
139
|
+
const error = requestError(request);
|
|
140
|
+
if (error !== undefined) {
|
|
141
|
+
return {
|
|
142
|
+
ok: false,
|
|
143
|
+
documentId: null,
|
|
144
|
+
grammarVersion: null,
|
|
145
|
+
candidateText: null,
|
|
146
|
+
candidateDigest: null,
|
|
147
|
+
edits: [],
|
|
148
|
+
write: previewWrite,
|
|
149
|
+
diagnostics: [mutationDiagnostic("PTMUT-301", error)],
|
|
150
|
+
diagnosticsTruncated: false,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
const candidateText = renderCandidate(request);
|
|
154
|
+
const checked = validateTargetGrammar4Document(candidateText, capability, options);
|
|
155
|
+
if (!checked.ok || checked.validatedDocument === null) {
|
|
156
|
+
return {
|
|
157
|
+
ok: false,
|
|
158
|
+
documentId: checked.documentId,
|
|
159
|
+
grammarVersion: null,
|
|
160
|
+
candidateText: null,
|
|
161
|
+
candidateDigest: null,
|
|
162
|
+
edits: [],
|
|
163
|
+
write: previewWrite,
|
|
164
|
+
diagnostics: checked.diagnostics,
|
|
165
|
+
diagnosticsTruncated: checked.diagnosticsTruncated,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
const edit = Object.freeze({
|
|
169
|
+
startOffset: 0,
|
|
170
|
+
endOffset: 0,
|
|
171
|
+
replacement: candidateText,
|
|
172
|
+
});
|
|
173
|
+
return {
|
|
174
|
+
ok: true,
|
|
175
|
+
documentId: checked.documentId,
|
|
176
|
+
grammarVersion: checked.validatedDocument.grammarVersion,
|
|
177
|
+
candidateText,
|
|
178
|
+
candidateDigest: digestDocumentBytes(Buffer.from(candidateText, "utf8")),
|
|
179
|
+
edits: Object.freeze([edit]),
|
|
180
|
+
write: previewWrite,
|
|
181
|
+
diagnostics: checked.diagnostics,
|
|
182
|
+
diagnosticsTruncated: checked.diagnosticsTruncated,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=target-governance-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-governance-init.js","sourceRoot":"","sources":["../../src/application/target-governance-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { GovernanceDecisionV1, GovernanceRequestInput } from "../governance/types.js";
|
|
2
|
+
import type { TargetGovernanceBatchMutation, TargetGovernanceMutation } from "../mutation/target-types.js";
|
|
3
|
+
import type { MutationOptions, MutationResult } from "../mutation/types.js";
|
|
4
|
+
import { type AdvanceResult } from "../mutation/advance.js";
|
|
5
|
+
import type { TargetGrammar4Capability } from "../parser/document-parser.js";
|
|
6
|
+
export interface TargetGovernanceMutationOptions extends MutationOptions {
|
|
7
|
+
readonly governance?: GovernanceRequestInput;
|
|
8
|
+
}
|
|
9
|
+
export interface TargetGovernanceMutationResultV2 extends MutationResult {
|
|
10
|
+
readonly schemaVersion: "Perttool.MutationResult.v2";
|
|
11
|
+
readonly governance: GovernanceDecisionV1 | null;
|
|
12
|
+
}
|
|
13
|
+
export interface TargetGovernanceAdvanceResultV2 extends AdvanceResult {
|
|
14
|
+
readonly schemaVersion: "Perttool.MutationResult.v2";
|
|
15
|
+
readonly governance: GovernanceDecisionV1 | null;
|
|
16
|
+
}
|
|
17
|
+
export declare function planTargetGovernanceMutation(text: string, mutation: TargetGovernanceMutation, capability: TargetGrammar4Capability, options?: TargetGovernanceMutationOptions): TargetGovernanceMutationResultV2;
|
|
18
|
+
export declare function planTargetGovernanceBatchMutation(text: string, mutation: TargetGovernanceBatchMutation, capability: TargetGrammar4Capability, options?: TargetGovernanceMutationOptions): TargetGovernanceMutationResultV2;
|
|
19
|
+
export declare function planTargetGovernanceAdvance(text: string, capability: TargetGrammar4Capability, options?: TargetGovernanceMutationOptions): TargetGovernanceAdvanceResultV2;
|
|
20
|
+
//# sourceMappingURL=target-governance-mutation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-governance-mutation.d.ts","sourceRoot":"","sources":["../../src/application/target-governance-mutation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,KAAK,EACV,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAU7E,MAAM,WAAW,+BAAgC,SAAQ,eAAe;IACtE,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;CAC9C;AAED,MAAM,WAAW,gCAAiC,SAAQ,cAAc;IACtE,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,+BACf,SAAQ,aAAa;IACrB,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAClD;AA8JD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,wBAAwB,EAClC,UAAU,EAAE,wBAAwB,EACpC,OAAO,GAAE,+BAAoC,GAC5C,gCAAgC,CAiClC;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,6BAA6B,EACvC,UAAU,EAAE,wBAAwB,EACpC,OAAO,GAAE,+BAAoC,GAC5C,gCAAgC,CAiClC;AA8BD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,wBAAwB,EACpC,OAAO,GAAE,+BAAoC,GAC5C,+BAA+B,CAoCjC"}
|