@ethlete/agent-rules 0.1.0-next.14 → 0.1.0-next.16

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 (52) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/README.md +36 -2
  3. package/THIRD-PARTY-LICENSES.md +35 -0
  4. package/content/hooks/context-warning.py +450 -112
  5. package/content/hooks/subagent-model-policy.py +185 -0
  6. package/content/rules/subagent-models.md +29 -0
  7. package/content/skills/codex-subagent/SKILL.md +90 -0
  8. package/content/skills/codex-subagent/codex-agent.mjs +229 -0
  9. package/content/skills/design-exploration/SKILL.md +203 -0
  10. package/content/skills/design-exploration/check-story.mjs +139 -0
  11. package/content/skills/design-exploration/shoot-template.mjs +61 -0
  12. package/content/skills/domain-modeling/ADR-FORMAT.md +47 -0
  13. package/content/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  14. package/content/skills/domain-modeling/SKILL.md +80 -0
  15. package/content/skills/grill-with-docs/SKILL.md +13 -0
  16. package/content/skills/grilling/SKILL.md +34 -0
  17. package/content/skills/handoff/SKILL.md +69 -4
  18. package/content/skills/rxjs-signals/SKILL.md +4 -3
  19. package/content/skills/sdk-update/SKILL.md +2 -1
  20. package/content/skills/styleguide/lint-rule-lookup.md +1 -0
  21. package/content/skills/timetrack/SKILL.md +190 -10
  22. package/package.json +1 -1
  23. package/src/index.js +2 -1
  24. package/src/index.js.map +1 -1
  25. package/src/lib/frontmatter.d.ts +2 -0
  26. package/src/lib/frontmatter.js +2 -1
  27. package/src/lib/frontmatter.js.map +1 -1
  28. package/src/lib/git-flow/config.js +1 -1
  29. package/src/lib/git-flow/config.js.map +1 -1
  30. package/src/lib/git.d.ts +37 -0
  31. package/src/lib/git.js +77 -1
  32. package/src/lib/git.js.map +1 -1
  33. package/src/lib/index.d.ts +1 -0
  34. package/src/lib/index.js +1 -0
  35. package/src/lib/index.js.map +1 -1
  36. package/src/lib/plain-text.d.ts +9 -0
  37. package/src/lib/plain-text.js +22 -0
  38. package/src/lib/plain-text.js.map +1 -0
  39. package/src/lib/targets/claude-hooks.js +2 -1
  40. package/src/lib/targets/claude-hooks.js.map +1 -1
  41. package/src/lib/targets/codex-hooks.js +2 -1
  42. package/src/lib/targets/codex-hooks.js.map +1 -1
  43. package/src/lib/targets/hooks-shared.d.ts +22 -1
  44. package/src/lib/targets/hooks-shared.js +42 -9
  45. package/src/lib/targets/hooks-shared.js.map +1 -1
  46. package/src/lib/targets/shared.js +1 -0
  47. package/src/lib/targets/shared.js.map +1 -1
  48. package/src/lib/timetrack-command.js +449 -20
  49. package/src/lib/timetrack-command.js.map +1 -1
  50. package/src/lib/timetrack.d.ts +241 -0
  51. package/src/lib/timetrack.js +83 -2
  52. package/src/lib/timetrack.js.map +1 -1
@@ -2,7 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.timetrackCommand = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const fs_1 = require("fs");
5
6
  const timetrack_1 = require("./timetrack");
