workday-daemon 0.5.1 → 0.7.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/dist/cli.js +246 -44
- package/dist/cli.js.map +1 -1
- package/dist/collectors/churn-scanner.d.ts +19 -0
- package/dist/collectors/churn-scanner.js +80 -0
- package/dist/collectors/churn-scanner.js.map +1 -0
- package/dist/collectors/git-client.js +4 -1
- package/dist/collectors/git-client.js.map +1 -1
- package/dist/collectors/git-tracker.js +15 -6
- package/dist/collectors/git-tracker.js.map +1 -1
- package/dist/collectors/snapshot-parser.d.ts +30 -10
- package/dist/collectors/snapshot-parser.js +80 -19
- package/dist/collectors/snapshot-parser.js.map +1 -1
- package/dist/core/activity-evaluator.d.ts +2 -2
- package/dist/core/activity-evaluator.js +19 -10
- package/dist/core/activity-evaluator.js.map +1 -1
- package/dist/core/constants.d.ts +27 -0
- package/dist/core/constants.js +51 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/core/daily-log.d.ts +28 -2
- package/dist/core/daily-log.js +114 -5
- package/dist/core/daily-log.js.map +1 -1
- package/dist/core/session-tracker.d.ts +26 -1
- package/dist/core/session-tracker.js +32 -2
- package/dist/core/session-tracker.js.map +1 -1
- package/dist/core/types.d.ts +59 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/update-manager.d.ts +42 -0
- package/dist/core/update-manager.js +86 -0
- package/dist/core/update-manager.js.map +1 -0
- package/dist/daemon.d.ts +27 -1
- package/dist/daemon.js +120 -1
- package/dist/daemon.js.map +1 -1
- package/dist/http-server.d.ts +10 -1
- package/dist/http-server.js +123 -2
- package/dist/http-server.js.map +1 -1
- package/dist/push/activity-types.d.ts +10 -0
- package/dist/push/activity-types.js +75 -0
- package/dist/push/activity-types.js.map +1 -0
- package/dist/push/report-builder.js +18 -1
- package/dist/push/report-builder.js.map +1 -1
- package/dist/push/tempo-client.d.ts +13 -0
- package/dist/push/tempo-client.js +17 -14
- package/dist/push/tempo-client.js.map +1 -1
- package/dist/push/tempo-pusher.js +86 -80
- package/dist/push/tempo-pusher.js.map +1 -1
- package/package.json +2 -2
|
@@ -35,6 +35,8 @@ export class GitClient {
|
|
|
35
35
|
`git -C "${repoPath}" status --porcelain`,
|
|
36
36
|
`echo ${GIT_BATCH_SEPARATOR}`,
|
|
37
37
|
`git -C "${repoPath}" reflog -${this.reflogCount} --date=iso --format="%gd %gs"`,
|
|
38
|
+
`echo ${GIT_BATCH_SEPARATOR}`,
|
|
39
|
+
`git -C "${repoPath}" ls-files --others --exclude-standard`,
|
|
38
40
|
];
|
|
39
41
|
if (baseSha) {
|
|
40
42
|
parts.push(`echo ${GIT_BATCH_SEPARATOR}`,
|
|
@@ -118,7 +120,7 @@ export class GitClient {
|
|
|
118
120
|
const normalized = raw.replace(/\r\n/g, '\n');
|
|
119
121
|
// Windows echo may add trailing space: "---WORKDAY-SEP--- \n"
|
|
120
122
|
const sections = normalized.split(new RegExp(GIT_BATCH_SEPARATOR + '\\s*\\n'));
|
|
121
|
-
let idx =
|
|
123
|
+
let idx = 6; // fixed: branch, head, diff, status, reflog, untracked
|
|
122
124
|
const diffSinceBase = withBase ? (sections[idx++] ?? '').trim() : undefined;
|
|
123
125
|
const commitsSinceBase = withBase ? (sections[idx++] ?? '').trim() : undefined;
|
|
124
126
|
return {
|
|
@@ -127,6 +129,7 @@ export class GitClient {
|
|
|
127
129
|
diffNumstat: (sections[2] ?? '').trim(),
|
|
128
130
|
statusPorcelain: (sections[3] ?? '').trim(),
|
|
129
131
|
reflog: (sections[4] ?? '').trim(),
|
|
132
|
+
untrackedFiles: (sections[5] ?? '').trim(),
|
|
130
133
|
diffSinceBase,
|
|
131
134
|
commitsSinceBase,
|
|
132
135
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-client.js","sourceRoot":"","sources":["../../src/collectors/git-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC;;;GAGG;AACH,MAAM,OAAO,SAAS;IACH,WAAW,CAAS;IAErC,YAAmB,cAAsB,EAAE;QACzC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,cAAc,CACzB,QAAgB,EAChB,OAAgB;QAEhB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,KAAK,GAAG;YACZ,WAAW,QAAQ,+BAA+B;YAClD,QAAQ,mBAAmB,EAAE;YAC7B,WAAW,QAAQ,kBAAkB;YACrC,QAAQ,mBAAmB,EAAE;YAC7B,WAAW,QAAQ,kBAAkB;YACrC,QAAQ,mBAAmB,EAAE;YAC7B,WAAW,QAAQ,sBAAsB;YACzC,QAAQ,mBAAmB,EAAE;YAC7B,WAAW,QAAQ,aAAa,IAAI,CAAC,WAAW,gCAAgC;
|
|
1
|
+
{"version":3,"file":"git-client.js","sourceRoot":"","sources":["../../src/collectors/git-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { extractTask, getConfiguredDefaultBranchName } from '../core/config.js';
|
|
|
4
4
|
import { GitClient } from './git-client.js';
|
|
5
5
|
import { ReflogParser } from './reflog-parser.js';
|
|
6
6
|
import { SnapshotParser } from './snapshot-parser.js'; // static methods only
|
|
7
|
+
import { buildChurnFiles } from './churn-scanner.js';
|
|
7
8
|
/**
|
|
8
9
|
* Final fallback list when no config and no `origin/HEAD` are available.
|
|
9
10
|
* Tried in order; the first ref that actually exists wins.
|
|
@@ -102,8 +103,17 @@ export class GitTracker {
|
|
|
102
103
|
// Branch filter: only track developer's branches
|
|
103
104
|
const task = extractTask(raw.branch, this.config.taskPattern, this.developer, this.config.genericBranches);
|
|
104
105
|
const state = this.getOrCreateRepoState(repoPath);
|
|
106
|
+
// Churn sources: per-file evidence diff (sees committed + staged +
|
|
107
|
+
// worktree; falls back to the plain worktree diff when no base yet)
|
|
108
|
+
// and untracked files (invisible to any git diff — read from disk).
|
|
109
|
+
const evidenceDiff = raw.diffSinceBase !== undefined
|
|
110
|
+
? SnapshotParser.parseDiffNumstatFiles(raw.diffSinceBase)
|
|
111
|
+
: null;
|
|
112
|
+
const churnSource = evidenceDiff ?? SnapshotParser.parseDiffNumstatFiles(raw.diffNumstat);
|
|
113
|
+
const untrackedPaths = SnapshotParser.parseUntrackedList(raw.untrackedFiles);
|
|
114
|
+
const churnFiles = await buildChurnFiles(repoPath, churnSource.files, untrackedPaths, state.previousSnapshot?.churnFiles ?? null);
|
|
105
115
|
// Parse snapshot and compute delta
|
|
106
|
-
const snapshot = SnapshotParser.parseSnapshot(raw, now);
|
|
116
|
+
const snapshot = SnapshotParser.parseSnapshot(raw, now, churnFiles);
|
|
107
117
|
const delta = SnapshotParser.computeDelta(state.previousSnapshot, snapshot);
|
|
108
118
|
// Parse reflog, filter to new entries only
|
|
109
119
|
const allEntries = this.reflogParser.parseEntries(raw.reflog);
|
|
@@ -125,14 +135,13 @@ export class GitTracker {
|
|
|
125
135
|
// AND git accepted it — fetchRepoState transparently drops it on bad-ref).
|
|
126
136
|
let evidenceSnapshot = null;
|
|
127
137
|
let evidenceBasis = null;
|
|
128
|
-
if (
|
|
129
|
-
const { added, removed, fileCount } = SnapshotParser.parseDiffNumstatTotals(raw.diffSinceBase);
|
|
138
|
+
if (evidenceDiff !== null && raw.commitsSinceBase !== undefined) {
|
|
130
139
|
const commits = parseInt(raw.commitsSinceBase, 10);
|
|
131
140
|
evidenceSnapshot = {
|
|
132
141
|
commits: Number.isFinite(commits) ? commits : 0,
|
|
133
|
-
linesAdded: added,
|
|
134
|
-
linesRemoved: removed,
|
|
135
|
-
filesChanged: fileCount,
|
|
142
|
+
linesAdded: evidenceDiff.totals.added,
|
|
143
|
+
linesRemoved: evidenceDiff.totals.removed,
|
|
144
|
+
filesChanged: evidenceDiff.totals.fileCount,
|
|
136
145
|
};
|
|
137
146
|
evidenceBasis = mergeBaseSha !== null ? 'merge_base' : 'base_sha';
|
|
138
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-tracker.js","sourceRoot":"","sources":["../../src/collectors/git-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAWrC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC,CAAE,sBAAsB;
|
|
1
|
+
{"version":3,"file":"git-tracker.js","sourceRoot":"","sources":["../../src/collectors/git-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type { RawGitOutput, GitSnapshot, GitDelta } from '../core/types.js';
|
|
1
|
+
import type { RawGitOutput, GitSnapshot, GitDelta, ChurnFile } from '../core/types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Parses git diff --numstat and status --porcelain output into GitSnapshot.
|
|
4
4
|
* Computes delta between consecutive snapshots.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* Activity volume (delta.magnitude) is measured per file over the churn map,
|
|
7
|
+
* never over summed totals — totals net out cross-file movement and are blind
|
|
8
|
+
* to rewrites of already-modified lines and to untracked files.
|
|
7
9
|
*/
|
|
8
10
|
export declare class SnapshotParser {
|
|
9
11
|
/**
|
|
@@ -11,30 +13,48 @@ export declare class SnapshotParser {
|
|
|
11
13
|
*
|
|
12
14
|
* diff --numstat format: "added\tremoved\tfilename" per line
|
|
13
15
|
* status --porcelain: "?? filename" for untracked files
|
|
16
|
+
* churnFiles: built by churn-scanner from the evidence diff + untracked files
|
|
14
17
|
*/
|
|
15
|
-
static parseSnapshot(raw: RawGitOutput, timestamp: number): GitSnapshot;
|
|
18
|
+
static parseSnapshot(raw: RawGitOutput, timestamp: number, churnFiles?: ReadonlyMap<string, ChurnFile>): GitSnapshot;
|
|
16
19
|
/**
|
|
17
20
|
* Compute delta between previous and current snapshot.
|
|
18
|
-
*
|
|
21
|
+
*
|
|
22
|
+
* addedDelta/removedDelta/untrackedDelta keep the worktree-totals semantics
|
|
23
|
+
* (used for signal logging). magnitude is the real churn estimate:
|
|
24
|
+
* - per-file |Δadded| + |Δremoved| across the churn map;
|
|
25
|
+
* - a file entering the map counts whole (new untracked file, first edit);
|
|
26
|
+
* - a file leaving counts its last known size (revert / re-anchor);
|
|
27
|
+
* - a flat file whose content hash changed counts IN_PLACE_CHURN_LINES.
|
|
19
28
|
*
|
|
20
29
|
* Returns null delta (hasDynamics=false) if previous is null (first tick after start).
|
|
21
30
|
*/
|
|
22
31
|
static computeDelta(previous: GitSnapshot | null, current: GitSnapshot): GitDelta;
|
|
32
|
+
private static computeChurnMagnitude;
|
|
23
33
|
/**
|
|
24
|
-
* Public alias — used by GitTracker to parse a `diff <
|
|
25
|
-
* output for the PR-equivalent evidence snapshot.
|
|
34
|
+
* Public alias — used by GitTracker to parse a `diff <base> --numstat`
|
|
35
|
+
* output for the PR-equivalent evidence snapshot and the churn file map.
|
|
26
36
|
*/
|
|
27
|
-
static
|
|
28
|
-
readonly
|
|
29
|
-
|
|
30
|
-
|
|
37
|
+
static parseDiffNumstatFiles(text: string): {
|
|
38
|
+
readonly totals: {
|
|
39
|
+
readonly added: number;
|
|
40
|
+
readonly removed: number;
|
|
41
|
+
readonly fileCount: number;
|
|
42
|
+
};
|
|
43
|
+
readonly files: ReadonlyMap<string, {
|
|
44
|
+
readonly added: number;
|
|
45
|
+
readonly removed: number;
|
|
46
|
+
}>;
|
|
31
47
|
};
|
|
32
48
|
/**
|
|
33
49
|
* Parse "git diff --numstat" output.
|
|
34
50
|
* Each line: "added\tremoved\tfilename"
|
|
35
51
|
* Binary files show "-\t-\tfilename" → skip.
|
|
52
|
+
* Unusual paths come quoted from git — quotes are stripped (escapes kept:
|
|
53
|
+
* keys only need to be stable between ticks; fs reads on them just miss).
|
|
36
54
|
*/
|
|
37
55
|
private static parseDiffNumstat;
|
|
56
|
+
/** Parse `git ls-files --others --exclude-standard` output into paths. */
|
|
57
|
+
static parseUntrackedList(text: string): string[];
|
|
38
58
|
/**
|
|
39
59
|
* Count untracked files from "git status --porcelain" output.
|
|
40
60
|
* Untracked files start with "?? ".
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { IN_PLACE_CHURN_LINES } from '../core/constants.js';
|
|
1
2
|
/**
|
|
2
3
|
* Parses git diff --numstat and status --porcelain output into GitSnapshot.
|
|
3
4
|
* Computes delta between consecutive snapshots.
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
+
* Activity volume (delta.magnitude) is measured per file over the churn map,
|
|
7
|
+
* never over summed totals — totals net out cross-file movement and are blind
|
|
8
|
+
* to rewrites of already-modified lines and to untracked files.
|
|
6
9
|
*/
|
|
7
10
|
export class SnapshotParser {
|
|
8
11
|
/**
|
|
@@ -10,9 +13,10 @@ export class SnapshotParser {
|
|
|
10
13
|
*
|
|
11
14
|
* diff --numstat format: "added\tremoved\tfilename" per line
|
|
12
15
|
* status --porcelain: "?? filename" for untracked files
|
|
16
|
+
* churnFiles: built by churn-scanner from the evidence diff + untracked files
|
|
13
17
|
*/
|
|
14
|
-
static parseSnapshot(raw, timestamp) {
|
|
15
|
-
const { added, removed, fileCount } = SnapshotParser.parseDiffNumstat(raw.diffNumstat);
|
|
18
|
+
static parseSnapshot(raw, timestamp, churnFiles = new Map()) {
|
|
19
|
+
const { added, removed, fileCount } = SnapshotParser.parseDiffNumstat(raw.diffNumstat).totals;
|
|
16
20
|
const untrackedCount = SnapshotParser.parseUntrackedCount(raw.statusPorcelain);
|
|
17
21
|
return {
|
|
18
22
|
branch: raw.branch,
|
|
@@ -20,52 +24,109 @@ export class SnapshotParser {
|
|
|
20
24
|
trackedFileCount: fileCount,
|
|
21
25
|
untrackedCount,
|
|
22
26
|
timestamp,
|
|
27
|
+
churnFiles,
|
|
23
28
|
};
|
|
24
29
|
}
|
|
25
30
|
/**
|
|
26
31
|
* Compute delta between previous and current snapshot.
|
|
27
|
-
*
|
|
32
|
+
*
|
|
33
|
+
* addedDelta/removedDelta/untrackedDelta keep the worktree-totals semantics
|
|
34
|
+
* (used for signal logging). magnitude is the real churn estimate:
|
|
35
|
+
* - per-file |Δadded| + |Δremoved| across the churn map;
|
|
36
|
+
* - a file entering the map counts whole (new untracked file, first edit);
|
|
37
|
+
* - a file leaving counts its last known size (revert / re-anchor);
|
|
38
|
+
* - a flat file whose content hash changed counts IN_PLACE_CHURN_LINES.
|
|
28
39
|
*
|
|
29
40
|
* Returns null delta (hasDynamics=false) if previous is null (first tick after start).
|
|
30
41
|
*/
|
|
31
42
|
static computeDelta(previous, current) {
|
|
32
43
|
if (previous === null) {
|
|
33
44
|
// First tick = baseline, no dynamics
|
|
34
|
-
return { addedDelta: 0, removedDelta: 0, untrackedDelta: 0, hasDynamics: false };
|
|
45
|
+
return { addedDelta: 0, removedDelta: 0, untrackedDelta: 0, hasDynamics: false, magnitude: 0 };
|
|
35
46
|
}
|
|
36
47
|
const addedDelta = current.trackedLines.added - previous.trackedLines.added;
|
|
37
48
|
const removedDelta = current.trackedLines.removed - previous.trackedLines.removed;
|
|
38
49
|
const untrackedDelta = current.untrackedCount - previous.untrackedCount;
|
|
39
|
-
const
|
|
40
|
-
|
|
50
|
+
const magnitude = SnapshotParser.computeChurnMagnitude(previous.churnFiles, current.churnFiles);
|
|
51
|
+
const hasDynamics = magnitude > 0 || addedDelta !== 0 || removedDelta !== 0 || untrackedDelta !== 0;
|
|
52
|
+
return { addedDelta, removedDelta, untrackedDelta, hasDynamics, magnitude };
|
|
53
|
+
}
|
|
54
|
+
static computeChurnMagnitude(prev, cur) {
|
|
55
|
+
let magnitude = 0;
|
|
56
|
+
for (const [path, c] of cur) {
|
|
57
|
+
const p = prev.get(path);
|
|
58
|
+
if (p === undefined) {
|
|
59
|
+
magnitude += c.added + c.removed;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const d = Math.abs(c.added - p.added) + Math.abs(c.removed - p.removed);
|
|
63
|
+
if (d > 0) {
|
|
64
|
+
magnitude += d;
|
|
65
|
+
}
|
|
66
|
+
else if (c.hash !== null && p.hash !== null && c.hash !== p.hash) {
|
|
67
|
+
magnitude += IN_PLACE_CHURN_LINES;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
for (const [path, p] of prev) {
|
|
71
|
+
if (!cur.has(path)) {
|
|
72
|
+
magnitude += p.added + p.removed;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return magnitude;
|
|
41
76
|
}
|
|
42
77
|
/**
|
|
43
|
-
* Public alias — used by GitTracker to parse a `diff <
|
|
44
|
-
* output for the PR-equivalent evidence snapshot.
|
|
78
|
+
* Public alias — used by GitTracker to parse a `diff <base> --numstat`
|
|
79
|
+
* output for the PR-equivalent evidence snapshot and the churn file map.
|
|
45
80
|
*/
|
|
46
|
-
static
|
|
81
|
+
static parseDiffNumstatFiles(text) {
|
|
47
82
|
return SnapshotParser.parseDiffNumstat(text);
|
|
48
83
|
}
|
|
49
84
|
/**
|
|
50
85
|
* Parse "git diff --numstat" output.
|
|
51
86
|
* Each line: "added\tremoved\tfilename"
|
|
52
87
|
* Binary files show "-\t-\tfilename" → skip.
|
|
88
|
+
* Unusual paths come quoted from git — quotes are stripped (escapes kept:
|
|
89
|
+
* keys only need to be stable between ticks; fs reads on them just miss).
|
|
53
90
|
*/
|
|
54
91
|
static parseDiffNumstat(text) {
|
|
55
|
-
|
|
56
|
-
return { added: 0, removed: 0, fileCount: 0 };
|
|
92
|
+
const files = new Map();
|
|
57
93
|
let added = 0;
|
|
58
94
|
let removed = 0;
|
|
59
95
|
let fileCount = 0;
|
|
96
|
+
if (text) {
|
|
97
|
+
for (const line of text.split('\n')) {
|
|
98
|
+
const match = line.match(/^(\d+)\t(\d+)\t(.+)$/);
|
|
99
|
+
if (!match)
|
|
100
|
+
continue; // skip binary files or empty lines
|
|
101
|
+
const a = parseInt(match[1], 10);
|
|
102
|
+
const r = parseInt(match[2], 10);
|
|
103
|
+
let path = match[3];
|
|
104
|
+
if (path.startsWith('"') && path.endsWith('"')) {
|
|
105
|
+
path = path.slice(1, -1);
|
|
106
|
+
}
|
|
107
|
+
added += a;
|
|
108
|
+
removed += r;
|
|
109
|
+
fileCount++;
|
|
110
|
+
files.set(path, { added: a, removed: r });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return { totals: { added, removed, fileCount }, files };
|
|
114
|
+
}
|
|
115
|
+
/** Parse `git ls-files --others --exclude-standard` output into paths. */
|
|
116
|
+
static parseUntrackedList(text) {
|
|
117
|
+
if (!text)
|
|
118
|
+
return [];
|
|
119
|
+
const paths = [];
|
|
60
120
|
for (const line of text.split('\n')) {
|
|
61
|
-
|
|
62
|
-
if (!
|
|
63
|
-
continue;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
121
|
+
let path = line.trim();
|
|
122
|
+
if (!path)
|
|
123
|
+
continue;
|
|
124
|
+
if (path.startsWith('"') && path.endsWith('"')) {
|
|
125
|
+
path = path.slice(1, -1);
|
|
126
|
+
}
|
|
127
|
+
paths.push(path);
|
|
67
128
|
}
|
|
68
|
-
return
|
|
129
|
+
return paths;
|
|
69
130
|
}
|
|
70
131
|
/**
|
|
71
132
|
* Count untracked files from "git status --porcelain" output.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-parser.js","sourceRoot":"","sources":["../../src/collectors/snapshot-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"snapshot-parser.js","sourceRoot":"","sources":["../../src/collectors/snapshot-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,8 +59,8 @@ export declare class ActivityEvaluator {
|
|
|
59
59
|
/**
|
|
60
60
|
* Ticks until score hits 0 with no further activity. With asymmetric decay
|
|
61
61
|
* this is no longer score/BASE_DECAY — simulate the fade (EMA cools too,
|
|
62
|
-
*
|
|
63
|
-
* i.e. at most maxTicks iterations.
|
|
62
|
+
* and the boost stops at the floor). Bounded by the score itself
|
|
63
|
+
* (decay ≥ 1), i.e. at most maxTicks iterations.
|
|
64
64
|
*/
|
|
65
65
|
private estimateIdleTicks;
|
|
66
66
|
/** Remove session state on close */
|
|
@@ -74,11 +74,18 @@ export class ActivityEvaluator {
|
|
|
74
74
|
// 6. Cap at the sensitivity ceiling
|
|
75
75
|
st.score = Math.min(st.score, tick.maxTicks);
|
|
76
76
|
}
|
|
77
|
-
// 7. Decay — asymmetric: idle ticks after dense work drain faster
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
// 7. Decay — asymmetric: idle ticks after dense work drain faster, but
|
|
78
|
+
// the boost only eats the earned part above the floor. Below the
|
|
79
|
+
// floor the fade is always 1/tick, so the "any touch buys
|
|
80
|
+
// floor-minutes" guarantee holds at any EMA.
|
|
81
|
+
const floorTicks = tick.maxTicks * STAMINA_FLOOR_RATIO;
|
|
82
|
+
if (!hasActivity && st.score > floorTicks) {
|
|
83
|
+
const boosted = BASE_DECAY + DECAY_BOOST * Math.min(1, st.ema);
|
|
84
|
+
st.score = Math.max(floorTicks, st.score - boosted);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
st.score = Math.max(0, st.score - BASE_DECAY);
|
|
88
|
+
}
|
|
82
89
|
// Build result for this session
|
|
83
90
|
const normalizedScore = tick.maxTicks > 0 ? st.score / tick.maxTicks : 0;
|
|
84
91
|
scores.set(tick.sessionId, {
|
|
@@ -86,7 +93,7 @@ export class ActivityEvaluator {
|
|
|
86
93
|
maxScore: tick.maxTicks,
|
|
87
94
|
normalizedScore,
|
|
88
95
|
ema: st.ema,
|
|
89
|
-
etaTicks: this.estimateIdleTicks(st),
|
|
96
|
+
etaTicks: this.estimateIdleTicks(st, floorTicks),
|
|
90
97
|
isIdleTimeout: st.score === 0 && !tick.ignoreIdleTimeout,
|
|
91
98
|
});
|
|
92
99
|
}
|
|
@@ -130,16 +137,18 @@ export class ActivityEvaluator {
|
|
|
130
137
|
/**
|
|
131
138
|
* Ticks until score hits 0 with no further activity. With asymmetric decay
|
|
132
139
|
* this is no longer score/BASE_DECAY — simulate the fade (EMA cools too,
|
|
133
|
-
*
|
|
134
|
-
* i.e. at most maxTicks iterations.
|
|
140
|
+
* and the boost stops at the floor). Bounded by the score itself
|
|
141
|
+
* (decay ≥ 1), i.e. at most maxTicks iterations.
|
|
135
142
|
*/
|
|
136
|
-
estimateIdleTicks(st) {
|
|
143
|
+
estimateIdleTicks(st, floorTicks) {
|
|
137
144
|
let score = st.score;
|
|
138
145
|
let ema = st.ema;
|
|
139
146
|
let ticks = 0;
|
|
140
147
|
while (score > 0) {
|
|
141
148
|
ema *= 1 - this.emaAlpha;
|
|
142
|
-
score
|
|
149
|
+
score = score > floorTicks
|
|
150
|
+
? Math.max(floorTicks, score - (BASE_DECAY + DECAY_BOOST * Math.min(1, ema)))
|
|
151
|
+
: score - BASE_DECAY;
|
|
143
152
|
ticks++;
|
|
144
153
|
}
|
|
145
154
|
return ticks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-evaluator.js","sourceRoot":"","sources":["../../src/core/activity-evaluator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAQxB;;;;;;GAMG;AACH,MAAM,OAAO,iBAAiB;IACX,QAAQ,CAAS;IACjB,cAAc,CAAS;IACvB,WAAW,CAAS;IACpB,gBAAgB,CAAS;IACzB,KAAK,GAA8B,IAAI,GAAG,EAAE,CAAC;IACtD,YAAY,GAAkB,IAAI,CAAC;IAE3C,YAAmB,eAAuB;QACxC,MAAM,cAAc,GAAG,kBAAkB,GAAG,EAAE,GAAG,eAAe,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,cAAc,CAAC;QACnC,MAAM,oBAAoB,GAAG,wBAAwB,GAAG,EAAE,GAAG,eAAe,CAAC;QAC7E,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,oBAAoB,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,oBAAoB,GAAG,eAAe,CAAC;QAC1D,IAAI,CAAC,gBAAgB,GAAG,wBAAwB,GAAG,eAAe,GAAG,EAAE,CAAC;IAC1E,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACI,eAAe,CAAC,KAA2B;QAChD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;QAE/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAEvE,uEAAuE;YACvE,8DAA8D;YAC9D,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;YAC9E,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;YAEtG,IAAI,WAAW,EAAE,CAAC;gBAChB,iBAAiB;gBACjB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,CAAC;gBAEnE,oBAAoB;gBACpB,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;gBAErD,iBAAiB;gBACjB,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAE3F,kBAAkB;gBAClB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC3B,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC;gBAC/B,CAAC;gBAED,oCAAoC;gBACpC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/C,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"activity-evaluator.js","sourceRoot":"","sources":["../../src/core/activity-evaluator.ts"],"names":[],"mappings":"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"}
|
package/dist/core/constants.d.ts
CHANGED
|
@@ -8,11 +8,29 @@ export declare const DAEMON_SCRIPT_TS = "daemon.ts";
|
|
|
8
8
|
export declare const DAEMON_SCRIPT_JS = "daemon.js";
|
|
9
9
|
export declare const DEFAULT_API_PORT = 9213;
|
|
10
10
|
export declare const API_VERSION = 6;
|
|
11
|
+
export declare const NPM_PACKAGE_NAME = "workday-daemon";
|
|
12
|
+
export declare const NPM_REGISTRY_LATEST_URL = "https://registry.npmjs.org/workday-daemon/latest";
|
|
13
|
+
/** Registry check timeout — fail fast, the next scheduled check will retry */
|
|
14
|
+
export declare const UPDATE_CHECK_TIMEOUT_MS = 5000;
|
|
15
|
+
/** npm install -g can be slow on cold cache / slow network — be generous */
|
|
16
|
+
export declare const NPM_INSTALL_TIMEOUT_MS = 180000;
|
|
17
|
+
/** Daemon checks the registry this often (~2-4 times per working day) */
|
|
18
|
+
export declare const UPDATE_CHECK_INTERVAL_HOURS = 6;
|
|
19
|
+
/** Random startup delay before the first scheduled check (thundering-herd hygiene) */
|
|
20
|
+
export declare const UPDATE_CHECK_JITTER_MINUTES = 10;
|
|
11
21
|
export declare const LOCK_EXTENSION = ".lock";
|
|
12
22
|
export declare const LOCK_STALE_MS = 10000;
|
|
13
23
|
export declare const GIT_BATCH_SEPARATOR = "---WORKDAY-SEP---";
|
|
14
24
|
export declare const GIT_MAX_BUFFER_BYTES: number;
|
|
15
25
|
export declare const MAX_ADJUSTMENT_MINUTES = 480;
|
|
26
|
+
export declare const ACTIVITY_ATTRIBUTE_KEY = "_Activity_";
|
|
27
|
+
export declare const DEFAULT_ACTIVITY = "Development";
|
|
28
|
+
export declare const DEFAULT_MANUAL_ACTIVITY = "Other";
|
|
29
|
+
export declare const WORK_ATTRIBUTES_CACHE_FILE = "work-attributes-cache.json";
|
|
30
|
+
export declare const FALLBACK_ACTIVITIES: ReadonlyArray<{
|
|
31
|
+
readonly value: string;
|
|
32
|
+
readonly name: string;
|
|
33
|
+
}>;
|
|
16
34
|
export declare const ISSUE_CACHE_FILE = "issue-cache.json";
|
|
17
35
|
export declare const PUSH_LOG_FILE = "push-log.json";
|
|
18
36
|
export declare const TEMPO_REPORT_DIR = "tempo";
|
|
@@ -49,6 +67,15 @@ export declare const FREQUENCY_GAIN_MAX = 2;
|
|
|
49
67
|
export declare const STAMINA_LINES_PER_MINUTE = 10;
|
|
50
68
|
/** Cap on the volume contribution per tick (reached at 20 changed lines at 30s ticks) */
|
|
51
69
|
export declare const VOLUME_GAIN_MAX = 4;
|
|
70
|
+
/**
|
|
71
|
+
* Line-equivalent granted per file whose content changed while its diff
|
|
72
|
+
* numbers stayed flat (rewrite-in-place: lines already differed from the
|
|
73
|
+
* base, so numstat can't see the churn). Detected via content hashing.
|
|
74
|
+
*/
|
|
75
|
+
export declare const IN_PLACE_CHURN_LINES = 8;
|
|
76
|
+
/** Churn scanner caps: don't read/hash absurd working sets */
|
|
77
|
+
export declare const CHURN_MAX_FILES = 100;
|
|
78
|
+
export declare const CHURN_MAX_FILE_BYTES: number;
|
|
52
79
|
/** "Free" score on commit (in seconds, converted to ticks) */
|
|
53
80
|
export declare const COMMIT_BONUS_SECONDS = 150;
|
|
54
81
|
/** Constant per-tick score drain */
|
package/dist/core/constants.js
CHANGED
|
@@ -10,7 +10,23 @@ export const DAEMON_SCRIPT_TS = 'daemon.ts';
|
|
|
10
10
|
export const DAEMON_SCRIPT_JS = 'daemon.js';
|
|
11
11
|
// ─── HTTP API ──────────────────────────────────────────────────────────
|
|
12
12
|
export const DEFAULT_API_PORT = 9213;
|
|
13
|
+
// Bump ONLY on breaking API changes (additive endpoints/fields don't count).
|
|
14
|
+
// Release ritual for a bump: ship the tray release first, let live trays
|
|
15
|
+
// pick it up (they re-check every 6h), THEN npm-publish the daemon —
|
|
16
|
+
// a tray with the old exact-match check meeting a newer apiVersion would
|
|
17
|
+
// reinstall-loop the daemon.
|
|
13
18
|
export const API_VERSION = 6;
|
|
19
|
+
// ─── Auto-update ────────────────────────────────────────────────────────
|
|
20
|
+
export const NPM_PACKAGE_NAME = 'workday-daemon';
|
|
21
|
+
export const NPM_REGISTRY_LATEST_URL = `https://registry.npmjs.org/${NPM_PACKAGE_NAME}/latest`;
|
|
22
|
+
/** Registry check timeout — fail fast, the next scheduled check will retry */
|
|
23
|
+
export const UPDATE_CHECK_TIMEOUT_MS = 5_000;
|
|
24
|
+
/** npm install -g can be slow on cold cache / slow network — be generous */
|
|
25
|
+
export const NPM_INSTALL_TIMEOUT_MS = 180_000;
|
|
26
|
+
/** Daemon checks the registry this often (~2-4 times per working day) */
|
|
27
|
+
export const UPDATE_CHECK_INTERVAL_HOURS = 6;
|
|
28
|
+
/** Random startup delay before the first scheduled check (thundering-herd hygiene) */
|
|
29
|
+
export const UPDATE_CHECK_JITTER_MINUTES = 10;
|
|
14
30
|
// ─── File locking ──────────────────────────────────────────────────────
|
|
15
31
|
export const LOCK_EXTENSION = '.lock';
|
|
16
32
|
export const LOCK_STALE_MS = 10_000;
|
|
@@ -19,6 +35,32 @@ export const GIT_BATCH_SEPARATOR = '---WORKDAY-SEP---';
|
|
|
19
35
|
export const GIT_MAX_BUFFER_BYTES = 10 * 1024 * 1024;
|
|
20
36
|
// ─── Budget / Manual adjustment ─────────────────────────────────────────
|
|
21
37
|
export const MAX_ADJUSTMENT_MINUTES = 480;
|
|
38
|
+
// ─── Manual entry / Activity types ──────────────────────────────────────
|
|
39
|
+
export const ACTIVITY_ATTRIBUTE_KEY = '_Activity_';
|
|
40
|
+
export const DEFAULT_ACTIVITY = 'Development'; // sessions (value == name)
|
|
41
|
+
export const DEFAULT_MANUAL_ACTIVITY = 'Other'; // manual entry, when unspecified
|
|
42
|
+
export const WORK_ATTRIBUTES_CACHE_FILE = 'work-attributes-cache.json';
|
|
43
|
+
// Fallback _Activity_ values (value/name) used only when no Tempo token /
|
|
44
|
+
// fetch fails. Mirrors the live instance — refreshed into cache on first
|
|
45
|
+
// successful GET /4/work-attributes.
|
|
46
|
+
export const FALLBACK_ACTIVITIES = [
|
|
47
|
+
{ value: 'AutomationPerformanceTesting', name: 'Automation/Performance Testing' },
|
|
48
|
+
{ value: 'Bugfixing', name: 'Bugfixing' },
|
|
49
|
+
{ value: 'CodeReview', name: 'Code Review' },
|
|
50
|
+
{ value: 'CodeReviewFixes', name: 'Code Review Fixes' },
|
|
51
|
+
{ value: 'DesignAnalysis', name: 'Design/Analysis' },
|
|
52
|
+
{ value: 'Development', name: 'Development' },
|
|
53
|
+
{ value: 'EnvironmentSetup', name: 'Environment Setup' },
|
|
54
|
+
{ value: 'Estimation', name: 'Estimation' },
|
|
55
|
+
{ value: 'IntegrationTesting', name: 'Integration Testing' },
|
|
56
|
+
{ value: 'Merge', name: 'Merge' },
|
|
57
|
+
{ value: 'Other', name: 'Other' },
|
|
58
|
+
{ value: "QAlead'sactivities", name: "QA lead's activities" },
|
|
59
|
+
{ value: 'PM', name: 'PM' },
|
|
60
|
+
{ value: 'TechnicalControl', name: 'Technical Control' },
|
|
61
|
+
{ value: 'Testing', name: 'Testing' },
|
|
62
|
+
{ value: 'TestReview', name: 'Test Review' },
|
|
63
|
+
];
|
|
22
64
|
// ─── Push / Tempo ───────────────────────────────────────────────────────
|
|
23
65
|
export const ISSUE_CACHE_FILE = 'issue-cache.json';
|
|
24
66
|
export const PUSH_LOG_FILE = 'push-log.json';
|
|
@@ -61,6 +103,15 @@ export const FREQUENCY_GAIN_MAX = 2;
|
|
|
61
103
|
export const STAMINA_LINES_PER_MINUTE = 10;
|
|
62
104
|
/** Cap on the volume contribution per tick (reached at 20 changed lines at 30s ticks) */
|
|
63
105
|
export const VOLUME_GAIN_MAX = 4;
|
|
106
|
+
/**
|
|
107
|
+
* Line-equivalent granted per file whose content changed while its diff
|
|
108
|
+
* numbers stayed flat (rewrite-in-place: lines already differed from the
|
|
109
|
+
* base, so numstat can't see the churn). Detected via content hashing.
|
|
110
|
+
*/
|
|
111
|
+
export const IN_PLACE_CHURN_LINES = 8;
|
|
112
|
+
/** Churn scanner caps: don't read/hash absurd working sets */
|
|
113
|
+
export const CHURN_MAX_FILES = 100;
|
|
114
|
+
export const CHURN_MAX_FILE_BYTES = 2 * 1024 * 1024;
|
|
64
115
|
/** "Free" score on commit (in seconds, converted to ticks) */
|
|
65
116
|
export const COMMIT_BONUS_SECONDS = 150;
|
|
66
117
|
/** Constant per-tick score drain */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,6EAA6E;AAC7E,yEAAyE;AACzE,qEAAqE;AACrE,yEAAyE;AACzE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAE7B,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AACjD,MAAM,CAAC,MAAM,uBAAuB,GAAG,8BAA8B,gBAAgB,SAAS,CAAC;AAC/F,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAC9C,yEAAyE;AACzE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,sFAAsF;AACtF,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAErD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AACnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC,CAAQ,2BAA2B;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,CAAO,iCAAiC;AACvF,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AACvE,0EAA0E;AAC1E,yEAAyE;AACzE,qCAAqC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAqE;IACnG,EAAE,KAAK,EAAE,8BAA8B,EAAE,IAAI,EAAE,gCAAgC,EAAE;IACjF,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IACzC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;IAC5C,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACvD,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,iBAAiB,EAAE;IACpD,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE;IAC7C,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACxD,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE;IAC3C,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,qBAAqB,EAAE;IAC5D,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;IACjC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;IACjC,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,sBAAsB,EAAE;IAC7D,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;IAC3B,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACxD,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;IACrC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;CAC7C,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC,2EAA2E;AAC3E,8CAA8C;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,yFAAyF;AACzF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AACnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACpD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACxC,oCAAoC;AACpC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAE7B,4EAA4E;AAC5E,2EAA2E;AAC3E,8DAA8D;AAC9D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG,EAAQ,EAAE;IACb,MAAM,EAAK,EAAE;IACb,OAAO,EAAI,EAAE;IACb,SAAS,EAAE,EAAE;CACL,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC"}
|