perttool 0.5.0 → 0.5.2

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 (41) hide show
  1. package/CHANGELOG.md +39 -1
  2. package/README.md +66 -28
  3. package/dist/cli.js +41 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/command/actuals-discovery.d.ts.map +1 -1
  6. package/dist/command/actuals-discovery.js +92 -13
  7. package/dist/command/actuals-discovery.js.map +1 -1
  8. package/dist/history/git-probe.d.ts +4 -0
  9. package/dist/history/git-probe.d.ts.map +1 -1
  10. package/dist/history/git-probe.js +23 -14
  11. package/dist/history/git-probe.js.map +1 -1
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/schema/registry.d.ts +53 -0
  17. package/dist/schema/registry.d.ts.map +1 -0
  18. package/dist/schema/registry.js +346 -0
  19. package/dist/schema/registry.js.map +1 -0
  20. package/dist/version.d.ts +1 -1
  21. package/dist/version.js +1 -1
  22. package/package.json +5 -2
  23. package/schemas/Perttool.AgentGuidanceResult.v1.schema.json +607 -0
  24. package/schemas/Perttool.AnalysisResult.v4.schema.json +790 -0
  25. package/schemas/Perttool.CheckResult.v3.schema.json +203 -0
  26. package/schemas/Perttool.CliError.v1.schema.json +119 -0
  27. package/schemas/Perttool.CommandHelpResult.v1.schema.json +377 -0
  28. package/schemas/Perttool.Common.v1.schema.json +1893 -0
  29. package/schemas/Perttool.ExportResult.v1.schema.json +96 -0
  30. package/schemas/Perttool.FormatResult.v1.schema.json +82 -0
  31. package/schemas/Perttool.GuideResult.v1.schema.json +138 -0
  32. package/schemas/Perttool.ImportResult.v1.schema.json +111 -0
  33. package/schemas/Perttool.InitResult.v1.schema.json +70 -0
  34. package/schemas/Perttool.MutationResult.v3.schema.json +194 -0
  35. package/schemas/Perttool.NextResult.v5.schema.json +1264 -0
  36. package/schemas/Perttool.OverrideDecision.v1.schema.json +402 -0
  37. package/schemas/Perttool.ProjectHistoryResult.v1.schema.json +283 -0
  38. package/schemas/Perttool.ProjectResult.v3.schema.json +217 -0
  39. package/schemas/Perttool.SchemaResult.v1.schema.json +137 -0
  40. package/schemas/Perttool.UnitMigrationResult.v3.schema.json +343 -0
  41. package/schemas/Perttool.VelocityObservationResult.v1.schema.json +301 -0