7
+ const plain_text_1 = require("./plain-text");
8
+ const git_1 = require("./git");
6
9
  const FLAGS_WITH_VALUE = [
7
10
  '--root',
8
11
  '--project',
@@ -15,7 +18,20 @@ const FLAGS_WITH_VALUE = [
15
18
  '--issue',
16
19
  '--minutes',
17
20
  '--at',
21
+ '--out',
22
+ '--day',
23
+ '--from',
24
+ '--to',
25
+ '--state',
26
+ '--remove',
27
+ '--split',
28
+ '--branch',
29
+ '--paths',
30
+ '--claim',
31
+ '--author',
18
32
  ];
33
+ /** Every human-readable line, with anything a terminal would act on printed rather than obeyed. */
34
+ const say = (line) => console.log((0, plain_text_1.plain)(line));
19
35
  const positionalArgs = (args) => args.filter((entry, index) => { var _a; return !entry.startsWith('--') && !FLAGS_WITH_VALUE.includes((_a = args[index - 1]) !== null && _a !== void 0 ? _a : ''); });
20
36
  const flagValue = (args, flag) => {
21
37
  const index = args.indexOf(flag);
@@ -47,11 +63,283 @@ const issueLine = (issue) => [
47
63
  ...(issue.parentKey ? [`under ${issue.parentKey}`] : []),
48
64
  ...(issue.subject ? [`subject ${issue.subject}`] : []),
49
65
  ].join(' ');
66
+ const DAY = /^\d{4}-\d{2}-\d{2}$/;
67
+ const pad = (value) => String(value).padStart(2, '0');
68
+ const today = () => {
69
+ const now = new Date();
70
+ return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}`;
71
+ };
72
+ const countByKind = (events) => {
73
+ var _a, _b;
74
+ const counts = new Map();
75
+ for (const event of events) {
76
+ const kind = String((_a = event.kind) !== null && _a !== void 0 ? _a : 'unknown');
77
+ counts.set(kind, ((_b = counts.get(kind)) !== null && _b !== void 0 ? _b : 0) + 1);
78
+ }
79
+ return [...counts].sort((left, right) => right[1] - left[1]);
80
+ };
81
+ const describeRule = (rule) => {
82
+ var _a, _b;
83
+ const where = rule.appId
84
+ ? `app ${rule.appId}`
85
+ : `${(_a = rule.repoPath) !== null && _a !== void 0 ? _a : 'nowhere'}${rule.branch ? ` @ ${rule.branch}` : ''}`;
86
+ if (rule.donates)
87
+ return `${where} → donate`;
88
+ if (rule.standInId)
89
+ return `${where} → stand-in ${rule.standInId}`;
90
+ return `${where} → ${(_b = rule.issueKey) !== null && _b !== void 0 ? _b : 'no issue'}`;
91
+ };
92
+ const DAY_MS = 24 * 60 * 60000;
93
+ /**
94
+ * The checkout an open placeholder holds at the wider grain, or nothing when it names a branch.
95
+ *
96
+ * Two separate things stop a branch-grained placeholder opening, and either alone is enough, so both
97
+ * are read here. The record itself blocks when it was opened for a checkout and names no branch. A
98
+ * rule blocks when it names the placeholder for a checkout and names no branch — and a record opened
99
+ * before the grain was the branch has no `openedFor` at all, so the rule is the only side that shows
100
+ * it. Until the placeholder goes, the checkout stays at the wider grain.
101
+ */
102
+ const wholeCheckoutHeld = (options) => {
103
+ var _a;
104
+ const { standIn } = options;
105
+ if (standIn.state !== 'open')
106
+ return undefined;
107
+ if (standIn.openedForBranch)
108
+ return undefined;
109
+ if (standIn.openedFor)
110
+ return standIn.openedFor;
111
+ return (_a = options.rules.find((rule) => rule.standInId === standIn.id && rule.repoPath && !rule.branch)) === null || _a === void 0 ? void 0 : _a.repoPath;
112
+ };
113
+ /**
114
+ * The days a delete of this record would leave unnamed, today left out.
115
+ *
116
+ * A delete takes the rule with it, and only the day the app next reviews gets a new placeholder. Any
117
+ * earlier day the record covered reads as unnamed from then on, with nothing left to say what it was.
118
+ */
119
+ const strandedDays = (id) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
120
+ const standIn = (yield (0, timetrack_1.timetrackStandIns)()).find((entry) => entry.id === id);
121
+ const now = today();
122
+ return (standIn === null || standIn === void 0 ? void 0 : standIn.state) === 'open' ? standIn.days.filter((day) => day !== now).sort() : [];
123
+ });
124
+ /**
125
+ * Where a placeholder stands for its work: the checkout, then the narrowest thing it was cut to.
126
+ *
127
+ * Two of them may carry one name and mean two pieces of work, because a spec track and the branch
128
+ * that implements it are both called after the feature. One the user wrote by hand names no
129
+ * checkout, and this answers nothing for it.
130
+ */
131
+ const standInWhere = (standIn) => {
132
+ var _a;
133
+ if (!standIn.openedFor)
134
+ return '';
135
+ const checkout = (_a = standIn.openedFor.split('/').filter(Boolean).pop()) !== null && _a !== void 0 ? _a : standIn.openedFor;
136
+ if (standIn.openedForWorkPath)
137
+ return `${checkout}, ${standIn.openedForWorkPath}`;
138
+ return standIn.openedForBranch ? `${checkout}, on ${standIn.openedForBranch}` : checkout;
139
+ };
140
+ const describeStandIn = (options) => {
141
+ const { standIn } = options;
142
+ const days = Math.floor((Date.now() - standIn.createdAtMs) / DAY_MS);
143
+ const project = standIn.projectKey ? ` in ${standIn.projectKey}` : '';
144
+ const where = standInWhere(standIn);
145
+ const held = wholeCheckoutHeld(options);
146
+ const lines = [
147
+ where ? `\n ${where}` : '',
148
+ held ? `\n covers all of ${held}, so no branch of it gets one of its own` : '',
149
+ ];
150
+ return `${standIn.name}${project} ${days}d old, ${standIn.days.length} day(s) of work${lines.join('')}`;
151
+ };
152
+ const HOUR_MS = 60 * 60000;
153
+ const hours = (ms) => `${(ms / HOUR_MS).toFixed(1)}h`;
154
+ const DECLINE_LINES = {
155
+ 'already-named': 'a rule already names an issue for it',
156
+ 'named-by-stand-in': 'a rule names a placeholder for it, not an issue yet',
157
+ 'no-project-link': 'no project link covers it',
158
+ 'no-history': 'the project holds no Tempo worklog in the span',
159
+ 'project-too-small': 'the project holds too little time to read a habit from',
160
+ 'too-few-days': 'the leading issue spans too few days',
161
+ 'share-too-low': 'the leading issue holds too small a share of the project',
162
+ };
163
+ const describeDecline = (decline) => {
164
+ var _a, _b, _c, _d;
165
+ const measured = decline.issueKey
166
+ ? ` (${decline.issueKey} ${hours((_a = decline.loggedMs) !== null && _a !== void 0 ? _a : 0)} of ${hours((_b = decline.projectMs) !== null && _b !== void 0 ? _b : 0)}, ${Math.round(((_c = decline.share) !== null && _c !== void 0 ? _c : 0) * 100)}%, ${(_d = decline.days) !== null && _d !== void 0 ? _d : 0}d)`
167
+ : '';
168
+ return `${decline.repoPath} — ${DECLINE_LINES[decline.reason]}${measured}`;
169
+ };
170
+ const MINUTE_MS = 60000;
171
+ const clock = (ms) => new Date(ms).toTimeString().slice(0, 5);
172
+ const rowLine = (row) => {
173
+ var _a, _b, _c;
174
+ return [
175
+ row.id,
176
+ `${clock(row.fromMs)}-${clock(row.toMs)}`,
177
+ `${Math.round(row.durationMs / MINUTE_MS)}m`,
178
+ (_b = (_a = row.issueKey) !== null && _a !== void 0 ? _a : row.standInId) !== null && _b !== void 0 ? _b : 'unnamed',
179
+ row.state,
180
+ ...(row.edited ? ['edited'] : []),
181
+ ...(row.hidden ? ['hidden'] : []),
182
+ (_c = row.laneKey) !== null && _c !== void 0 ? _c : 'no lane',
183
+ ].join(' ');
184
+ };
185
+ /** `--from` and `--to` take anything `Date` reads, so a caller may pass an ISO instant or a clock. */
186
+ const instantOf = (flag, raw) => {
187
+ const at = new Date(raw);
188
+ if (Number.isNaN(at.getTime()))
189
+ throw new Error(`${flag} takes a date, not ${raw}.`);
190
+ return at.getTime();
191
+ };
192
+ /** Which edits the flags name. `--from` with `--to` is the one pair that names a single change. */
193
+ const namedEdits = (argv) => {
194
+ const named = argv.includes('--from') || argv.includes('--to') ? ['--from/--to'] : [];
195
+ return [
196
+ ...named,
197
+ ...['--issue', '--description', '--state', '--hide', '--show', '--reset'].filter((flag) => argv.includes(flag)),
198
+ ];
199
+ };
200
+ /**
201
+ * The one edit the flags state, or a refusal naming what they said instead.
202
+ *
203
+ * One edit per call, deliberately. A caller that means two changes to one row says so twice, and a
204
+ * flag combination nobody meant can then never be read as a third thing.
205
+ */
206
+ const editOf = (options) => {
207
+ const { argv, rowId } = options;
208
+ const from = flagValue(argv, '--from');
209
+ const to = flagValue(argv, '--to');
210
+ const issueKey = flagValue(argv, '--issue');
211
+ const description = flagValue(argv, '--description');
212
+ const state = flagValue(argv, '--state');
213
+ const named = namedEdits(argv);
214
+ if (named.length > 1) {
215
+ throw new Error(`One edit per call, and these name ${named.length}: ${named.join(', ')}. Run the command once for each.`);
216
+ }
217
+ if (from && to)
218
+ return { kind: 'range', rowId, fromMs: instantOf('--from', from), toMs: instantOf('--to', to) };
219
+ if (from || to)
220
+ throw new Error('Moving a row takes both --from and --to.');
221
+ if (issueKey)
222
+ return { kind: 'issue', rowId, issueKey: issueKey.toUpperCase() };
223
+ if (description !== undefined)
224
+ return { kind: 'description', rowId, description };
225
+ if (state) {
226
+ if (state !== 'accepted' && state !== 'rejected')
227
+ throw new Error(`--state takes accepted or rejected, not ${state}.`);
228
+ return { kind: 'state', rowId, state };
229
+ }
230
+ if (argv.includes('--hide'))
231
+ return { kind: 'hidden', rowId, hidden: true };
232
+ if (argv.includes('--show'))
233
+ return { kind: 'hidden', rowId, hidden: false };
234
+ if (argv.includes('--reset'))
235
+ return { kind: 'reset', rowId };
236
+ throw new Error('Pass one of --from with --to, --issue, --description, --state, --hide, --show or --reset.');
237
+ };
238
+ /**
239
+ * Writes an export nobody but its owner can read.
240
+ *
241
+ * A day's events are the rawest personal record the app holds, and the recommended destination is a
242
+ * shared temporary directory. The file therefore carries mode `0600` from the moment it exists, rather
243
+ * than whatever the umask leaves. `lstatSync` reads the name itself, so a symlink somebody else planted
244
+ * is refused rather than written through, and exclusive creation refuses one that arrives after the
245
+ * check.
246
+ */
247
+ const writeExport = (options) => {
248
+ const { path, data, overwrite } = options;
249
+ const found = (0, fs_1.lstatSync)(path, { throwIfNoEntry: false });
250
+ if (found && !overwrite) {
251
+ throw new Error(`${path} already exists. Pass --overwrite to replace it, or name another file.`);
252
+ }
253
+ if (found && !found.isFile())
254
+ throw new Error(`${path} is not a regular file, so it is not overwritten.`);
255
+ if (found)
256
+ (0, fs_1.unlinkSync)(path);
257
+ const handle = (0, fs_1.openSync)(path, 'wx', 0o600);
258
+ try {
259
+ (0, fs_1.writeSync)(handle, data);
260
+ }
261
+ finally {
262
+ (0, fs_1.closeSync)(handle);
263
+ }
264
+ };
265
+ /** `--json` answers data, never a terminal-formatted line, so it is printed as it parses. */
50
266
  const printed = (value, json) => {
51
267
  if (json)
52
268
  console.log(JSON.stringify(value, null, 2));
53
269
  return 0;
54
270
  };
271
+ /**
272
+ * Cuts a placeholder that covered a whole checkout into one per directory its commits worked in.
273
+ *
274
+ * The directories are read here rather than in the app: a commit collected before Timetrack recorded
275
+ * file paths carries none in the store, and that is every commit such a placeholder covers. Without
276
+ * `--force` the plan is printed and nothing is written.
277
+ */
278
+ const splitStandIn = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
279
+ var _a, _b, _c, _d;
280
+ const { id, argv, json } = options;
281
+ const standIn = (yield (0, timetrack_1.timetrackStandIns)()).find((entry) => entry.id === id);
282
+ if (!standIn) {
283
+ say(`Timetrack holds no stand-in ${id}.`);
284
+ return 1;
285
+ }
286
+ const repoPath = flagValue(argv, '--repo');
287
+ const checkout = (_a = standIn.openedFor) !== null && _a !== void 0 ? _a : repoPath;
288
+ if (!checkout) {
289
+ say(`${id} names no checkout, so nothing says where its directories are. Name one with --repo <dir>.`);
290
+ return 1;
291
+ }
292
+ const branch = (_b = flagValue(argv, '--branch')) !== null && _b !== void 0 ? _b : (0, git_1.currentBranch)(checkout);
293
+ const author = (_c = flagValue(argv, '--author')) !== null && _c !== void 0 ? _c : (0, git_1.commitAuthorOf)(checkout);
294
+ const commits = (0, git_1.commitPathsOnDays)(Object.assign({ root: checkout, days: standIn.days }, (author ? { author } : {})));
295
+ if (!commits.length) {
296
+ say(`No commit of ${checkout} falls on ${standIn.days.join(', ')}, so nothing says how to split it.`);
297
+ return 1;
298
+ }
299
+ const paths = ((_d = flagValue(argv, '--paths')) !== null && _d !== void 0 ? _d : '')
300
+ .split(',')
301
+ .map((path) => path.trim())
302
+ .filter(Boolean);
303
+ const claim = flagValue(argv, '--claim');
304
+ const apply = argv.includes('--force');
305
+ const projectRoots = (0, git_1.projectRootsOf)(checkout);
306
+ const answer = yield (0, timetrack_1.timetrackSplitStandIn)({
307
+ id,
308
+ branch,
309
+ repoPath,
310
+ commits,
311
+ projectRoots,
312
+ paths,
313
+ claim,
314
+ apply,
315
+ });
316
+ if (!json) {
317
+ say(`${standIn.name} ${standIn.days.length} day(s), branch ${branch}`);
318
+ say(`Directories the commits name (${answer.candidates.length})`);
319
+ answer.candidates.forEach((piece) => say(` ${piece.workPath} ${piece.commits}c ${piece.days.join(', ')}`));
320
+ if (!answer.pieces.length) {
321
+ say('None of them is an automatic grain. Pick the pieces with --paths <dir>,<dir>.');
322
+ }
323
+ else if (apply) {
324
+ say(`Split into ${answer.pieces.length}, and the rule that named it rewritten one per directory.`);
325
+ }
326
+ else {
327
+ say(`Would write ${answer.pieces.map((piece) => piece.workPath).join(', ')}. Pass --force to carry it out.`);
328
+ }
329
+ if (claim) {
330
+ const covered = new Set(answer.pieces.flatMap((piece) => piece.days));
331
+ const left = standIn.days.filter((day) => !covered.has(day));
332
+ say(left.length
333
+ ? `${claim} takes ${left.join(', ')}.`
334
+ : `Every day already has a directory, so ${claim} takes none.`);
335
+ }
336
+ else if (answer.remainder.length) {
337
+ say(`No commit claims ${answer.remainder.join(', ')}, so those days go back to unnamed.`);
338
+ say('Name them in the day review, or re-run with --claim <dir> to give them a directory.');
339
+ }
340
+ }
341
+ return printed(answer, json);
342
+ });
55
343
  const USAGE = `ethlete-agents timetrack — ask the running Timetrack app about Jira
56
344
 
57
345
  The app holds this machine's Jira credentials, so no repository needs a token of its own.
@@ -64,6 +352,19 @@ The app holds this machine's Jira credentials, so no repository needs a token of
64
352
  timetrack create --summary … File a new issue with the instance's own ticket settings
65
353
  timetrack log --issue <KEY> --minutes <n>
66
354
  Add a row nothing observed to the day it belongs to
355
+ timetrack day [YYYY-MM-DD] The evidence a day holds, which the encrypted store hides otherwise
356
+ timetrack rows [YYYY-MM-DD] The rows the day drew, with the ids an edit names them by
357
+ timetrack edit <row-id> … Change one row of a day: its times, its name, its note or its state
358
+ timetrack rules The rules that name a day's work: attribution, project links, apps
359
+ timetrack standins The names the user gave work Jira does not hold yet, and their age
360
+ timetrack standins --remove <id>
361
+ Delete one placeholder, and the rule that named it
362
+ timetrack standins --rename <id> --name <text>
363
+ Give one placeholder another name, keeping its days and its rules
364
+ timetrack standins --split <id> [--repo <dir>] [--paths <dir>,<dir>] [--claim <dir>] [--author <email>]
365
+ [--force]
366
+ Cut one that covered a whole checkout into one per directory
367
+ timetrack naming [YYYY-MM-DD] Which checkouts the day offers a name for, and why the rest do not
67
368
 
68
369
  Options for search
69
370
  --project <KEY> Search this project instead of the picked ones
@@ -84,6 +385,21 @@ Options for log
84
385
  --at <date> When the work started (default: now)
85
386
  --description <text>
86
387
 
388
+ Options for day
389
+ --out <path> Write the raw answer to a new file, readable by you alone
390
+ --overwrite Replace the file --out names, which is refused otherwise
391
+
392
+ Options for edit — pass exactly one change
393
+ --day <YYYY-MM-DD> The day the row is on (default: today)
394
+ --from <date> --to <date>
395
+ Move the row, or drag one of its ends
396
+ --issue <KEY> Name the row
397
+ --description <text>
398
+ --state <accepted|rejected>
399
+ --hide Take it off the timeline
400
+ --show Put it back
401
+ --reset Give the app's own row back
402
+
87
403
  Options everywhere
88
404
  --json Print the raw answer instead of lines
89
405
  `;
@@ -95,27 +411,29 @@ Options everywhere
95
411
  * one per checkout.
96
412
  */
97
413
  const timetrackCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
414
+ var _a;
98
415
  const { root, argv } = options;
99
416
  const [subcommand, value] = positionalArgs(argv);
100
417
  const json = argv.includes('--json');
101
418
  if (subcommand === 'status') {
102
419
  const status = yield (0, timetrack_1.timetrackStatus)();
103
420
  if (!json) {
104
- console.log(`Timetrack ${(0, timetrack_1.timetrackDiscoveryPath)()}`);
105
- console.log(` jira ${status.jiraReady ? 'configured' : 'not configured — set it in Timetrack Settings'}`);
106
- console.log(` projects ${status.projects.map((project) => project.key).join(', ') || '— none picked'}`);
107
- console.log(` subject ${status.subjectField || '— no field configured, the summary is used'}`);
421
+ say(`Timetrack ${(0, timetrack_1.timetrackDiscoveryPath)()}`);
422
+ say(` jira ${status.jiraReady ? 'configured' : 'not configured — set it in Timetrack Settings'}`);
423
+ say(` tempo ${status.tempoReady ? 'configured' : 'not configured — no worklog history is read'}`);
424
+ say(` projects ${status.projects.map((project) => project.key).join(', ') || '— none picked'}`);
425
+ say(` subject ${status.subjectField || '— no field configured, the summary is used'}`);
108
426
  }
109
427
  return printed(status, json);
110
428
  }
111
429
  if (subcommand === 'instance') {
112
430
  const instance = yield (0, timetrack_1.timetrackInstance)();
113
431
  if (!json) {
114
- console.log('Levels, highest first');
115
- instance.levels.forEach((level) => console.log(` ${level.hierarchyLevel} ${level.typeNames.join(', ')}`));
116
- console.log(`A parent can be named by ${instance.suggestedParenting}`);
117
- console.log(`Branch-subject candidates (${instance.subjectFieldCandidates.length})`);
118
- instance.subjectFieldCandidates.forEach((field) => console.log(` ${field.id} ${field.name}`));
432
+ say('Levels, highest first');
433
+ instance.levels.forEach((level) => say(` ${level.hierarchyLevel} ${level.typeNames.join(', ')}`));
434
+ say(`A parent can be named by ${instance.suggestedParenting}`);
435
+ say(`Branch-subject candidates (${instance.subjectFieldCandidates.length})`);
436
+ instance.subjectFieldCandidates.forEach((field) => say(` ${field.id} ${field.name}`));
119
437
  }
120
438
  return printed(instance, json);
121
439
  }
@@ -124,7 +442,7 @@ const timetrackCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0,
124
442
  throw new Error('Pass an issue key, e.g. `ethlete-agents timetrack issue FIP-2177`.');
125
443
  const issue = yield (0, timetrack_1.timetrackIssue)(value);
126
444
  if (!json)
127
- console.log(issueLine(issue));
445
+ say(issueLine(issue));
128
446
  return printed(issue, json);
129
447
  }
130
448
  if (subcommand === 'search') {
@@ -136,8 +454,8 @@ const timetrackCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0,
136
454
  });
137
455
  if (!json) {
138
456
  if (issues.length === 0)
139
- console.log('No issue matches.');
140
- issues.forEach((issue) => console.log(issueLine(issue)));
457
+ say('No issue matches.');
458
+ issues.forEach((issue) => say(issueLine(issue)));
141
459
  }
142
460
  return printed(issues, json);
143
461
  }
@@ -146,14 +464,14 @@ const timetrackCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0,
146
464
  if (!json) {
147
465
  const where = found.inherited ? ' (from a directory above it)' : '';
148
466
  if (found.private)
149
- console.log(`${found.repoPath} is marked private — work there is logged nowhere${where}.`);
467
+ say(`${found.repoPath} is marked private — work there is logged nowhere${where}.`);
150
468
  else if (found.projectKey)
151
- console.log(`${found.repoPath} logs into ${found.projectKey}${where}.`);
469
+ say(`${found.repoPath} logs into ${found.projectKey}${where}.`);
152
470
  else if (found.suggestedProjectKey) {
153
- console.log(`${found.repoPath} is linked to nothing. Its name suggests ${found.suggestedProjectKey}.`);
471
+ say(`${found.repoPath} is linked to nothing. Its name suggests ${found.suggestedProjectKey}.`);
154
472
  }
155
473
  else
156
- console.log(`${found.repoPath} is linked to no project. Link it in Timetrack Settings.`);
474
+ say(`${found.repoPath} is linked to no project. Link it in Timetrack Settings.`);
157
475
  }
158
476
  return printed(found, json);
159
477
  }
@@ -170,7 +488,7 @@ const timetrackCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0,
170
488
  subject: flagValue(argv, '--subject'),
171
489
  });
172
490
  if (!json)
173
- console.log(`${issue.key} ${summary}`);
491
+ say(`${issue.key} ${summary}`);
174
492
  return printed(issue, json);
175
493
  }
176
494
  if (subcommand === 'log') {
@@ -187,12 +505,123 @@ const timetrackCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0,
187
505
  durationMs: Math.round(minutes * 60000),
188
506
  });
189
507
  if (!json) {
190
- console.log(`${worklog.issueKey} ${minutes}m on ${worklog.day}`);
191
- console.log('It is a row on the day, not a Tempo entry — review the day in Timetrack, then sync it.');
508
+ say(`${worklog.issueKey} ${minutes}m on ${worklog.day}`);
509
+ say('It is a row on the day, not a Tempo entry — review the day in Timetrack, then sync it.');
192
510
  }
193
511
  return printed(worklog, json);
194
512
  }
195
- console.log(USAGE);
513
+ if (subcommand === 'day') {
514
+ const day = value !== null && value !== void 0 ? value : today();
515
+ if (!DAY.test(day))
516
+ throw new Error(`Pass a day as YYYY-MM-DD, not ${day}.`);
517
+ const found = yield (0, timetrack_1.timetrackDayEvents)(day);
518
+ const out = flagValue(argv, '--out');
519
+ if (out) {
520
+ writeExport({ path: out, data: JSON.stringify(found), overwrite: argv.includes('--overwrite') });
521
+ say(`${found.day} ${found.events.length} events written to ${out}, readable by you alone`);
522
+ say('It holds the day as it was observed: window titles, paths and messages. Delete it when you are done.');
523
+ return 0;
524
+ }
525
+ if (!json) {
526
+ say(`${found.day} ${found.events.length} events`);
527
+ countByKind(found.events).forEach(([kind, count]) => say(` ${kind} ${count}`));
528
+ say('Pass --out <path> to write the events themselves, which are far too many to read.');
529
+ }
530
+ return printed(found, json);
531
+ }
532
+ if (subcommand === 'rows') {
533
+ const day = value !== null && value !== void 0 ? value : today();
534
+ if (!DAY.test(day))
535
+ throw new Error(`Pass a day as YYYY-MM-DD, not ${day}.`);
536
+ const found = yield (0, timetrack_1.timetrackDayRows)(day);
537
+ if (!json) {
538
+ say(`${found.day} ${hours(found.loggedMs)} logged of a ${hours(found.targetMs)} target`);
539
+ found.rows.forEach((row) => say(` ${rowLine(row)}`));
540
+ found.hidden.forEach((row) => say(` ${rowLine(row)}`));
541
+ found.warnings.forEach((warning) => say(` ! ${warning.kind}: ${warning.detail}`));
542
+ }
543
+ return printed(found, json);
544
+ }
545
+ if (subcommand === 'edit') {
546
+ const day = (_a = flagValue(argv, '--day')) !== null && _a !== void 0 ? _a : today();
547
+ if (!value)
548
+ throw new Error('Pass the row id to edit, as `timetrack rows` prints it.');
549
+ if (!DAY.test(day))
550
+ throw new Error(`Pass a day as YYYY-MM-DD, not ${day}.`);
551
+ const edited = yield (0, timetrack_1.timetrackEditDay)({ day, edits: [editOf({ argv, rowId: value })] });
552
+ if (!json) {
553
+ say(`${edited.day} ${edited.applied} of 1 edit landed`);
554
+ edited.rows.forEach((row) => say(` ${rowLine(row)}`));
555
+ edited.warnings.forEach((warning) => say(` ! ${warning.kind}: ${warning.detail}`));
556
+ }
557
+ return printed(edited, json);
558
+ }
559
+ if (subcommand === 'rules') {
560
+ const rules = yield (0, timetrack_1.timetrackRules)();
561
+ if (!json) {
562
+ say(`target ${Math.round(rules.dayTargetMs / 60000)}m day starts at ${rules.dayStartHour}:00`);
563
+ say(`${rules.attributionRules.length} attribution rule(s)`);
564
+ rules.attributionRules.forEach((rule) => say(` ${describeRule(rule)}`));
565
+ say(`${rules.projectLinks.length} project link(s)`);
566
+ rules.projectLinks.forEach((link) => { var _a; return say(` ${link.path} → ${link.private ? 'private' : ((_a = link.projectKey) !== null && _a !== void 0 ? _a : 'no project')}`); });
567
+ }
568
+ return printed(rules, json);
569
+ }
570
+ if (subcommand === 'naming') {
571
+ const day = value && DAY.test(value) ? value : today();
572
+ const naming = yield (0, timetrack_1.timetrackNaming)(day);
573
+ if (!json) {
574
+ say(`${day} tempo ${naming.tempoReady ? 'configured' : 'not configured'}`);
575
+ say(`History ${naming.history}, ${naming.historyWorklogs} worklog(s) in the span`);
576
+ if (naming.historyMessage)
577
+ say(` ${naming.historyMessage}`);
578
+ say(`Offered (${naming.offers.length})`);
579
+ naming.offers.forEach((offer) => say(` ${offer.repoPath} → ${offer.issueKey} ${hours(offer.loggedMs)}, ${Math.round(offer.share * 100)}%, ${offer.days}d`));
580
+ say(`Not offered (${naming.declines.length})`);
581
+ naming.declines.forEach((decline) => say(` ${describeDecline(decline)}`));
582
+ }
583
+ return printed(naming, json);
584
+ }
585
+ if (subcommand === 'standins') {
586
+ const split = flagValue(argv, '--split');
587
+ if (split)
588
+ return yield splitStandIn({ id: split, argv, json });
589
+ const rename = flagValue(argv, '--rename');
590
+ const name = flagValue(argv, '--name');
591
+ if (rename && !name) {
592
+ say(`A rename needs the new name. Pass --name <text> with --rename ${rename}.`);
593
+ return 1;
594
+ }
595
+ if (rename && name) {
596
+ const renamed = yield (0, timetrack_1.timetrackRenameStandIn)({ id: rename, name });
597
+ if (!json)
598
+ say(`Renamed ${rename} to ${name}.`);
599
+ return printed(renamed, json);
600
+ }
601
+ const remove = flagValue(argv, '--remove');
602
+ const stranded = remove ? yield strandedDays(remove) : [];
603
+ if (stranded.length && !argv.includes('--force')) {
604
+ say(`${remove} holds ${stranded.length} day(s) before today: ${stranded.join(', ')}.`);
605
+ say('Deleting it takes the rule with it, so those days read as unnamed and nothing reopens them.');
606
+ say('The app reopens a placeholder for today only. Pass --force if that is what you want.');
607
+ return 1;
608
+ }
609
+ const standIns = remove ? yield (0, timetrack_1.timetrackRemoveStandIn)(remove) : yield (0, timetrack_1.timetrackStandIns)();
610
+ const rules = json ? [] : (yield (0, timetrack_1.timetrackRules)()).attributionRules;
611
+ const open = standIns
612
+ .filter((standIn) => standIn.state === 'open')
613
+ .sort((left, right) => left.createdAtMs - right.createdAtMs);
614
+ if (!json) {
615
+ if (remove)
616
+ say(`Deleted ${remove}, and the rule that named it.`);
617
+ say(`${open.length} open, ${standIns.length - open.length} resolved`);
618
+ open.forEach((standIn) => say(` ${describeStandIn({ standIn, rules })}`));
619
+ if (open.length)
620
+ say('Only the app opens or resolves one — you may delete one, not write one.');
621
+ }
622
+ return printed(standIns, json);
623
+ }
624
+ say(USAGE);
196
625
  return subcommand === undefined || subcommand === '--help' || subcommand === '-h' ? 0 : 1;
197
626
  });
198
627
  exports.timetrackCommand = timetrackCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"timetrack-command.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/timetrack-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timetrack-command.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/timetrack-command.ts"],"names":[],"mappings":"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"}