perttool 0.1.0-alpha.2 → 0.2.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.
Files changed (99) hide show
  1. package/CHANGELOG.md +78 -28
  2. package/README.md +173 -95
  3. package/dist/application/agent-help.d.ts +3 -0
  4. package/dist/application/agent-help.d.ts.map +1 -0
  5. package/dist/application/agent-help.js +5 -0
  6. package/dist/application/agent-help.js.map +1 -0
  7. package/dist/application/analyze.js +5 -5
  8. package/dist/application/analyze.js.map +1 -1
  9. package/dist/application/init.d.ts +42 -0
  10. package/dist/application/init.d.ts.map +1 -0
  11. package/dist/application/init.js +217 -0
  12. package/dist/application/init.js.map +1 -0
  13. package/dist/application/mutate.d.ts.map +1 -1
  14. package/dist/application/mutate.js +28 -15
  15. package/dist/application/mutate.js.map +1 -1
  16. package/dist/application/project.d.ts +25 -0
  17. package/dist/application/project.d.ts.map +1 -0
  18. package/dist/application/project.js +54 -0
  19. package/dist/application/project.js.map +1 -0
  20. package/dist/cli.js +419 -331
  21. package/dist/cli.js.map +1 -1
  22. package/dist/command/discovery.d.ts +30 -0
  23. package/dist/command/discovery.d.ts.map +1 -0
  24. package/dist/command/discovery.js +625 -0
  25. package/dist/command/discovery.js.map +1 -0
  26. package/dist/command/registry.d.ts +84 -0
  27. package/dist/command/registry.d.ts.map +1 -0
  28. package/dist/command/registry.js +951 -0
  29. package/dist/command/registry.js.map +1 -0
  30. package/dist/command/usage.d.ts +42 -0
  31. package/dist/command/usage.d.ts.map +1 -0
  32. package/dist/command/usage.js +337 -0
  33. package/dist/command/usage.js.map +1 -0
  34. package/dist/conversion/mermaid-import.js +56 -56
  35. package/dist/conversion/mermaid-import.js.map +1 -1
  36. package/dist/conversion/mermaid.js +1 -1
  37. package/dist/conversion/mermaid.js.map +1 -1
  38. package/dist/guidance/profile.d.ts +6 -0
  39. package/dist/guidance/profile.d.ts.map +1 -0
  40. package/dist/guidance/profile.js +1158 -0
  41. package/dist/guidance/profile.js.map +1 -0
  42. package/dist/guidance/projection.d.ts +16 -0
  43. package/dist/guidance/projection.d.ts.map +1 -0
  44. package/dist/guidance/projection.js +276 -0
  45. package/dist/guidance/projection.js.map +1 -0
  46. package/dist/guidance/query.d.ts +4 -0
  47. package/dist/guidance/query.d.ts.map +1 -0
  48. package/dist/guidance/query.js +178 -0
  49. package/dist/guidance/query.js.map +1 -0
  50. package/dist/guidance/text.d.ts +4 -0
  51. package/dist/guidance/text.d.ts.map +1 -0
  52. package/dist/guidance/text.js +118 -0
  53. package/dist/guidance/text.js.map +1 -0
  54. package/dist/guidance/types.d.ts +227 -0
  55. package/dist/guidance/types.d.ts.map +1 -0
  56. package/dist/guidance/types.js +54 -0
  57. package/dist/guidance/types.js.map +1 -0
  58. package/dist/guidance/validator.d.ts +8 -0
  59. package/dist/guidance/validator.d.ts.map +1 -0
  60. package/dist/guidance/validator.js +383 -0
  61. package/dist/guidance/validator.js.map +1 -0
  62. package/dist/help/guide.d.ts +12 -0
  63. package/dist/help/guide.d.ts.map +1 -0
  64. package/dist/help/guide.js +103 -0
  65. package/dist/help/guide.js.map +1 -0
  66. package/dist/help/registry.d.ts.map +1 -1
  67. package/dist/help/registry.js +76 -67
  68. package/dist/help/registry.js.map +1 -1
  69. package/dist/index.d.ts +21 -1
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +13 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/io/safe-write.js +17 -17
  74. package/dist/io/safe-write.js.map +1 -1
  75. package/dist/mutation/gate.d.ts +5 -0
  76. package/dist/mutation/gate.d.ts.map +1 -0
  77. package/dist/mutation/gate.js +156 -0
  78. package/dist/mutation/gate.js.map +1 -0
  79. package/dist/mutation/milestone.js +26 -26
  80. package/dist/mutation/milestone.js.map +1 -1
  81. package/dist/mutation/project.d.ts +5 -0
  82. package/dist/mutation/project.d.ts.map +1 -0
  83. package/dist/mutation/project.js +148 -0
  84. package/dist/mutation/project.js.map +1 -0
  85. package/dist/mutation/resource.js +22 -22
  86. package/dist/mutation/resource.js.map +1 -1
  87. package/dist/mutation/task.js +40 -40
  88. package/dist/mutation/task.js.map +1 -1
  89. package/dist/mutation/types.d.ts +46 -1
  90. package/dist/mutation/types.d.ts.map +1 -1
  91. package/dist/parser/document-parser.js +17 -17
  92. package/dist/parser/document-parser.js.map +1 -1
  93. package/dist/semantic/validator.js +41 -41
  94. package/dist/semantic/validator.js.map +1 -1
  95. package/dist/version.d.ts +1 -1
  96. package/dist/version.d.ts.map +1 -1
  97. package/dist/version.js +1 -1
  98. package/dist/version.js.map +1 -1
  99. package/package.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/mutation/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAGV,kBAAkB,EACnB,MAAM,YAAY,CAAC;AA4IpB,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,kBAAkB,GAC3B,gBAAgB,CASlB"}