@@ -0,0 +1,402 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/mako10k/perttool/schemas/Perttool.OverrideDecision.v1.schema.json",
4
+ "title": "Perttool.OverrideDecision.v1",
5
+ "$defs": {
6
+ "triggerCode": {
7
+ "enum": [
8
+ "allowed_replaces_recommended",
9
+ "deferred_selected",
10
+ "discouraged_selected"
11
+ ]
12
+ },
13
+ "triggerCodes": {
14
+ "type": "array",
15
+ "items": {
16
+ "$ref": "#/$defs/triggerCode"
17
+ }
18
+ },
19
+ "reason": {
20
+ "type": "object",
21
+ "required": [
22
+ "code",
23
+ "text",
24
+ "evidence_references"
25
+ ],
26
+ "properties": {
27
+ "code": {
28
+ "enum": [
29
+ "human_priority_decision",
30
+ "external_commitment",
31
+ "incident_response",
32
+ "plan_correction_pending",
33
+ "resource_reallocation_pending",
34
+ "risk_acceptance",
35
+ "experiment",
36
+ "other_explicit_reason"
37
+ ]
38
+ },
39
+ "text": {
40
+ "type": "string"
41
+ },
42
+ "evidence_references": {
43
+ "type": "array",
44
+ "items": {
45
+ "type": "object",
46
+ "required": [
47
+ "kind",
48
+ "value"
49
+ ],
50
+ "properties": {
51
+ "kind": {
52
+ "enum": [
53
+ "issue",
54
+ "commit",
55
+ "document",
56
+ "url",
57
+ "other"
58
+ ]
59
+ },
60
+ "value": {
61
+ "type": "string"
62
+ }
63
+ },
64
+ "additionalProperties": false
65
+ }
66
+ }
67
+ },
68
+ "additionalProperties": false
69
+ },
70
+ "selection": {
71
+ "type": "object",
72
+ "required": [
73
+ "selected_task_ids",
74
+ "retained_recommended_task_ids",
75
+ "displaced_recommended_task_ids",
76
+ "selected_nonrecommended_task_ids",
77
+ "trigger_codes"
78
+ ],
79
+ "properties": {
80
+ "selected_task_ids": {
81
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
82
+ },
83
+ "retained_recommended_task_ids": {
84
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
85
+ },
86
+ "displaced_recommended_task_ids": {
87
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
88
+ },
89
+ "selected_nonrecommended_task_ids": {
90
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
91
+ },
92
+ "trigger_codes": {
93
+ "$ref": "#/$defs/triggerCodes"
94
+ }
95
+ },
96
+ "additionalProperties": false
97
+ },
98
+ "taskDecision": {
99
+ "type": "object",
100
+ "required": [
101
+ "task_id",
102
+ "normal_decision_id",
103
+ "normal_tier",
104
+ "normal_decisive_step_id",
105
+ "normal_reason_occurrence_ids",
106
+ "normal_comparison_ids",
107
+ "override_selected",
108
+ "trigger_codes",
109
+ "acknowledged_negative_fact_reason_ids"
110
+ ],
111
+ "properties": {
112
+ "task_id": {
113
+ "type": "string"
114
+ },
115
+ "normal_decision_id": {
116
+ "type": "string"
117
+ },
118
+ "normal_tier": {
119
+ "enum": [
120
+ "recommended",
121
+ "allowed",
122
+ "deferred",
123
+ "discouraged"
124
+ ]
125
+ },
126
+ "normal_decisive_step_id": {
127
+ "type": "string"
128
+ },
129
+ "normal_reason_occurrence_ids": {
130
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
131
+ },
132
+ "normal_comparison_ids": {
133
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
134
+ },
135
+ "override_selected": {
136
+ "const": true
137
+ },
138
+ "trigger_codes": {
139
+ "$ref": "#/$defs/triggerCodes"
140
+ },
141
+ "acknowledged_negative_fact_reason_ids": {
142
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
143
+ }
144
+ },
145
+ "additionalProperties": false
146
+ },
147
+ "feasibility": {
148
+ "type": "object",
149
+ "required": [
150
+ "selected_set_reference",
151
+ "start_feasible",
152
+ "active_task_ids",
153
+ "resource_witnesses",
154
+ "expression"
155
+ ],
156
+ "properties": {
157
+ "selected_set_reference": {
158
+ "type": "object",
159
+ "required": [
160
+ "kind",
161
+ "id"
162
+ ],
163
+ "properties": {
164
+ "kind": {
165
+ "const": "derived_set"
166
+ },
167
+ "id": {
168
+ "const": "O"
169
+ }
170
+ },
171
+ "additionalProperties": false
172
+ },
173
+ "start_feasible": {
174
+ "const": true
175
+ },
176
+ "active_task_ids": {
177
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
178
+ },
179
+ "resource_witnesses": {
180
+ "type": "array",
181
+ "items": {
182
+ "type": "object",
183
+ "required": [
184
+ "resource_id",
185
+ "capacity",
186
+ "active_usage",
187
+ "selected_usage",
188
+ "used",
189
+ "available_after_selection",
190
+ "selected_task_ids"
191
+ ],
192
+ "properties": {
193
+ "resource_id": {
194
+ "type": "string"
195
+ },
196
+ "capacity": {
197
+ "type": "integer",
198
+ "minimum": 1
199
+ },
200
+ "active_usage": {
201
+ "type": "integer",
202
+ "minimum": 0
203
+ },
204
+ "selected_usage": {
205
+ "type": "integer",
206
+ "minimum": 0
207
+ },
208
+ "used": {
209
+ "type": "integer",
210
+ "minimum": 0
211
+ },
212
+ "available_after_selection": {
213
+ "type": "integer",
214
+ "minimum": 0
215
+ },
216
+ "selected_task_ids": {
217
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
218
+ }
219
+ },
220
+ "additionalProperties": false
221
+ }
222
+ },
223
+ "expression": {
224
+ "oneOf": [
225
+ {
226
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/recommendationExpression"
227
+ },
228
+ {
229
+ "type": "null"
230
+ }
231
+ ]
232
+ }
233
+ },
234
+ "additionalProperties": false
235
+ }
236
+ },
237
+ "type": "object",
238
+ "required": [
239
+ "schema_version",
240
+ "tool_version",
241
+ "operation",
242
+ "ok",
243
+ "diagnostics",
244
+ "diagnostics_truncated",
245
+ "override"
246
+ ],
247
+ "properties": {
248
+ "schema_version": {
249
+ "const": "Perttool.OverrideDecision.v1"
250
+ },
251
+ "tool_version": {
252
+ "type": "string"
253
+ },
254
+ "operation": {
255
+ "const": "recommendation.override.validate"
256
+ },
257
+ "ok": {
258
+ "type": "boolean"
259
+ },
260
+ "diagnostics": {
261
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/diagnostics"
262
+ },
263
+ "diagnostics_truncated": {
264
+ "const": false
265
+ },
266
+ "override": {
267
+ "oneOf": [
268
+ {
269
+ "type": "object",
270
+ "required": [
271
+ "override_contract_version",
272
+ "override_id",
273
+ "source",
274
+ "actor",
275
+ "decided_at",
276
+ "reason",
277
+ "selection",
278
+ "task_decisions",
279
+ "feasibility",
280
+ "single_use"
281
+ ],
282
+ "properties": {
283
+ "override_contract_version": {
284
+ "const": 1
285
+ },
286
+ "override_id": {
287
+ "type": "string",
288
+ "pattern": "^override:sha256:[0-9a-f]{64}$"
289
+ },
290
+ "source": {
291
+ "type": "object",
292
+ "required": [
293
+ "schema_version",
294
+ "tool_version",
295
+ "source_digest",
296
+ "recommendation_interface_version",
297
+ "ranking_algorithm_id",
298
+ "ranking_algorithm_version",
299
+ "reason_taxonomy_version",
300
+ "explanation_model_version",
301
+ "expression_version",
302
+ "description_registry_version",
303
+ "result_decision_id",
304
+ "recommended_task_ids",
305
+ "capacity_overrides"
306
+ ],
307
+ "properties": {
308
+ "schema_version": {
309
+ "const": "Perttool.NextResult.v5"
310
+ },
311
+ "tool_version": {
312
+ "type": "string"
313
+ },
314
+ "source_digest": {
315
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/digest"
316
+ },
317
+ "recommendation_interface_version": {
318
+ "const": 1
319
+ },
320
+ "ranking_algorithm_id": {
321
+ "const": "perttool.recommendation-ranking.lexicographic-frontier"
322
+ },
323
+ "ranking_algorithm_version": {
324
+ "const": 1
325
+ },
326
+ "reason_taxonomy_version": {
327
+ "const": "1.0"
328
+ },
329
+ "explanation_model_version": {
330
+ "const": 1
331
+ },
332
+ "expression_version": {
333
+ "const": 1
334
+ },
335
+ "description_registry_version": {
336
+ "const": 1
337
+ },
338
+ "result_decision_id": {
339
+ "type": "string"
340
+ },
341
+ "recommended_task_ids": {
342
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
343
+ },
344
+ "capacity_overrides": {
345
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/capacityOverrides"
346
+ }
347
+ },
348
+ "additionalProperties": false
349
+ },
350
+ "actor": {
351
+ "type": "object",
352
+ "required": [
353
+ "kind",
354
+ "id",
355
+ "authentication"
356
+ ],
357
+ "properties": {
358
+ "kind": {
359
+ "const": "human"
360
+ },
361
+ "id": {
362
+ "type": "string"
363
+ },
364
+ "authentication": {
365
+ "const": "caller_asserted"
366
+ }
367
+ },
368
+ "additionalProperties": false
369
+ },
370
+ "decided_at": {
371
+ "type": "string",
372
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
373
+ },
374
+ "reason": {
375
+ "$ref": "#/$defs/reason"
376
+ },
377
+ "selection": {
378
+ "$ref": "#/$defs/selection"
379
+ },
380
+ "task_decisions": {
381
+ "type": "array",
382
+ "items": {
383
+ "$ref": "#/$defs/taskDecision"
384
+ }
385
+ },
386
+ "feasibility": {
387
+ "$ref": "#/$defs/feasibility"
388
+ },
389
+ "single_use": {
390
+ "const": true
391
+ }
392
+ },
393
+ "additionalProperties": false
394
+ },
395
+ {
396
+ "type": "null"
397
+ }
398
+ ]
399
+ }
400
+ },
401
+ "additionalProperties": false
402
+ }
@@ -0,0 +1,283 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/mako10k/perttool/schemas/Perttool.ProjectHistoryResult.v1.schema.json",
4
+ "title": "Perttool.ProjectHistoryResult.v1",
5
+ "$defs": {
6
+ "eventHistory": {
7
+ "type": "object",
8
+ "required": [
9
+ "event",
10
+ "evidence_class",
11
+ "first_seen_commit_id",
12
+ "last_seen_commit_id",
13
+ "removal_commit_id",
14
+ "payload_digest"
15
+ ],
16
+ "properties": {
17
+ "event": {
18
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/workEvent"
19
+ },
20
+ "evidence_class": {
21
+ "const": "declared_actual"
22
+ },
23
+ "first_seen_commit_id": {
24
+ "type": "string"
25
+ },
26
+ "last_seen_commit_id": {
27
+ "type": "string"
28
+ },
29
+ "removal_commit_id": {
30
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableString"
31
+ },
32
+ "payload_digest": {
33
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/digest"
34
+ }
35
+ },
36
+ "additionalProperties": false
37
+ },
38
+ "gitRecordedTransition": {
39
+ "type": "object",
40
+ "required": [
41
+ "task_id",
42
+ "from_state",
43
+ "to_state",
44
+ "commit_id",
45
+ "recorded_at",
46
+ "source_digest",
47
+ "evidence_class"
48
+ ],
49
+ "properties": {
50
+ "task_id": {
51
+ "type": "string"
52
+ },
53
+ "from_state": {
54
+ "$ref": "#/$defs/recordedTaskState"
55
+ },
56
+ "to_state": {
57
+ "$ref": "#/$defs/recordedTaskState"
58
+ },
59
+ "commit_id": {
60
+ "type": "string"
61
+ },
62
+ "recorded_at": {
63
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableCalendarValue"
64
+ },
65
+ "source_digest": {
66
+ "type": "string"
67
+ },
68
+ "evidence_class": {
69
+ "const": "git_recorded_transition"
70
+ }
71
+ },
72
+ "additionalProperties": false
73
+ },
74
+ "recordedTaskState": {
75
+ "enum": [
76
+ "absent",
77
+ "planned",
78
+ "active",
79
+ "blocked",
80
+ "suspended",
81
+ "done"
82
+ ]
83
+ },
84
+ "suspensionInterval": {
85
+ "type": "object",
86
+ "required": [
87
+ "suspend_event_id",
88
+ "resume_event_id",
89
+ "start",
90
+ "finish",
91
+ "duration"
92
+ ],
93
+ "properties": {
94
+ "suspend_event_id": {
95
+ "type": "string"
96
+ },
97
+ "resume_event_id": {
98
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableString"
99
+ },
100
+ "start": {
101
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/calendarValue"
102
+ },
103
+ "finish": {
104
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableCalendarValue"
105
+ },
106
+ "duration": {
107
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableQuantity"
108
+ }
109
+ },
110
+ "additionalProperties": false
111
+ },
112
+ "task": {
113
+ "type": "object",
114
+ "required": [
115
+ "task_id",
116
+ "coverage",
117
+ "event_ids",
118
+ "first_start",
119
+ "last_finish",
120
+ "suspension_intervals",
121
+ "cycle_time",
122
+ "derived_active_time",
123
+ "explicit_active_time",
124
+ "effort",
125
+ "planned_value",
126
+ "baseline_source",
127
+ "baseline_event_id",
128
+ "baseline_commit_id",
129
+ "qualifiers",
130
+ "unavailable_causes"
131
+ ],
132
+ "properties": {
133
+ "task_id": {
134
+ "type": "string"
135
+ },
136
+ "coverage": {
137
+ "enum": [
138
+ "open",
139
+ "finish_only",
140
+ "complete",
141
+ "unrecorded",
142
+ "unavailable"
143
+ ]
144
+ },
145
+ "event_ids": {
146
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
147
+ },
148
+ "first_start": {
149
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableCalendarValue"
150
+ },
151
+ "last_finish": {
152
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableCalendarValue"
153
+ },
154
+ "suspension_intervals": {
155
+ "type": "array",
156
+ "items": {
157
+ "$ref": "#/$defs/suspensionInterval"
158
+ }
159
+ },
160
+ "cycle_time": {
161
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableQuantity"
162
+ },
163
+ "derived_active_time": {
164
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableQuantity"
165
+ },
166
+ "explicit_active_time": {
167
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableQuantity"
168
+ },
169
+ "effort": {
170
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableQuantity"
171
+ },
172
+ "planned_value": {
173
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableQuantity"
174
+ },
175
+ "baseline_source": {
176
+ "type": [
177
+ "string",
178
+ "null"
179
+ ],
180
+ "enum": [
181
+ "start_baseline",
182
+ "finish_snapshot",
183
+ null
184
+ ]
185
+ },
186
+ "baseline_event_id": {
187
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableString"
188
+ },
189
+ "baseline_commit_id": {
190
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableString"
191
+ },
192
+ "qualifiers": {
193
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
194
+ },
195
+ "unavailable_causes": {
196
+ "type": "array",
197
+ "items": {
198
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/actualsCause"
199
+ }
200
+ }
201
+ },
202
+ "additionalProperties": false
203
+ }
204
+ },
205
+ "type": "object",
206
+ "required": [
207
+ "schema_version",
208
+ "cli_contract_version",
209
+ "tool_version",
210
+ "operation",
211
+ "ok",
212
+ "document_id",
213
+ "source",
214
+ "source_digest",
215
+ "diagnostics",
216
+ "diagnostics_truncated",
217
+ "grammar_version",
218
+ "history",
219
+ "events",
220
+ "git_recorded_transitions",
221
+ "tasks"
222
+ ],
223
+ "properties": {
224
+ "schema_version": {
225
+ "const": "Perttool.ProjectHistoryResult.v1"
226
+ },
227
+ "cli_contract_version": {
228
+ "const": 6
229
+ },
230
+ "tool_version": {
231
+ "type": "string"
232
+ },
233
+ "operation": {
234
+ "const": "project.history"
235
+ },
236
+ "ok": {
237
+ "type": "boolean"
238
+ },
239
+ "document_id": {
240
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableString"
241
+ },
242
+ "source": {
243
+ "type": "string"
244
+ },
245
+ "source_digest": {
246
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableDigest"
247
+ },
248
+ "diagnostics": {
249
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/diagnostics"
250
+ },
251
+ "diagnostics_truncated": {
252
+ "type": "boolean"
253
+ },
254
+ "grammar_version": {
255
+ "type": [
256
+ "integer",
257
+ "null"
258
+ ]
259
+ },
260
+ "history": {
261
+ "$ref": "Perttool.Common.v1.schema.json#/$defs/historyMetadata"
262
+ },
263
+ "events": {
264
+ "type": "array",
265
+ "items": {
266
+ "$ref": "#/$defs/eventHistory"
267
+ }
268
+ },
269
+ "git_recorded_transitions": {
270
+ "type": "array",
271
+ "items": {
272
+ "$ref": "#/$defs/gitRecordedTransition"
273
+ }
274
+ },
275
+ "tasks": {
276
+ "type": "array",
277
+ "items": {
278
+ "$ref": "#/$defs/task"
279
+ }
280
+ }
281
+ },
282
+ "additionalProperties": false
283
+ }