@bluewombat/manager-fake 0.8.0 → 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/README.md +11 -5
- package/SPECS.md +17 -7
- package/dist/adapter/normalize/normalize.d.ts.map +1 -1
- package/dist/adapter/normalize/normalize.js +50 -2
- package/dist/adapter/normalize/normalize.js.map +1 -1
- package/dist/adapter/run/run-adapter.d.ts +1 -1
- package/dist/adapter/run/run-adapter.js +1 -1
- package/dist/adapter/types.d.ts +8 -2
- package/dist/adapter/types.d.ts.map +1 -1
- package/dist/adapter/types.js +1 -1
- package/dist/adapter/types.js.map +1 -1
- package/dist/emitter/event/field-matrix.d.ts +1 -1
- package/dist/emitter/event/field-matrix.d.ts.map +1 -1
- package/dist/emitter/event/field-matrix.js +5 -9
- package/dist/emitter/event/field-matrix.js.map +1 -1
- package/dist/emitter/render/render-event.js +4 -4
- package/dist/emitter/render/render-event.js.map +1 -1
- package/dist/emitter/run/run-emitter.d.ts +1 -1
- package/dist/emitter/run/run-emitter.js +1 -1
- package/dist/emitter/thread/slug.d.ts +2 -2
- package/dist/emitter/thread/slug.js +2 -2
- package/dist/emitter/types.d.ts +4 -6
- package/dist/emitter/types.d.ts.map +1 -1
- package/dist/emitter/types.js +1 -1
- package/dist/emitter/types.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/listener/run/run-listener.d.ts +1 -1
- package/dist/listener/run/run-listener.js +1 -1
- package/dist/listener/types.d.ts +1 -1
- package/dist/listener/types.d.ts.map +1 -1
- package/dist/listener/types.js +1 -1
- package/dist/listener/types.js.map +1 -1
- package/dist/manager.d.ts +7 -2
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +34 -18
- package/dist/manager.js.map +1 -1
- package/dist/process-tree.d.ts +1 -1
- package/dist/process-tree.js +1 -1
- package/dist/tickets/list-tickets.d.ts +13 -0
- package/dist/tickets/list-tickets.d.ts.map +1 -0
- package/dist/tickets/list-tickets.js +107 -0
- package/dist/tickets/list-tickets.js.map +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Manager: fake
|
|
2
2
|
|
|
3
|
-
The
|
|
4
|
-
the Source, a directory of `.ndjson` Threads is the report.
|
|
3
|
+
The FeatureTracker and TicketTracker that need no account: a directory of JSON
|
|
4
|
+
files (each a Feature, with a `tickets` array) is the Source, a directory of `.ndjson` Threads is the report.
|
|
5
5
|
Contract: [SPECS.md](./SPECS.md).
|
|
6
6
|
|
|
7
7
|
```bash
|
|
@@ -11,8 +11,14 @@ npx mason init --manager @bluewombat/manager-fake
|
|
|
11
11
|
|
|
12
12
|
```json
|
|
13
13
|
{
|
|
14
|
-
"
|
|
15
|
-
|
|
14
|
+
"featureTracker": {
|
|
15
|
+
"package": "@bluewombat/manager-fake",
|
|
16
|
+
"options": { "source": "./.mason/source", "target": "./.mason/threads" }
|
|
17
|
+
},
|
|
18
|
+
"ticketTracker": {
|
|
19
|
+
"package": "@bluewombat/manager-fake",
|
|
20
|
+
"options": { "source": "./.mason/source", "target": "./.mason/threads" }
|
|
21
|
+
}
|
|
16
22
|
}
|
|
17
23
|
```
|
|
18
24
|
|
|
@@ -54,5 +60,5 @@ SPECS.md the contract
|
|
|
54
60
|
README.md how to build and configure it
|
|
55
61
|
src/
|
|
56
62
|
index.ts createManager, checkManager, scaffoldManager — the plugin face
|
|
57
|
-
manager.ts the
|
|
63
|
+
manager.ts the Manager (listen / adapt / report live in listener/, adapter/, emitter/; tickets/ lists a Feature's Tickets)
|
|
58
64
|
```
|
package/SPECS.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Manager: fake
|
|
2
2
|
|
|
3
3
|
A plugin, not a Transformer. Directory Source in, directory Thread out, as
|
|
4
|
-
one `
|
|
4
|
+
one `Manager` (`features` and `tickets`; no Authority). Listen / adapt / report live in this package.
|
|
5
5
|
|
|
6
6
|
## 1. Job
|
|
7
7
|
|
|
@@ -11,10 +11,10 @@ one `ManagerPort`. Listen / adapt / report live in this package.
|
|
|
11
11
|
managerOptions read source / target
|
|
12
12
|
a Cursor drain the directory
|
|
13
13
|
one semantic Event append to the Thread
|
|
14
|
-
←
|
|
14
|
+
← Manager
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
**In:** a `ManagerContext`. **Out:** a `
|
|
17
|
+
**In:** a `ManagerContext`. **Out:** a `Manager`, or a reason.
|
|
18
18
|
|
|
19
19
|
## 2. Options
|
|
20
20
|
|
|
@@ -34,11 +34,21 @@ An unknown option key is refused by name.
|
|
|
34
34
|
`fake:<id>` from the raw intention's `id`, or `fake:unconvertible` when it has
|
|
35
35
|
none. The project is the payload's `project`, or `unknown`.
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## 3b. Features and Tickets
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
Each JSON file is a Feature. It may carry `blocked_by` (ids of other Features,
|
|
40
|
+
read as `fake:<id>`), `merge_when_ready` and `skip_e2e`. Its Tickets are the `tickets`
|
|
41
|
+
array of the newest file that carries its `id`: each has `id`, `intention` (or
|
|
42
|
+
`title`), and optionally `blocked_by` (ticket ids), `priority`, `task_ready`
|
|
43
|
+
(default `true`), `resume`, `no_tests`, `e2e` (it holds the e2e acceptance suite), `open`. A ticket with neither `intention` nor
|
|
44
|
+
`title` is dropped. With no Authority, no line exists and a Ticket is folded
|
|
45
|
+
into WorkLineStable directly.
|
|
46
|
+
|
|
47
|
+
## 4. Resume
|
|
48
|
+
|
|
49
|
+
This manager has no resume signal: a directory Source delivers a `resume` file as
|
|
50
|
+
its own intention, so `signalsResume` is absent and Host uses the
|
|
51
|
+
TicketStandard's `intent`.
|
|
42
52
|
|
|
43
53
|
## 5. Doctor
|
|
44
54
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/adapter/normalize/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,aAAa,CAAC;AAGrF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/adapter/normalize/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,aAAa,CAAC;AAGrF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAuJF;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,EAAE,gBAAgB,GACxB,eAAe,CA2GjB"}
|
|
@@ -2,7 +2,7 @@ import { fingerprintOf } from "./fingerprint.js";
|
|
|
2
2
|
const KIND_TO_INTENT = {
|
|
3
3
|
create: "upsert",
|
|
4
4
|
update: "upsert",
|
|
5
|
-
|
|
5
|
+
resume: "resume",
|
|
6
6
|
cancel: "cancel",
|
|
7
7
|
delete: "cancel",
|
|
8
8
|
};
|
|
@@ -84,6 +84,39 @@ function readPriority(raw) {
|
|
|
84
84
|
}
|
|
85
85
|
return { ok: true, value: named };
|
|
86
86
|
}
|
|
87
|
+
/** A list of ids, as written; each becomes the key of a Feature of this manager. */
|
|
88
|
+
function readIdList(raw, field) {
|
|
89
|
+
const value = raw[field];
|
|
90
|
+
if (value === undefined) {
|
|
91
|
+
return { ok: true };
|
|
92
|
+
}
|
|
93
|
+
if (!Array.isArray(value)) {
|
|
94
|
+
return { ok: false, invalid: badType(field, value) };
|
|
95
|
+
}
|
|
96
|
+
const ids = [];
|
|
97
|
+
for (const entry of value) {
|
|
98
|
+
if (typeof entry === "number" && Number.isFinite(entry)) {
|
|
99
|
+
ids.push(String(entry));
|
|
100
|
+
}
|
|
101
|
+
else if (typeof entry === "string" && entry.trim().length > 0) {
|
|
102
|
+
ids.push(entry.trim());
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
return { ok: false, invalid: badType(field, entry) };
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { ok: true, value: ids };
|
|
109
|
+
}
|
|
110
|
+
function readFlag(raw, field) {
|
|
111
|
+
const value = raw[field];
|
|
112
|
+
if (value === undefined) {
|
|
113
|
+
return { ok: true };
|
|
114
|
+
}
|
|
115
|
+
if (typeof value !== "boolean") {
|
|
116
|
+
return { ok: false, invalid: badType(field, value) };
|
|
117
|
+
}
|
|
118
|
+
return { ok: true, value };
|
|
119
|
+
}
|
|
87
120
|
function readKind(raw) {
|
|
88
121
|
const value = raw.kind;
|
|
89
122
|
if (value === undefined) {
|
|
@@ -98,7 +131,7 @@ function readKind(raw) {
|
|
|
98
131
|
ok: false,
|
|
99
132
|
invalid: {
|
|
100
133
|
code: "unknown-kind",
|
|
101
|
-
reason: `Kind "${value}" is not one of create, update,
|
|
134
|
+
reason: `Kind "${value}" is not one of create, update, resume, cancel, delete.`,
|
|
102
135
|
},
|
|
103
136
|
};
|
|
104
137
|
}
|
|
@@ -137,6 +170,18 @@ export function normalize(raw, options) {
|
|
|
137
170
|
if (!revision.ok) {
|
|
138
171
|
return { ok: false, invalid: revision.invalid };
|
|
139
172
|
}
|
|
173
|
+
const blockedBy = readIdList(raw, "blocked_by");
|
|
174
|
+
if (!blockedBy.ok) {
|
|
175
|
+
return { ok: false, invalid: blockedBy.invalid };
|
|
176
|
+
}
|
|
177
|
+
const mergeWhenReady = readFlag(raw, "merge_when_ready");
|
|
178
|
+
if (!mergeWhenReady.ok) {
|
|
179
|
+
return { ok: false, invalid: mergeWhenReady.invalid };
|
|
180
|
+
}
|
|
181
|
+
const skipE2e = readFlag(raw, "skip_e2e");
|
|
182
|
+
if (!skipE2e.ok) {
|
|
183
|
+
return { ok: false, invalid: skipE2e.invalid };
|
|
184
|
+
}
|
|
140
185
|
const kind = readKind(raw);
|
|
141
186
|
if (!kind.ok) {
|
|
142
187
|
return { ok: false, invalid: kind.invalid };
|
|
@@ -189,6 +234,9 @@ export function normalize(raw, options) {
|
|
|
189
234
|
...(title.value !== undefined ? { title: title.value } : {}),
|
|
190
235
|
...(resolvedIntention !== undefined ? { intention: resolvedIntention } : {}),
|
|
191
236
|
priority: priority.value ?? options.defaultPriority,
|
|
237
|
+
blocked_by: (blockedBy.value ?? []).map((id) => `${options.manager}:${id}`),
|
|
238
|
+
merge_when_ready: mergeWhenReady.value ?? false,
|
|
239
|
+
skip_e2e: skipE2e.value ?? false,
|
|
192
240
|
...(Object.keys(source).length > 0 ? { source } : {}),
|
|
193
241
|
fingerprint: "",
|
|
194
242
|
normalized_at: options.normalizedAt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/adapter/normalize/normalize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjD,MAAM,cAAc,GAA2B;IAC7C,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/adapter/normalize/normalize.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export type RunOptions = {
|
|
|
19
19
|
};
|
|
20
20
|
export declare function invalidInvocationResult(write: ProgressWriter, reason: string): RunResult;
|
|
21
21
|
/**
|
|
22
|
-
* Run one
|
|
22
|
+
* Run one Adapter invocation to a run outcome.
|
|
23
23
|
*/
|
|
24
24
|
export declare function runAdapter(options: RunOptions): Promise<RunResult>;
|
|
25
25
|
//# sourceMappingURL=run-adapter.d.ts.map
|
|
@@ -39,7 +39,7 @@ function rawKindArgument(raw) {
|
|
|
39
39
|
return typeof value === "string" && value.trim().length > 0 ? value : "create";
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* Run one
|
|
42
|
+
* Run one Adapter invocation to a run outcome.
|
|
43
43
|
*/
|
|
44
44
|
export async function runAdapter(options) {
|
|
45
45
|
const { invocation, raw } = options;
|
package/dist/adapter/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/** Domain types owned by
|
|
1
|
+
/** Domain types owned by Adapter. Names match the Block perimeter only. */
|
|
2
2
|
export type RunOutcome = "converted" | "invalid" | "invalid-invocation" | "unavailable" | "interrupted";
|
|
3
|
-
export type Intent = "upsert" | "
|
|
3
|
+
export type Intent = "upsert" | "resume" | "cancel";
|
|
4
4
|
export type InvalidCode = "raw-too-large" | "raw-not-json" | "raw-not-object" | "unknown-kind" | "missing-id" | "missing-project" | "missing-intention" | "bad-field-type" | "bad-priority";
|
|
5
5
|
export type Invocation = {
|
|
6
6
|
manager: string;
|
|
@@ -30,6 +30,12 @@ export type FeatureStandard = {
|
|
|
30
30
|
title?: string;
|
|
31
31
|
intention?: string;
|
|
32
32
|
priority: number;
|
|
33
|
+
/** Keys of the Features that must be `done` before this one may open. */
|
|
34
|
+
blocked_by: string[];
|
|
35
|
+
/** Its line may be folded without a human. */
|
|
36
|
+
merge_when_ready: boolean;
|
|
37
|
+
/** It is not put through the e2e acceptance check. */
|
|
38
|
+
skip_e2e: boolean;
|
|
33
39
|
source?: {
|
|
34
40
|
ref?: string;
|
|
35
41
|
revision?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapter/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapter/types.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,SAAS,GACT,oBAAoB,GACpB,aAAa,GACb,aAAa,CAAC;AAElB,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpD,MAAM,MAAM,WAAW,GACnB,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,YAAY,GACZ,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/F,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,8CAA8C;IAC9C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GACtC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC"}
|
package/dist/adapter/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapter/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapter/types.ts"],"names":[],"mappings":"AAAA,2EAA2E"}
|
|
@@ -9,7 +9,7 @@ type Rule = {
|
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
11
|
* What each Event accepts. A field outside its row is refused, not dropped:
|
|
12
|
-
* a caller setting `reference` on `
|
|
12
|
+
* a caller setting `reference` on `accepted` has confused two Events, and a
|
|
13
13
|
* report that hides that is worse than a refusal.
|
|
14
14
|
*/
|
|
15
15
|
export declare const FIELD_MATRIX: Record<EventName, Rule>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-matrix.d.ts","sourceRoot":"","sources":["../../../src/emitter/event/field-matrix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC;AAE1C,qEAAqE;AACrE,eAAO,MAAM,WAAW,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"field-matrix.d.ts","sourceRoot":"","sources":["../../../src/emitter/event/field-matrix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC;AAE1C,qEAAqE;AACrE,eAAO,MAAM,WAAW,EAAE,SAAS,EAYlC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAAS,EAWlC,CAAC;AAEF,KAAK,IAAI,GAAG;IAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAAC,QAAQ,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAwBhD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,gBAAgB,CA4BtF;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAE/C"}
|
|
@@ -5,9 +5,7 @@ export const FIELD_ORDER = [
|
|
|
5
5
|
"stage",
|
|
6
6
|
"trace",
|
|
7
7
|
"counters",
|
|
8
|
-
"plan",
|
|
9
8
|
"priority",
|
|
10
|
-
"unit",
|
|
11
9
|
"remaining",
|
|
12
10
|
"state",
|
|
13
11
|
"resume_point",
|
|
@@ -17,7 +15,6 @@ export const FIELD_ORDER = [
|
|
|
17
15
|
export const EVENT_NAMES = [
|
|
18
16
|
"invalid",
|
|
19
17
|
"accepted",
|
|
20
|
-
"planned",
|
|
21
18
|
"progress",
|
|
22
19
|
"escalated",
|
|
23
20
|
"escalation_reminder",
|
|
@@ -29,26 +26,25 @@ export const EVENT_NAMES = [
|
|
|
29
26
|
];
|
|
30
27
|
/**
|
|
31
28
|
* What each Event accepts. A field outside its row is refused, not dropped:
|
|
32
|
-
* a caller setting `reference` on `
|
|
29
|
+
* a caller setting `reference` on `accepted` has confused two Events, and a
|
|
33
30
|
* report that hides that is worse than a refusal.
|
|
34
31
|
*/
|
|
35
32
|
export const FIELD_MATRIX = {
|
|
36
33
|
invalid: { required: ["reason"], optional: [] },
|
|
37
34
|
accepted: { required: ["priority"], optional: [] },
|
|
38
|
-
|
|
39
|
-
// Progress is one sentence a person reads — a Subtask landed, a refusal
|
|
35
|
+
// Progress is one sentence a person reads — a refusal
|
|
40
36
|
// being repaired — and whatever detail the caller wants to leave under it.
|
|
41
37
|
progress: {
|
|
42
38
|
required: ["summary"],
|
|
43
|
-
optional: ["
|
|
39
|
+
optional: ["remaining", "state", "stage", "reason", "trace", "counters"],
|
|
44
40
|
},
|
|
45
41
|
escalated: {
|
|
46
42
|
required: ["reason", "stage"],
|
|
47
|
-
optional: ["trace", "counters"
|
|
43
|
+
optional: ["trace", "counters"],
|
|
48
44
|
},
|
|
49
45
|
escalation_reminder: {
|
|
50
46
|
required: ["reason", "stage"],
|
|
51
|
-
optional: ["trace", "counters"
|
|
47
|
+
optional: ["trace", "counters"],
|
|
52
48
|
},
|
|
53
49
|
resumed: { required: ["resume_point"], optional: ["reason"] },
|
|
54
50
|
// The work is in front of the Authority; the reference is where it can be seen.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-matrix.js","sourceRoot":"","sources":["../../../src/emitter/event/field-matrix.ts"],"names":[],"mappings":"AAIA,qEAAqE;AACrE,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,UAAU;IACV,
|
|
1
|
+
{"version":3,"file":"field-matrix.js","sourceRoot":"","sources":["../../../src/emitter/event/field-matrix.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { FIELD_ORDER } from "../event/field-matrix.js";
|
|
2
2
|
import { truncateText } from "./truncate.js";
|
|
3
3
|
/** Free-text fields the report ceiling applies to. */
|
|
4
|
-
const BOUNDED_FIELDS = ["reason", "
|
|
4
|
+
const BOUNDED_FIELDS = ["reason", "trace"];
|
|
5
5
|
/** Fields rendered as a fenced block rather than a bullet. */
|
|
6
|
-
const BLOCK_FIELDS = ["trace"
|
|
6
|
+
const BLOCK_FIELDS = ["trace"];
|
|
7
7
|
/**
|
|
8
8
|
* Turn one invocation into the exact bytes both Thread files receive.
|
|
9
9
|
* Pure: --dry-run renders through this same function, so a preview cannot lie.
|
|
@@ -99,8 +99,8 @@ function standingNote(invocation) {
|
|
|
99
99
|
function label(field) {
|
|
100
100
|
return field.replace(/_/g, " ");
|
|
101
101
|
}
|
|
102
|
-
function title(
|
|
103
|
-
return
|
|
102
|
+
function title(_field) {
|
|
103
|
+
return "Trace";
|
|
104
104
|
}
|
|
105
105
|
function bullet(value) {
|
|
106
106
|
if (Array.isArray(value)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-event.js","sourceRoot":"","sources":["../../../src/emitter/render/render-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,sDAAsD;AACtD,MAAM,cAAc,GAAgB,CAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"render-event.js","sourceRoot":"","sources":["../../../src/emitter/render/render-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,sDAAsD;AACtD,MAAM,cAAc,GAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAExD,8DAA8D;AAC9D,MAAM,YAAY,GAAgB,CAAC,OAAO,CAAC,CAAC;AAU5C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,UAAsB;IAChD,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAE3E,MAAM,MAAM,GAAgB;QAC1B,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,EAAE,EAAE,UAAU,CAAC,EAAE;KAClB,CAAC;IACF,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC;IACvC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,CAAC;IAED,OAAO;QACL,MAAM;QACN,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;QACnC,OAAO,EAAE,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,MAAmB,EACnB,QAAgB;IAEhB,MAAM,GAAG,GAAgB,EAAE,GAAG,MAAM,EAAE,CAAC;IACvC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,GAA+B,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,aAAa,CAAC,UAAsB,EAAE,MAAmB;IAChE,MAAM,KAAK,GAAa;QACtB,MAAM,UAAU,CAAC,EAAE,MAAM,UAAU,CAAC,KAAK,EAAE;QAC3C,EAAE;QACF,cAAc,UAAU,CAAC,OAAO,EAAE;KACnC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxD,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,qEAAqE;AACrE,SAAS,YAAY,CAAC,UAAsB;IAC1C,QAAQ,UAAU,CAAC,KAAK,EAAE,CAAC;QACzB,KAAK,WAAW;YACd,OAAO,sDAAsD,CAAC;QAChE,KAAK,qBAAqB;YACxB,OAAO,kEAAkE,CAAC;QAC5E,KAAK,aAAa;YAChB,OAAO,qDAAqD,CAAC;QAC/D;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,KAAgB;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,KAAK,CAAC,MAAiB;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,OAAO,CAAC,KAA+B,CAAC;aACnD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;aAC1C,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -15,7 +15,7 @@ export type RunOptions = {
|
|
|
15
15
|
};
|
|
16
16
|
export declare function invalidInvocationResult(write: ProgressWriter, reason: string): RunResult;
|
|
17
17
|
/**
|
|
18
|
-
* Run one
|
|
18
|
+
* Run one Emitter invocation to a run outcome.
|
|
19
19
|
*/
|
|
20
20
|
export declare function runEmitter(options: RunOptions): RunResult;
|
|
21
21
|
//# sourceMappingURL=run-emitter.d.ts.map
|
|
@@ -23,7 +23,7 @@ export function invalidInvocationResult(write, reason) {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
* Run one
|
|
26
|
+
* Run one Emitter invocation to a run outcome.
|
|
27
27
|
*/
|
|
28
28
|
export function runEmitter(options) {
|
|
29
29
|
const { invocation } = options;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Thread file name for a
|
|
2
|
+
* Thread file name for a Ticket key. The hash suffix is always appended:
|
|
3
3
|
* slugging alone collides ("fake:42" and "fake/42"), and a collision silently
|
|
4
|
-
* merges two
|
|
4
|
+
* merges two Tickets' history.
|
|
5
5
|
*/
|
|
6
6
|
export declare function slugOf(key: string): string;
|
|
7
7
|
//# sourceMappingURL=slug.d.ts.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
const NAME_LIMIT = 48;
|
|
3
3
|
/**
|
|
4
|
-
* Thread file name for a
|
|
4
|
+
* Thread file name for a Ticket key. The hash suffix is always appended:
|
|
5
5
|
* slugging alone collides ("fake:42" and "fake/42"), and a collision silently
|
|
6
|
-
* merges two
|
|
6
|
+
* merges two Tickets' history.
|
|
7
7
|
*/
|
|
8
8
|
export function slugOf(key) {
|
|
9
9
|
const readable = key
|
package/dist/emitter/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/** Domain types owned by
|
|
1
|
+
/** Domain types owned by Emitter. Names match the Block perimeter only. */
|
|
2
2
|
export type RunOutcome = "reported" | "duplicate" | "rendered" | "unreportable" | "invalid-invocation" | "interrupted";
|
|
3
|
-
export type EventName = "invalid" | "accepted" | "
|
|
4
|
-
export type Stage = "
|
|
5
|
-
export type ResumePoint = "
|
|
3
|
+
export type EventName = "invalid" | "accepted" | "progress" | "escalated" | "escalation_reminder" | "resumed" | "submitted" | "done" | "cancelled" | "reject_late";
|
|
4
|
+
export type Stage = "unit" | "integrating" | "submitting" | "merging";
|
|
5
|
+
export type ResumePoint = "running" | "integrating";
|
|
6
6
|
/** Every field an Event may carry beyond key, project and timestamp. */
|
|
7
7
|
export type EventFields = {
|
|
8
8
|
/** One sentence a reader gets first, under the heading and before any field. */
|
|
@@ -11,9 +11,7 @@ export type EventFields = {
|
|
|
11
11
|
stage?: Stage;
|
|
12
12
|
trace?: string;
|
|
13
13
|
counters?: Record<string, string>;
|
|
14
|
-
plan?: string;
|
|
15
14
|
priority?: number;
|
|
16
|
-
unit?: string;
|
|
17
15
|
remaining?: number;
|
|
18
16
|
state?: string;
|
|
19
17
|
resume_point?: ResumePoint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/emitter/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/emitter/types.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,WAAW,GACX,UAAU,GACV,cAAc,GACd,oBAAoB,GACpB,aAAa,CAAC;AAElB,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,UAAU,GACV,UAAU,GACV,WAAW,GACX,qBAAqB,GACrB,SAAS,GACT,WAAW,GACX,MAAM,GACN,WAAW,GACX,aAAa,CAAC;AAElB,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;AAEtE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,aAAa,CAAC;AAEpD,wEAAwE;AACxE,MAAM,MAAM,WAAW,GAAG;IACxB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iGAAiG;IACjG,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/F,8DAA8D;AAC9D,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
|
package/dist/emitter/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/emitter/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/emitter/types.ts"],"names":[],"mappings":"AAAA,2EAA2E"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,OAAO,EAGZ,KAAK,cAAc,EACnB,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAQjD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,CAmB1E;AAKD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,CAaxE;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,EAAE,CAc/D"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, statSync } from "node:fs";
|
|
2
2
|
import { isAbsolute, resolve } from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { HOME_DIR, intOption, rejectUnknownOptions, stringOption, } from "@bluewombat/manager-kit";
|
|
4
4
|
import { createFakeManager } from "./manager.js";
|
|
5
5
|
export { createFakeManager } from "./manager.js";
|
|
6
6
|
const KNOWN_OPTIONS = ["source", "target", "defaultPriority"];
|
|
@@ -28,8 +28,8 @@ export function createManager(context) {
|
|
|
28
28
|
}
|
|
29
29
|
return { ok: true, manager: createFakeManager(options) };
|
|
30
30
|
}
|
|
31
|
-
const DEFAULT_SOURCE =
|
|
32
|
-
const DEFAULT_TARGET =
|
|
31
|
+
const DEFAULT_SOURCE = `./${HOME_DIR}/source`;
|
|
32
|
+
const DEFAULT_TARGET = `./${HOME_DIR}/threads`;
|
|
33
33
|
/**
|
|
34
34
|
* What `mason init` writes. `createManager` still refuses a missing Source:
|
|
35
35
|
* this only prepares the directories so the first file has somewhere to go.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAGL,SAAS,EAGT,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAGL,QAAQ,EACR,SAAS,EAGT,oBAAoB,EACpB,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAU,CAAC;AAMvE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAuB;IACnD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACrE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,+CAA+C,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7F,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAA4C;QACvD,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,aAAa,EAAE,IAAI,CAAC,MAAM;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC;IACF,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IACjD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,cAAc,GAAG,KAAK,QAAQ,SAAS,CAAC;AAC9C,MAAM,cAAc,GAAG,KAAK,QAAQ,UAAU,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAuB;IACrD,MAAM,MAAM,GACV,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;IACvF,MAAM,MAAM,GACV,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;IACvF,OAAO;QACL,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3B,SAAS,EAAE,CAAC,8BAA8B,MAAM,EAAE,CAAC;QACnD,OAAO,CAAC,GAAW;YACjB,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,OAAuB;IAClD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAChF,OAAO;QACL,QAAQ;YACN,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACjE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,oBAAoB,IAAI,CAAC,MAAM,EAAE,EAAE;QAC3F,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACjE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,mBAAmB,IAAI,CAAC,MAAM,EAAE,EAAE;KAC3F,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,OAAuB;IAC1C,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gEAAgE,EAAE,CAAC;IACjG,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,6DAA6D,EAAE,CAAC;IAC9F,CAAC;IACD,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9E,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;QACxB,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;QACjD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;QACjD,eAAe,EAAE,eAAe,CAAC,KAAK;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,SAAiB;IAC/C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -25,7 +25,7 @@ export type RunOptions = {
|
|
|
25
25
|
};
|
|
26
26
|
export declare function invalidInvocationResult(write: ProgressWriter, reason: string): RunResult;
|
|
27
27
|
/**
|
|
28
|
-
* Run one
|
|
28
|
+
* Run one Listener invocation to a run outcome.
|
|
29
29
|
*/
|
|
30
30
|
export declare function runListener(options: RunOptions): Promise<RunResult>;
|
|
31
31
|
//# sourceMappingURL=run-listener.d.ts.map
|
package/dist/listener/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Domain types owned by
|
|
1
|
+
/** Domain types owned by Listener. Names match the Block perimeter only. */
|
|
2
2
|
export type RunOutcome = "completed" | "source-lost" | "invalid-invocation" | "interrupted";
|
|
3
3
|
export type StopReason = "drained" | "max-events" | "duration" | "source-lost" | "signal";
|
|
4
4
|
export type SkipReason = "unreadable" | "not-json" | "not-object";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/listener/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/listener/types.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,oBAAoB,GAAG,aAAa,CAAC;AAE5F,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE1F,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,CAAC;AAElE,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/F,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
package/dist/listener/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/listener/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/listener/types.ts"],"names":[],"mappings":"AAAA,4EAA4E"}
|
package/dist/manager.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Manager } from "@bluewombat/manager-kit";
|
|
2
2
|
export type FakeManagerOptions = {
|
|
3
3
|
/** Directory holding one JSON file per raw intention. Must exist. */
|
|
4
4
|
source: string;
|
|
@@ -12,6 +12,11 @@ export type FakeManagerOptions = {
|
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
14
|
* Directory Source + directory Thread. The wiring that needs no account.
|
|
15
|
+
*
|
|
16
|
+
* The Source holds the Features; a Feature's Tickets sit in its own file, under
|
|
17
|
+
* `tickets`. Both sides write their Events to the same Threads. There is no
|
|
18
|
+
* Authority: the work is folded into WorkLineStable and a Feature is done when
|
|
19
|
+
* its Tickets are.
|
|
15
20
|
*/
|
|
16
|
-
export declare function createFakeManager(options: FakeManagerOptions):
|
|
21
|
+
export declare function createFakeManager(options: FakeManagerOptions): Manager;
|
|
17
22
|
//# sourceMappingURL=manager.d.ts.map
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,OAAO,EAGR,MAAM,yBAAyB,CAAC;AAejC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CA0BtE"}
|
package/dist/manager.js
CHANGED
|
@@ -2,6 +2,7 @@ import { fingerprintOf } from "./adapter/normalize/fingerprint.js";
|
|
|
2
2
|
import { runAdapter } from "./adapter/run/run-adapter.js";
|
|
3
3
|
import { runEmitter } from "./emitter/run/run-emitter.js";
|
|
4
4
|
import { runListener } from "./listener/run/run-listener.js";
|
|
5
|
+
import { listTickets } from "./tickets/list-tickets.js";
|
|
5
6
|
const silent = () => { };
|
|
6
7
|
const MANAGER = "fake";
|
|
7
8
|
const UNKNOWN_PROJECT = "unknown";
|
|
@@ -11,8 +12,40 @@ const DEFAULT_MAX_RAW_BYTES = 65_536;
|
|
|
11
12
|
const MAX_REPORT_CHARS = 8_000;
|
|
12
13
|
/**
|
|
13
14
|
* Directory Source + directory Thread. The wiring that needs no account.
|
|
15
|
+
*
|
|
16
|
+
* The Source holds the Features; a Feature's Tickets sit in its own file, under
|
|
17
|
+
* `tickets`. Both sides write their Events to the same Threads. There is no
|
|
18
|
+
* Authority: the work is folded into WorkLineStable and a Feature is done when
|
|
19
|
+
* its Tickets are.
|
|
14
20
|
*/
|
|
15
21
|
export function createFakeManager(options) {
|
|
22
|
+
const report = async (input) => {
|
|
23
|
+
const result = runEmitter({
|
|
24
|
+
invocation: {
|
|
25
|
+
target: options.emitterTarget,
|
|
26
|
+
event: input.event,
|
|
27
|
+
key: input.key,
|
|
28
|
+
project: input.project,
|
|
29
|
+
at: new Date().toISOString(),
|
|
30
|
+
fields: input.fields,
|
|
31
|
+
...(input.eventId === undefined ? {} : { eventId: input.eventId }),
|
|
32
|
+
maxReportChars: MAX_REPORT_CHARS,
|
|
33
|
+
dryRun: false,
|
|
34
|
+
},
|
|
35
|
+
write: silent,
|
|
36
|
+
});
|
|
37
|
+
// Same as GitHub: a Thread that already carries this eventId has said it.
|
|
38
|
+
return result.outcome === "reported" || result.outcome === "duplicate";
|
|
39
|
+
};
|
|
40
|
+
const tickets = {
|
|
41
|
+
async tickets(feature) {
|
|
42
|
+
return { outcome: "listed", tickets: listTickets(options.source, feature) };
|
|
43
|
+
},
|
|
44
|
+
report,
|
|
45
|
+
};
|
|
46
|
+
return { features: featureTracker(options, report), tickets };
|
|
47
|
+
}
|
|
48
|
+
function featureTracker(options, report) {
|
|
16
49
|
const defaultPriority = options.defaultPriority ?? DEFAULT_PRIORITY;
|
|
17
50
|
return {
|
|
18
51
|
async listen(input) {
|
|
@@ -68,24 +101,7 @@ export function createFakeManager(options) {
|
|
|
68
101
|
}
|
|
69
102
|
return { outcome: "converted", feature: adapted.feature };
|
|
70
103
|
},
|
|
71
|
-
|
|
72
|
-
const result = runEmitter({
|
|
73
|
-
invocation: {
|
|
74
|
-
target: options.emitterTarget,
|
|
75
|
-
event: input.event,
|
|
76
|
-
key: input.key,
|
|
77
|
-
project: input.project,
|
|
78
|
-
at: new Date().toISOString(),
|
|
79
|
-
fields: input.fields,
|
|
80
|
-
...(input.eventId === undefined ? {} : { eventId: input.eventId }),
|
|
81
|
-
maxReportChars: MAX_REPORT_CHARS,
|
|
82
|
-
dryRun: false,
|
|
83
|
-
},
|
|
84
|
-
write: silent,
|
|
85
|
-
});
|
|
86
|
-
// Same as GitHub: a Thread that already carries this eventId has said it.
|
|
87
|
-
return result.outcome === "reported" || result.outcome === "duplicate";
|
|
88
|
-
},
|
|
104
|
+
report,
|
|
89
105
|
};
|
|
90
106
|
}
|
|
91
107
|
function keyFromRaw(payload) {
|
package/dist/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/process-tree.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare function ownGroup(): {
|
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
7
7
|
* Remember a running child so it does not outlive this process: a group of its
|
|
8
|
-
* own
|
|
8
|
+
* own does not share the terminal's Ctrl-C, nor die by accident with us.
|
|
9
9
|
* Forgotten on its own once it closes.
|
|
10
10
|
*/
|
|
11
11
|
export declare function track(child: ChildProcess): void;
|
package/dist/process-tree.js
CHANGED
|
@@ -35,7 +35,7 @@ export function ownGroup() {
|
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Remember a running child so it does not outlive this process: a group of its
|
|
38
|
-
* own
|
|
38
|
+
* own does not share the terminal's Ctrl-C, nor die by accident with us.
|
|
39
39
|
* Forgotten on its own once it closes.
|
|
40
40
|
*/
|
|
41
41
|
export function track(child) {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FeatureRef, TicketEntry } from "@bluewombat/manager-kit";
|
|
2
|
+
/**
|
|
3
|
+
* The Tickets a Feature carries, read from the newest file of the Source that
|
|
4
|
+
* is about that Feature. A Ticket is a plain object under `tickets`:
|
|
5
|
+
*
|
|
6
|
+
* { "id": "7", "intention": "…", "blocked_by": ["6"], "task_ready": false,
|
|
7
|
+
* "resume": true, "open": false, "priority": 70 }
|
|
8
|
+
*
|
|
9
|
+
* `task_ready` and `open` default to true, `resume`, `no_tests` and `e2e` to false. A Ticket's key is
|
|
10
|
+
* `fake:<id>`, like a Feature's, so ids are unique across both.
|
|
11
|
+
*/
|
|
12
|
+
export declare function listTickets(source: string, feature: FeatureRef): TicketEntry[];
|
|
13
|
+
//# sourceMappingURL=list-tickets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-tickets.d.ts","sourceRoot":"","sources":["../../src/tickets/list-tickets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAkB,MAAM,yBAAyB,CAAC;AAMvF;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,WAAW,EAAE,CAiB9E"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { fingerprintOf } from "../adapter/normalize/fingerprint.js";
|
|
4
|
+
const MANAGER = "fake";
|
|
5
|
+
const DEFAULT_PRIORITY = 50;
|
|
6
|
+
/**
|
|
7
|
+
* The Tickets a Feature carries, read from the newest file of the Source that
|
|
8
|
+
* is about that Feature. A Ticket is a plain object under `tickets`:
|
|
9
|
+
*
|
|
10
|
+
* { "id": "7", "intention": "…", "blocked_by": ["6"], "task_ready": false,
|
|
11
|
+
* "resume": true, "open": false, "priority": 70 }
|
|
12
|
+
*
|
|
13
|
+
* `task_ready` and `open` default to true, `resume`, `no_tests` and `e2e` to false. A Ticket's key is
|
|
14
|
+
* `fake:<id>`, like a Feature's, so ids are unique across both.
|
|
15
|
+
*/
|
|
16
|
+
export function listTickets(source, feature) {
|
|
17
|
+
const payload = newestPayloadOf(source, feature.external_id);
|
|
18
|
+
const raw = payload?.tickets;
|
|
19
|
+
if (!Array.isArray(raw)) {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
const entries = [];
|
|
23
|
+
for (const item of raw) {
|
|
24
|
+
if (item === null || typeof item !== "object" || Array.isArray(item)) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const entry = entryOf(item, feature);
|
|
28
|
+
if (entry !== undefined) {
|
|
29
|
+
entries.push(entry);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return entries;
|
|
33
|
+
}
|
|
34
|
+
function entryOf(raw, feature) {
|
|
35
|
+
const id = idOf(raw.id);
|
|
36
|
+
if (id === undefined) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const title = textOf(raw.title);
|
|
40
|
+
const intention = textOf(raw.intention) ?? title;
|
|
41
|
+
if (intention === undefined) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const blocked = Array.isArray(raw.blocked_by)
|
|
45
|
+
? raw.blocked_by.map(idOf).filter((entry) => entry !== undefined)
|
|
46
|
+
: [];
|
|
47
|
+
const priority = typeof raw.priority === "number" && Number.isInteger(raw.priority)
|
|
48
|
+
? raw.priority
|
|
49
|
+
: DEFAULT_PRIORITY;
|
|
50
|
+
const ticket = {
|
|
51
|
+
key: `${MANAGER}:${id}`,
|
|
52
|
+
manager: MANAGER,
|
|
53
|
+
external_id: id,
|
|
54
|
+
project: feature.project,
|
|
55
|
+
...(title === undefined ? {} : { title }),
|
|
56
|
+
intention,
|
|
57
|
+
priority,
|
|
58
|
+
blocked_by: blocked.map((other) => `${MANAGER}:${other}`),
|
|
59
|
+
fingerprint: "",
|
|
60
|
+
normalized_at: new Date().toISOString(),
|
|
61
|
+
};
|
|
62
|
+
ticket.fingerprint = fingerprintOf(ticket);
|
|
63
|
+
return {
|
|
64
|
+
ticket,
|
|
65
|
+
task_ready: raw.task_ready !== false,
|
|
66
|
+
resume: raw.resume === true,
|
|
67
|
+
no_tests: raw.no_tests === true,
|
|
68
|
+
e2e: raw.e2e === true,
|
|
69
|
+
open: raw.open !== false,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function newestPayloadOf(source, id) {
|
|
73
|
+
let found;
|
|
74
|
+
const names = readdirSync(source)
|
|
75
|
+
.filter((name) => name.endsWith(".json"))
|
|
76
|
+
.sort();
|
|
77
|
+
for (const name of names) {
|
|
78
|
+
try {
|
|
79
|
+
const parsed = JSON.parse(readFileSync(join(source, name), "utf8"));
|
|
80
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const payload = parsed;
|
|
84
|
+
const kind = typeof payload.kind === "string" ? payload.kind.toLowerCase() : "create";
|
|
85
|
+
if (idOf(payload.id) === id && (kind === "create" || kind === "update")) {
|
|
86
|
+
found = payload;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// A file that is not JSON is the listener's to report, not this reader's.
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return found;
|
|
94
|
+
}
|
|
95
|
+
function idOf(value) {
|
|
96
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
97
|
+
return String(value);
|
|
98
|
+
}
|
|
99
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
100
|
+
return value.trim();
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
function textOf(value) {
|
|
105
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=list-tickets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-tickets.js","sourceRoot":"","sources":["../../src/tickets/list-tickets.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bluewombat/manager-fake",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "File-based
|
|
5
|
+
"description": "File-based TicketTracker: JSON intentions in, Threads out. No account.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"mason",
|
|
8
8
|
"bluewombat",
|
|
@@ -42,6 +42,6 @@
|
|
|
42
42
|
"build": "tsc -p tsconfig.build.json"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@bluewombat/manager-kit": "^0.
|
|
45
|
+
"@bluewombat/manager-kit": "^0.10.0"
|
|
46
46
|
}
|
|
47
47
|
}
|