@@ -0,0 +1,148 @@
1
+ import { EntityEditor } from "./entity-editor.js";
2
+ import { mutationDiagnostic } from "./diagnostics.js";
3
+ const fieldOrder = [
4
+ "version",
5
+ "title",
6
+ "description",
7
+ "as_of",
8
+ "duration_unit",
9
+ "velocity",
10
+ "finish",
11
+ "critical_epsilon",
12
+ "target_duration",
13
+ ];
14
+ const clearableFields = new Set([
15
+ "description",
16
+ "as_of",
17
+ "velocity",
18
+ "critical_epsilon",
19
+ "target_duration",
20
+ ]);
21
+ function requestError(value) {
22
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
23
+ return "project mutation request is not an object";
24
+ }
25
+ const request = value;
26
+ if (request["kind"] !== "project.set")
27
+ return "project mutation kind is unsupported";
28
+ if (Object.keys(request).some((name) => !["kind", "set", "clear"].includes(name))) {
29
+ return "project.set request contains unsupported fields";
30
+ }
31
+ const rawSet = request["set"];
32
+ const rawClear = request["clear"];
33
+ if (rawSet !== undefined &&
34
+ (rawSet === null || typeof rawSet !== "object" || Array.isArray(rawSet))) {
35
+ return "project set is not an object";
36
+ }
37
+ if (rawClear !== undefined && !Array.isArray(rawClear))
38
+ return "clear is not an array";
39
+ const set = (rawSet ?? {});
40
+ const clear = (rawClear ?? []);
41
+ const setEntries = Object.entries(set).filter(([, item]) => item !== undefined);
42
+ if (setEntries.length === 0 && clear.length === 0) {
43
+ return "project.set requires at least one change specification";
44
+ }
45
+ const setFields = new Set([
46
+ "id",
47
+ "version",
48
+ "title",
49
+ "description",
50
+ "asOf",
51
+ "durationUnit",
52
+ "velocity",
53
+ "finish",
54
+ "criticalEpsilon",
55
+ "targetDuration",
56
+ ]);
57
+ if (Object.keys(set).some((name) => !setFields.has(name))) {
58
+ return "project set contains unsupported fields";
59
+ }
60
+ for (const name of [
61
+ "id",
62
+ "title",
63
+ "description",
64
+ "asOf",
65
+ "velocity",
66
+ "finish",
67
+ "criticalEpsilon",
68
+ "targetDuration",
69
+ ]) {
70
+ if (set[name] !== undefined && typeof set[name] !== "string") {
71
+ return `${name} is not a string`;
72
+ }
73
+ }
74
+ if (set.version !== undefined && !Number.isSafeInteger(set.version)) {
75
+ return "version is not a safe integer";
76
+ }
77
+ if (set.durationUnit !== undefined &&
78
+ !new Set(["day", "hour", "point"]).has(set.durationUnit)) {
79
+ return "durationUnit must be day, hour, or point";
80
+ }
81
+ if (clear.some((name) => typeof name !== "string" || !clearableFields.has(name))) {
82
+ return "clear contains unsupported fields";
83
+ }
84
+ if (new Set(clear).size !== clear.length)
85
+ return "clear contains duplicate fields";
86
+ const conflicts = [
87
+ ["description", "description"],
88
+ ["asOf", "as_of"],
89
+ ["velocity", "velocity"],
90
+ ["criticalEpsilon", "critical_epsilon"],
91
+ ["targetDuration", "target_duration"],
92
+ ];
93
+ for (const [setName, clearName] of conflicts) {
94
+ if (set[setName] !== undefined && clear.includes(clearName)) {
95
+ return `${clearName} cannot be specified in both set and clear`;
96
+ }
97
+ }
98
+ return undefined;
99
+ }
100
+ function planSet(text, declaration, mutation) {
101
+ const error = requestError(mutation);
102
+ if (error !== undefined) {
103
+ return { edits: [], diagnostic: mutationDiagnostic("PTMUT-301", error, declaration) };
104
+ }
105
+ const editor = new EntityEditor(text, declaration, fieldOrder, mutation.clear ?? []);
106
+ const set = mutation.set ?? {};
107
+ const edits = [];
108
+ if (set.id !== undefined) {
109
+ edits.push({
110
+ startOffset: declaration.idSpan.start.offset,
111
+ endOffset: declaration.idSpan.end.offset,
112
+ replacement: set.id,
113
+ });
114
+ }
115
+ if (set.version !== undefined)
116
+ editor.setScalar("version", String(set.version));
117
+ if (set.title !== undefined)
118
+ editor.setScalar("title", JSON.stringify(set.title));
119
+ if (set.description !== undefined)
120
+ editor.setText("description", set.description);
121
+ if (set.asOf !== undefined)
122
+ editor.setScalar("as_of", set.asOf);
123
+ if (set.durationUnit !== undefined)
124
+ editor.setScalar("duration_unit", set.durationUnit);
125
+ if (set.velocity !== undefined)
126
+ editor.setScalar("velocity", set.velocity);
127
+ if (set.finish !== undefined)
128
+ editor.setScalar("finish", set.finish);
129
+ if (set.criticalEpsilon !== undefined) {
130
+ editor.setScalar("critical_epsilon", set.criticalEpsilon);
131
+ }
132
+ if (set.targetDuration !== undefined) {
133
+ editor.setScalar("target_duration", set.targetDuration);
134
+ }
135
+ edits.push(...editor.finish());
136
+ return { edits };
137
+ }
138
+ export function planProjectMutationEdits(text, document, mutation) {
139
+ const declaration = document.declarations.find(({ kind }) => kind === "project");
140
+ if (declaration === undefined) {
141
+ return {
142
+ edits: [],
143
+ diagnostic: mutationDiagnostic("PTMUT-302", "project declaration does not exist"),
144
+ };
145
+ }
146
+ return planSet(text, declaration, mutation);
147
+ }
148
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/mutation/project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAyB,MAAM,kBAAkB,CAAC;AAO7E,MAAM,UAAU,GAAG;IACjB,SAAS;IACT,OAAO;IACP,aAAa;IACb,OAAO;IACP,eAAe;IACf,UAAU;IACV,QAAQ;IACR,kBAAkB;IAClB,iBAAiB;CACT,CAAC;AAEX,MAAM,eAAe,GAAG,IAAI,GAAG,CAAwB;IACrD,aAAa;IACb,OAAO;IACP,UAAU;IACV,kBAAkB;IAClB,iBAAiB;CAClB,CAAC,CAAC;AAEH,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,2CAA2C,CAAC;IACrD,CAAC;IACD,MAAM,OAAO,GAAG,KAAgC,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,aAAa;QAAE,OAAO,sCAAsC,CAAC;IACrF,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,IACE,MAAM,KAAK,SAAS;QACpB,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EACxE,CAAC;QACD,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,uBAAuB,CAAC;IAEvF,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAoB,CAAC;IAC9C,MAAM,KAAK,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAuB,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAChF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,wDAAwD,CAAC;IAClE,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACxB,IAAI;QACJ,SAAS;QACT,OAAO;QACP,aAAa;QACb,MAAM;QACN,cAAc;QACd,UAAU;QACV,QAAQ;QACR,iBAAiB;QACjB,gBAAgB;KACjB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,yCAAyC,CAAC;IACnD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI;QACjB,IAAI;QACJ,OAAO;QACP,aAAa;QACb,MAAM;QACN,UAAU;QACV,QAAQ;QACR,iBAAiB;QACjB,gBAAgB;KACR,EAAE,CAAC;QACX,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC7D,OAAO,GAAG,IAAI,kBAAkB,CAAC;QACnC,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,OAAO,+BAA+B,CAAC;IACzC,CAAC;IACD,IACE,GAAG,CAAC,YAAY,KAAK,SAAS;QAC9B,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,EACxD,CAAC;QACD,OAAO,0CAA0C,CAAC;IACpD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAA6B,CAAC,CAAC,EAAE,CAAC;QAC1G,OAAO,mCAAmC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,iCAAiC,CAAC;IACnF,MAAM,SAAS,GAA2E;QACxF,CAAC,aAAa,EAAE,aAAa,CAAC;QAC9B,CAAC,MAAM,EAAE,OAAO,CAAC;QACjB,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;QACvC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KACtC,CAAC;IACF,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,SAAS,EAAE,CAAC;QAC7C,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5D,OAAO,GAAG,SAAS,4CAA4C,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,OAAO,CACd,IAAY,EACZ,WAA4B,EAC5B,QAA4B;IAE5B,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,kBAAkB,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC;IACxF,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC;YACT,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;YAC5C,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;YACxC,WAAW,EAAE,GAAG,CAAC,EAAE;SACpB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAChF,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAClF,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAChE,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACxF,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3E,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrE,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,QAAsB,EACtB,QAA4B;IAE5B,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACjF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,kBAAkB,CAAC,WAAW,EAAE,oCAAoC,CAAC;SAClF,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC"}
@@ -4,40 +4,40 @@ import { appendDeclarationEdit, deleteDeclarationEdit, majorLineEnding, serializ
4
4
  const fieldOrder = ["title", "description", "capacity", "tags"];
5
5
  function requestShapeError(value) {
6
6
  if (value === null || typeof value !== "object" || Array.isArray(value)) {
7
- return "resource mutation requestobjectではありません";
7
+ return "resource mutation request is not an object";
8
8
  }
9
9
  const request = value;
10
10
  const kind = request["kind"];
11
11
  if (kind !== "resource.add" && kind !== "resource.set" && kind !== "resource.remove") {
12
- return "resource mutation kindが未対応です";
12
+ return "resource mutation kind is unsupported";
13
13
  }
14
14
  if (typeof request["id"] !== "string")
15
- return "resource idstringではありません";
15
+ return "resource id is not a string";
16
16
  const fieldsByKind = {
17
17
  "resource.add": new Set(["kind", "id", "resource"]),
18
18
  "resource.set": new Set(["kind", "id", "set", "clear"]),
19
19
  "resource.remove": new Set(["kind", "id"]),
20
20
  };
21
21
  if (Object.keys(request).some((name) => !fieldsByKind[kind].has(name))) {
22
- return `${kind} requestに未対応fieldが含まれています`;
22
+ return `${kind} request contains unsupported fields`;
23
23
  }
24
24
  return undefined;
25
25
  }
26
26
  function definitionError(value) {
27
27
  if (value === null || typeof value !== "object" || Array.isArray(value)) {
28
- return "resource definitionobjectではありません";
28
+ return "resource definition is not an object";
29
29
  }
30
30
  const resource = value;
31
31
  if (Object.keys(resource).some((name) => !["title", "description", "capacity"].includes(name))) {
32
- return "resource definitionに未対応fieldが含まれています";
32
+ return "resource definition contains unsupported fields";
33
33
  }
34
34
  if (typeof resource["title"] !== "string")
35
- return "resource titlestringではありません";
35
+ return "resource title is not a string";
36
36
  if (!Number.isSafeInteger(resource["capacity"])) {
37
- return "resource capacitysafe integerではありません";
37
+ return "resource capacity is not a safe integer";
38
38
  }
39
39
  if (resource["description"] !== undefined && typeof resource["description"] !== "string") {
40
- return "resource descriptionstringではありません";
40
+ return "resource description is not a string";
41
41
  }
42
42
  return undefined;
43
43
  }
@@ -57,34 +57,34 @@ function setRequestError(mutation) {
57
57
  const rawClear = mutation.clear;
58
58
  if (rawSet !== undefined &&
59
59
  (rawSet === null || typeof rawSet !== "object" || Array.isArray(rawSet))) {
60
- return "resource setobjectではありません";
60
+ return "resource set is not an object";
61
61
  }
62
62
  if (rawClear !== undefined && !Array.isArray(rawClear))
63
- return "cleararrayではありません";
63
+ return "clear is not an array";
64
64
  const set = (rawSet ?? {});
65
65
  const clear = (rawClear ?? []);
66
66
  const setEntries = Object.entries(set).filter(([, item]) => item !== undefined);
67
67
  if (setEntries.length === 0 && clear.length === 0) {
68
- return "resource.setは少なくとも1つの変更指定を必要とします";
68
+ return "resource.set requires at least one change specification";
69
69
  }
70
70
  if (Object.keys(set).some((name) => !["title", "description", "capacity"].includes(name))) {
71
- return "resource setに未対応fieldが含まれています";
71
+ return "resource set contains unsupported fields";
72
72
  }
73
73
  if (set.title !== undefined && typeof set.title !== "string")
74
- return "titlestringではありません";
74
+ return "title is not a string";
75
75
  if (set.description !== undefined && typeof set.description !== "string") {
76
- return "descriptionstringではありません";
76
+ return "description is not a string";
77
77
  }
78
78
  if (set.capacity !== undefined && !Number.isSafeInteger(set.capacity)) {
79
- return "capacitysafe integerではありません";
79
+ return "capacity is not a safe integer";
80
80
  }
81
81
  if (!Array.isArray(clear) || clear.some((name) => name !== "description")) {
82
- return "clearに未対応fieldが含まれています";
82
+ return "clear contains unsupported fields";
83
83
  }
84
84
  if (new Set(clear).size !== clear.length)
85
- return "clear fieldが重複しています";
85
+ return "clear contains duplicate fields";
86
86
  if (set.description !== undefined && clear.includes("description")) {
87
- return "descriptionsetclearへ同時指定できません";
87
+ return "description cannot be specified in both set and clear";
88
88
  }
89
89
  return undefined;
90
90
  }
@@ -113,7 +113,7 @@ export function planResourceMutationEdits(text, document, mutation) {
113
113
  if (entity !== undefined) {
114
114
  return {
115
115
  edits: [],
116
- diagnostic: mutationDiagnostic("PTMUT-304", `entity ID ${mutation.id}はすでに使用されています`, entity),
116
+ diagnostic: mutationDiagnostic("PTMUT-304", `entity ID ${mutation.id} is already in use`, entity),
117
117
  };
118
118
  }
119
119
  const error = definitionError(mutation.resource);
@@ -128,13 +128,13 @@ export function planResourceMutationEdits(text, document, mutation) {
128
128
  if (entity === undefined) {
129
129
  return {
130
130
  edits: [],
131
- diagnostic: mutationDiagnostic("PTMUT-302", `resource ${mutation.id}が存在しません`),
131
+ diagnostic: mutationDiagnostic("PTMUT-302", `resource ${mutation.id} does not exist`),
132
132
  };
133
133
  }
134
134
  if (entity.kind !== "resource") {
135
135
  return {
136
136
  edits: [],
137
- diagnostic: mutationDiagnostic("PTMUT-303", `entity ${mutation.id}resourceではありません`, entity),
137
+ diagnostic: mutationDiagnostic("PTMUT-303", `entity ${mutation.id} is not a resource`, entity),
138
138
  };
139
139
  }
140
140
  if (mutation.kind === "resource.remove") {
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/mutation/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/mutation/resource.ts"],"names":[],"mappings":"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"}
@@ -47,7 +47,7 @@ function validStringArray(value) {
47
47
  }
48
48
  function taskDefinitionError(value) {
49
49
  if (value === null || typeof value !== "object")
50
- return "task definitionobjectではありません";
50
+ return "task definition is not an object";
51
51
  const task = value;
52
52
  const knownFields = new Set([
53
53
  "title",
@@ -63,42 +63,42 @@ function taskDefinitionError(value) {
63
63
  "source",
64
64
  ]);
65
65
  if (Object.keys(task).some((name) => !knownFields.has(name))) {
66
- return "task definitionに未対応fieldが含まれています";
66
+ return "task definition contains unsupported fields";
67
67
  }
68
68
  if (typeof task["title"] !== "string")
69
- return "task titlestringではありません";
69
+ return "task title is not a string";
70
70
  if ((task["duration"] === undefined) === (task["estimate"] === undefined)) {
71
- return "durationまたはestimateのexactly oneを必要とします";
71
+ return "exactly one of duration or estimate is required";
72
72
  }
73
73
  if (task["duration"] !== undefined && typeof task["duration"] !== "string") {
74
- return "durationstringではありません";
74
+ return "duration is not a string";
75
75
  }
76
76
  if (task["estimate"] !== undefined && !validEstimate(task["estimate"])) {
77
- return "estimateoptimisticmostLikelypessimisticstringを必要とします";
77
+ return "estimate requires optimistic, mostLikely, and pessimistic string fields";
78
78
  }
79
79
  for (const name of ["description", "owner", "blockedReason", "source"]) {
80
80
  if (task[name] !== undefined && typeof task[name] !== "string") {
81
- return `${name}stringではありません`;
81
+ return `${name} is not a string`;
82
82
  }
83
83
  }
84
84
  if (task["status"] !== undefined && !taskStatuses.has(task["status"])) {
85
- return "statustask statusではありません";
85
+ return "status is not a task status";
86
86
  }
87
87
  if (task["priority"] !== undefined && !Number.isSafeInteger(task["priority"])) {
88
- return "prioritysafe integerではありません";
88
+ return "priority is not a safe integer";
89
89
  }
90
90
  if (task["tags"] !== undefined && !validStringArray(task["tags"])) {
91
- return "tagsstring arrayではありません";
91
+ return "tags are not a string array";
92
92
  }
93
93
  if (task["requirements"] !== undefined &&
94
94
  (!Array.isArray(task["requirements"]) || !task["requirements"].every(validRequirement))) {
95
- return "requirementsresourceIdsafe integer unitsのarrayではありません";
95
+ return "requirements must be an array of entries with resourceId and safe integer units";
96
96
  }
97
97
  return undefined;
98
98
  }
99
99
  function taskMutationRequestError(value) {
100
100
  if (value === null || typeof value !== "object" || Array.isArray(value)) {
101
- return "mutation requestobjectではありません";
101
+ return "mutation request is not an object";
102
102
  }
103
103
  const request = value;
104
104
  const kind = request["kind"];
@@ -106,10 +106,10 @@ function taskMutationRequestError(value) {
106
106
  kind !== "task.set" &&
107
107
  kind !== "task.remove" &&
108
108
  kind !== "task.finish") {
109
- return "mutation kindが未対応です";
109
+ return "mutation kind is unsupported";
110
110
  }
111
111
  if (typeof request["id"] !== "string")
112
- return "mutation idstringではありません";
112
+ return "mutation id is not a string";
113
113
  const fieldsByKind = {
114
114
  "task.add": new Set(["kind", "id", "from", "to", "task"]),
115
115
  "task.set": new Set([
@@ -128,7 +128,7 @@ function taskMutationRequestError(value) {
128
128
  "task.finish": new Set(["kind", "id"]),
129
129
  };
130
130
  if (Object.keys(request).some((name) => !fieldsByKind[kind].has(name))) {
131
- return `${kind} requestに未対応fieldが含まれています`;
131
+ return `${kind} request contains unsupported fields`;
132
132
  }
133
133
  return undefined;
134
134
  }
@@ -224,7 +224,7 @@ function addTaskPlan(text, mutation) {
224
224
  taskError !== undefined) {
225
225
  return {
226
226
  edits: [],
227
- diagnostic: mutationDiagnostic("PTMUT-301", `task.add requestが不正です${taskError === undefined ? "" : `: ${taskError}`}`),
227
+ diagnostic: mutationDiagnostic("PTMUT-301", `task.add request is invalid${taskError === undefined ? "" : `: ${taskError}`}`),
228
228
  };
229
229
  }
230
230
  const lineEnding = majorLineEnding(text);
@@ -241,7 +241,7 @@ function setRequestError(mutation) {
241
241
  const rawRemoveRequirements = mutation.removeRequirements;
242
242
  if (rawSet !== undefined &&
243
243
  (rawSet === null || typeof rawSet !== "object" || Array.isArray(rawSet))) {
244
- return "setobjectではありません";
244
+ return "set is not an object";
245
245
  }
246
246
  for (const [name, value] of [
247
247
  ["clear", rawClear],
@@ -251,7 +251,7 @@ function setRequestError(mutation) {
251
251
  ["removeRequirements", rawRemoveRequirements],
252
252
  ]) {
253
253
  if (value !== undefined && !Array.isArray(value))
254
- return `${name}arrayではありません`;
254
+ return `${name} is not an array`;
255
255
  }
256
256
  const set = (rawSet ?? {});
257
257
  const setEntries = Object.entries(set).filter(([, value]) => value !== undefined);
@@ -268,16 +268,16 @@ function setRequestError(mutation) {
268
268
  removeTags.length === 0 &&
269
269
  upsertRequirements.length === 0 &&
270
270
  removeRequirements.length === 0) {
271
- return "task.setは少なくとも1つの変更指定を必要とします";
271
+ return "task.set requires at least one change specification";
272
272
  }
273
273
  if (set.duration !== undefined && set.estimate !== undefined) {
274
- return "durationestimateは同時にsetできません";
274
+ return "duration and estimate cannot both be specified in set";
275
275
  }
276
276
  if (mutation.from !== undefined && typeof mutation.from !== "string") {
277
- return "fromstringではありません";
277
+ return "from is not a string";
278
278
  }
279
279
  if (mutation.to !== undefined && typeof mutation.to !== "string") {
280
- return "tostringではありません";
280
+ return "to is not a string";
281
281
  }
282
282
  const knownSetFields = new Set([
283
283
  "title",
@@ -291,35 +291,35 @@ function setRequestError(mutation) {
291
291
  "source",
292
292
  ]);
293
293
  if (Object.keys(set).some((name) => !knownSetFields.has(name))) {
294
- return "setに未対応fieldが含まれています";
294
+ return "set contains unsupported fields";
295
295
  }
296
296
  for (const name of ["title", "description", "duration", "owner", "blockedReason", "source"]) {
297
297
  if (set[name] !== undefined && typeof set[name] !== "string") {
298
- return `${name}stringではありません`;
298
+ return `${name} is not a string`;
299
299
  }
300
300
  }
301
301
  if (set.estimate !== undefined && !validEstimate(set.estimate)) {
302
- return "estimateoptimisticmostLikelypessimisticstringを必要とします";
302
+ return "estimate requires optimistic, mostLikely, and pessimistic string fields";
303
303
  }
304
304
  if (set.status !== undefined && !taskStatuses.has(set.status)) {
305
- return "statustask statusではありません";
305
+ return "status is not a task status";
306
306
  }
307
307
  if (set.priority !== undefined && !Number.isSafeInteger(set.priority)) {
308
- return "prioritysafe integerではありません";
308
+ return "priority is not a safe integer";
309
309
  }
310
310
  if (!Array.isArray(clear) || clear.some((name) => !clearableFields.has(name))) {
311
- return "clearに未対応fieldが含まれています";
311
+ return "clear contains unsupported fields";
312
312
  }
313
313
  if (!validStringArray(addTags) || !validStringArray(removeTags)) {
314
- return "addTagsremoveTagsstring arrayである必要があります";
314
+ return "addTags and removeTags must be string arrays";
315
315
  }
316
316
  if (!Array.isArray(upsertRequirements) ||
317
317
  !upsertRequirements.every(validRequirement) ||
318
318
  !validStringArray(removeRequirements)) {
319
- return "requirement変更指定が不正です";
319
+ return "requirement change specification is invalid";
320
320
  }
321
321
  if (new Set(clear).size !== clear.length)
322
- return "clear fieldが重複しています";
322
+ return "clear contains duplicate fields";
323
323
  const clearNames = new Set(clear);
324
324
  const setToClear = {
325
325
  title: "title",
@@ -334,27 +334,27 @@ function setRequestError(mutation) {
334
334
  };
335
335
  for (const [name] of setEntries) {
336
336
  if (clearNames.has(setToClear[name])) {
337
- return `${setToClear[name]}setclearへ同時指定できません`;
337
+ return `${setToClear[name]} cannot be specified in both set and clear`;
338
338
  }
339
339
  }
340
340
  if (clearNames.has("tags") && (addTags.length > 0 || removeTags.length > 0)) {
341
- return "clear tagsadd/remove tagは併用できません";
341
+ return "clear tags cannot be combined with add/remove tags";
342
342
  }
343
343
  if (clearNames.has("requires") &&
344
344
  (upsertRequirements.length > 0 || removeRequirements.length > 0)) {
345
- return "clear requiresupsert/remove requirementは併用できません";
345
+ return "clear requires cannot be combined with upsert/remove requirements";
346
346
  }
347
347
  const removedTags = new Set(removeTags);
348
348
  if (addTags.some((tag) => removedTags.has(tag))) {
349
- return "同じtagaddremoveへ同時指定できません";
349
+ return "the same tag cannot be specified in both add and remove";
350
350
  }
351
351
  const removedResources = new Set(removeRequirements);
352
352
  if (upsertRequirements.some(({ resourceId }) => removedResources.has(resourceId))) {
353
- return "同じresourceupsertremoveへ同時指定できません";
353
+ return "the same resource cannot be specified in both upsert and remove";
354
354
  }
355
355
  const upsertIds = upsertRequirements.map(({ resourceId }) => resourceId);
356
356
  if (new Set(upsertIds).size !== upsertIds.length) {
357
- return "upsert requirementのresourceが重複しています";
357
+ return "upsert requirements contain duplicate resources";
358
358
  }
359
359
  return undefined;
360
360
  }
@@ -608,7 +608,7 @@ export function planTaskMutationEdits(text, document, mutation) {
608
608
  if (entity !== undefined) {
609
609
  return {
610
610
  edits: [],
611
- diagnostic: mutationDiagnostic("PTMUT-304", `entity ID ${mutation.id}はすでに使用されています`, entity),
611
+ diagnostic: mutationDiagnostic("PTMUT-304", `entity ID ${mutation.id} is already in use`, entity),
612
612
  };
613
613
  }
614
614
  return addTaskPlan(text, mutation);
@@ -616,13 +616,13 @@ export function planTaskMutationEdits(text, document, mutation) {
616
616
  if (entity === undefined) {
617
617
  return {
618
618
  edits: [],
619
- diagnostic: mutationDiagnostic("PTMUT-302", `task ${mutation.id}が存在しません`),
619
+ diagnostic: mutationDiagnostic("PTMUT-302", `task ${mutation.id} does not exist`),
620
620
  };
621
621
  }
622
622
  if (entity.kind !== "task") {
623
623
  return {
624
624
  edits: [],
625
- diagnostic: mutationDiagnostic("PTMUT-303", `entity ${mutation.id}taskではありません`, entity),
625
+ diagnostic: mutationDiagnostic("PTMUT-303", `entity ${mutation.id} is not a task`, entity),
626
626
  };
627
627
  }
628
628
  const lines = splitPhysicalLines(text);