@ethlete/agent-rules 0.1.0-next.17 → 0.1.0-next.19
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/CHANGELOG.md +35 -0
- package/README.md +14 -2
- package/content/hooks/subagent-model-policy.py +5 -3
- package/content/rules/app-styling.md +6 -1
- package/content/rules/subagent-models.md +7 -7
- package/content/skills/design-exploration/SKILL.md +3 -1
- package/content/skills/query/SKILL.md +10 -2
- package/content/skills/sdk-update/SKILL.md +5 -3
- package/content/skills/timetrack/SKILL.md +97 -27
- package/migrations/app-styling-utilities.md +44 -95
- package/migrations/list-state-query-form.md +12 -95
- package/migrations/nx-layout.md +6 -0
- package/migrations/sdk-components-over-hand-built-ui.md +16 -58
- package/migrations/search-query-field.md +12 -5
- package/migrations.json +5 -5
- package/package.json +1 -1
- package/src/lib/frontmatter.js +32 -5
- package/src/lib/frontmatter.js.map +1 -1
- package/src/lib/git-flow/parse.js +38 -12
- package/src/lib/git-flow/parse.js.map +1 -1
- package/src/lib/git-flow-repair.js +12 -1
- package/src/lib/git-flow-repair.js.map +1 -1
- package/src/lib/git.js +8 -2
- package/src/lib/git.js.map +1 -1
- package/src/lib/gitlab.js +11 -1
- package/src/lib/gitlab.js.map +1 -1
- package/src/lib/migrate.js +1 -1
- package/src/lib/migrate.js.map +1 -1
- package/src/lib/output-style.js +11 -3
- package/src/lib/output-style.js.map +1 -1
- package/src/lib/owned-paths.js +8 -2
- package/src/lib/owned-paths.js.map +1 -1
- package/src/lib/plan.js +20 -4
- package/src/lib/plan.js.map +1 -1
- package/src/lib/render.d.ts +4 -0
- package/src/lib/render.js +8 -2
- package/src/lib/render.js.map +1 -1
- package/src/lib/sync.js +3 -0
- package/src/lib/sync.js.map +1 -1
- package/src/lib/targets/codex.js +1 -1
- package/src/lib/targets/codex.js.map +1 -1
- package/src/lib/targets/copilot.js +1 -1
- package/src/lib/targets/copilot.js.map +1 -1
- package/src/lib/targets/git-hooks.js +2 -1
- package/src/lib/targets/git-hooks.js.map +1 -1
- package/src/lib/targets/hooks-shared.js +1 -1
- package/src/lib/targets/hooks-shared.js.map +1 -1
- package/src/lib/timetrack-command.js +316 -72
- package/src/lib/timetrack-command.js.map +1 -1
- package/src/lib/timetrack-snapshot.d.ts +55 -0
- package/src/lib/timetrack-snapshot.js +120 -0
- package/src/lib/timetrack-snapshot.js.map +1 -0
- package/src/lib/timetrack.d.ts +125 -23
- package/src/lib/timetrack.js +53 -17
- package/src/lib/timetrack.js.map +1 -1
package/src/lib/timetrack.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.timetrackSplitStandIn = exports.timetrackRenameStandIn = exports.timetrackRemoveStandIn = exports.timetrackStandIns = exports.timetrackResyncAgentSessions = exports.timetrackRules = exports.timetrackCalendarEvents = exports.timetrackTempoWorklogs = exports.timetrackEditDay = exports.timetrackDayRows = exports.timetrackDayEvents = exports.timetrackAddWorklog = exports.timetrackCreateIssue = exports.timetrackRepoProject = exports.timetrackSearch = exports.timetrackIssue = exports.timetrackInstance = exports.timetrackNaming = exports.timetrackStatus = exports.askTimetrack = exports.timetrackDiscoveryPath = void 0;
|
|
3
|
+
exports.timetrackApprovalStatus = exports.timetrackApplyStandInSplit = exports.timetrackSplitStandIn = exports.timetrackMergeStandIn = exports.timetrackRenameStandIn = exports.timetrackRemoveStandIn = exports.timetrackStandIns = exports.timetrackResyncAgentSessions = exports.timetrackRules = exports.timetrackCalendarEvents = exports.timetrackTempoDelete = exports.timetrackTempoSyncWrite = exports.timetrackTempoSync = exports.timetrackTempoWorklogs = exports.timetrackEditDay = exports.timetrackDayRows = exports.timetrackDayEvents = exports.timetrackAddWorklog = exports.timetrackCreateIssue = exports.timetrackRepoProject = exports.timetrackSearch = exports.timetrackIssue = exports.timetrackInstance = exports.timetrackNaming = exports.timetrackStatus = exports.askTimetrack = exports.timetrackClientName = exports.timetrackDiscoveryPath = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const crypto_1 = require("crypto");
|
|
6
6
|
const fs_1 = require("fs");
|
|
@@ -13,7 +13,7 @@ const DISCOVERY_FILENAME = 'agent.json';
|
|
|
13
13
|
* The contract version this client speaks. The app writes its own into the discovery file, and a
|
|
14
14
|
* mismatch stops here rather than at a field that is missing for a reason nobody can see.
|
|
15
15
|
*/
|
|
16
|
-
const PROTOCOL_VERSION =
|
|
16
|
+
const PROTOCOL_VERSION = 3;
|
|
17
17
|
/** A Jira search behind a slow instance is the long case; the app's own deadline is 60 seconds. */
|
|
18
18
|
const TIMEOUT_MS = 70000;
|
|
19
19
|
const PATH = '/agent';
|
|
@@ -64,6 +64,12 @@ const readDiscovery = () => {
|
|
|
64
64
|
}
|
|
65
65
|
return { version: discovery.version, port: discovery.port, token: discovery.token };
|
|
66
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* The name the approval queue shows for this caller: `TIMETRACK_CLIENT` when set, Claude Code when it
|
|
69
|
+
* runs this, and nothing otherwise.
|
|
70
|
+
*/
|
|
71
|
+
const timetrackClientName = () => { var _a; return ((_a = process.env['TIMETRACK_CLIENT']) === null || _a === void 0 ? void 0 : _a.trim()) || (process.env['CLAUDECODE'] ? 'Claude Code' : undefined); };
|
|
72
|
+
exports.timetrackClientName = timetrackClientName;
|
|
67
73
|
const IMPOSTOR = [
|
|
68
74
|
'Something other than Timetrack answers on the port its discovery file names.',
|
|
69
75
|
'The app writes a new port and a new token at every start — restart Timetrack, then try again.',
|
|
@@ -104,13 +110,14 @@ const proveTheServer = (discovery) => tslib_1.__awaiter(void 0, void 0, void 0,
|
|
|
104
110
|
*/
|
|
105
111
|
const askTimetrack = (request) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
106
112
|
const discovery = readDiscovery();
|
|
113
|
+
const client = (0, exports.timetrackClientName)();
|
|
107
114
|
yield proveTheServer(discovery);
|
|
108
115
|
let response;
|
|
109
116
|
try {
|
|
110
117
|
response = yield fetch(`http://127.0.0.1:${discovery.port}${PATH}`, {
|
|
111
118
|
method: 'POST',
|
|
112
119
|
headers: { authorization: `Bearer ${discovery.token}`, 'content-type': 'application/json' },
|
|
113
|
-
body: JSON.stringify(request),
|
|
120
|
+
body: JSON.stringify(client ? Object.assign(Object.assign({}, request), { client }) : request),
|
|
114
121
|
redirect: 'error',
|
|
115
122
|
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
116
123
|
});
|
|
@@ -143,33 +150,50 @@ const timetrackSearch = (options) => tslib_1.__awaiter(void 0, void 0, void 0, f
|
|
|
143
150
|
exports.timetrackSearch = timetrackSearch;
|
|
144
151
|
const timetrackRepoProject = (repoPath) => (0, exports.askTimetrack)({ op: 'repo.project', repoPath });
|
|
145
152
|
exports.timetrackRepoProject = timetrackRepoProject;
|
|
146
|
-
|
|
153
|
+
/** Queues a new issue, filed with the app's own ticket settings once the user approves it. */
|
|
154
|
+
const timetrackCreateIssue = (options) => (0, exports.askTimetrack)(Object.assign({ op: 'jira.create' }, options));
|
|
147
155
|
exports.timetrackCreateIssue = timetrackCreateIssue;
|
|
148
|
-
|
|
156
|
+
/** Queues a row for the day it belongs to. It is a row on the day once approved, not a Tempo entry. */
|
|
157
|
+
const timetrackAddWorklog = (options) => (0, exports.askTimetrack)(Object.assign({ op: 'worklog.add' }, options));
|
|
149
158
|
exports.timetrackAddWorklog = timetrackAddWorklog;
|
|
150
159
|
const timetrackDayEvents = (day) => (0, exports.askTimetrack)({ op: 'day.events', day });
|
|
151
160
|
exports.timetrackDayEvents = timetrackDayEvents;
|
|
152
161
|
const timetrackDayRows = (day) => (0, exports.askTimetrack)({ op: 'day.rows', day });
|
|
153
162
|
exports.timetrackDayRows = timetrackDayRows;
|
|
154
163
|
/**
|
|
155
|
-
*
|
|
164
|
+
* Queues the stated edits to a day's rows. Once approved, the result is the day as it reads afterwards.
|
|
156
165
|
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
166
|
+
* `applied` in that result counts the edits that found their row: a day the collectors keep changing
|
|
167
|
+
* can drop a row a caller read a moment ago.
|
|
159
168
|
*/
|
|
160
169
|
const timetrackEditDay = (options) => (0, exports.askTimetrack)(Object.assign({ op: 'day.edits' }, options));
|
|
161
170
|
exports.timetrackEditDay = timetrackEditDay;
|
|
162
171
|
/** Reads the user's own Tempo worklogs from Tempo, both days included. The app caps the span at 92 days. */
|
|
163
172
|
const timetrackTempoWorklogs = (options) => (0, exports.askTimetrack)(Object.assign({ op: 'tempo.worklogs' }, options));
|
|
164
173
|
exports.timetrackTempoWorklogs = timetrackTempoWorklogs;
|
|
174
|
+
/**
|
|
175
|
+
* Plans a Tempo sync of one day exactly as the app's Sync page does. It writes nothing, so it is
|
|
176
|
+
* answered at once. The app moves its review to the day.
|
|
177
|
+
*/
|
|
178
|
+
const timetrackTempoSync = (day) => (0, exports.askTimetrack)({ op: 'tempo.sync', day });
|
|
179
|
+
exports.timetrackTempoSync = timetrackTempoSync;
|
|
180
|
+
/** Queues the write of the plan whose hash the user confirmed. The app checks the hash again on approval. */
|
|
181
|
+
const timetrackTempoSyncWrite = (options) => (0, exports.askTimetrack)(Object.assign({ op: 'tempo.sync' }, options));
|
|
182
|
+
exports.timetrackTempoSyncWrite = timetrackTempoSyncWrite;
|
|
183
|
+
/**
|
|
184
|
+
* Queues the delete of one of the user's own Tempo worklogs. Once approved, the app refuses an id that
|
|
185
|
+
* is not among the account's own worklogs on `day`, and drops the ledger entry that owned it.
|
|
186
|
+
*/
|
|
187
|
+
const timetrackTempoDelete = (options) => (0, exports.askTimetrack)(Object.assign({ op: 'tempo.delete' }, options));
|
|
188
|
+
exports.timetrackTempoDelete = timetrackTempoDelete;
|
|
165
189
|
/** Reads the calendars the app watches, both days included. The app caps the span at 92 days. */
|
|
166
190
|
const timetrackCalendarEvents = (options) => (0, exports.askTimetrack)(Object.assign({ op: 'calendar.events' }, options));
|
|
167
191
|
exports.timetrackCalendarEvents = timetrackCalendarEvents;
|
|
168
192
|
const timetrackRules = () => (0, exports.askTimetrack)({ op: 'settings.rules' });
|
|
169
193
|
exports.timetrackRules = timetrackRules;
|
|
170
194
|
/**
|
|
171
|
-
*
|
|
172
|
-
* project link held them are stored.
|
|
195
|
+
* Queues a read of the agent session logs under `paths` again, so sessions the app dropped while no
|
|
196
|
+
* project link held them are stored. Once approved, the read runs in the background.
|
|
173
197
|
*
|
|
174
198
|
* With `replace`, the re-read overwrites the samples, spend and prompts the store holds for those
|
|
175
199
|
* sessions, which is how a parser fix reaches days already stored.
|
|
@@ -179,30 +203,42 @@ exports.timetrackResyncAgentSessions = timetrackResyncAgentSessions;
|
|
|
179
203
|
const timetrackStandIns = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (yield (0, exports.askTimetrack)({ op: 'standIn.list' })).standIns; });
|
|
180
204
|
exports.timetrackStandIns = timetrackStandIns;
|
|
181
205
|
/**
|
|
182
|
-
*
|
|
206
|
+
* Queues the delete of one placeholder. Once approved, the result is the list as it reads afterwards.
|
|
183
207
|
*
|
|
184
208
|
* The rule pointing at it goes with it. A record the app opened for one branch refuses that branch as
|
|
185
209
|
* it goes, so no second one opens for it; a record naming no branch refuses nothing, and the next
|
|
186
210
|
* pass may open one at whatever grain the day reads.
|
|
187
211
|
*/
|
|
188
|
-
const timetrackRemoveStandIn = (id) =>
|
|
212
|
+
const timetrackRemoveStandIn = (id) => (0, exports.askTimetrack)({ op: 'standIn.remove', id });
|
|
189
213
|
exports.timetrackRemoveStandIn = timetrackRemoveStandIn;
|
|
190
214
|
/**
|
|
191
|
-
*
|
|
215
|
+
* Queues another name for one placeholder. Once approved, the result is the list as it reads afterwards.
|
|
192
216
|
*
|
|
193
217
|
* Only the name changes. The days it holds and the rules that name it stay, which is what a delete
|
|
194
218
|
* and a fresh record would lose.
|
|
195
219
|
*/
|
|
196
|
-
const timetrackRenameStandIn = (options) =>
|
|
220
|
+
const timetrackRenameStandIn = (options) => (0, exports.askTimetrack)(Object.assign({ op: 'standIn.rename' }, options));
|
|
197
221
|
exports.timetrackRenameStandIn = timetrackRenameStandIn;
|
|
198
222
|
/**
|
|
199
|
-
*
|
|
223
|
+
* Queues the merge of one open placeholder into another. Once approved, the result is the list as it
|
|
224
|
+
* reads afterwards. The kept one takes the days and the rules of both.
|
|
225
|
+
*/
|
|
226
|
+
const timetrackMergeStandIn = (options) => (0, exports.askTimetrack)(Object.assign({ op: 'standIn.merge' }, options));
|
|
227
|
+
exports.timetrackMergeStandIn = timetrackMergeStandIn;
|
|
228
|
+
/**
|
|
229
|
+
* Plans the cut of one placeholder into one per directory it turned out to cover, and writes nothing.
|
|
200
230
|
*
|
|
201
|
-
*
|
|
231
|
+
* The commits come from the caller: one
|
|
202
232
|
* collected before Timetrack read file paths carries none, so only `git log --name-only` can say.
|
|
203
233
|
* A checkout whose commits name more directories than a grain can hold has no automatic reading,
|
|
204
234
|
* and `paths` is how the user picks which of them are the pieces.
|
|
205
235
|
*/
|
|
206
|
-
const timetrackSplitStandIn = (options) => (0, exports.askTimetrack)(Object.assign({ op: 'standIn.split' }, options));
|
|
236
|
+
const timetrackSplitStandIn = (options) => (0, exports.askTimetrack)(Object.assign(Object.assign({ op: 'standIn.split' }, options), { apply: false }));
|
|
207
237
|
exports.timetrackSplitStandIn = timetrackSplitStandIn;
|
|
238
|
+
/** Queues the split `timetrackSplitStandIn` planned, with the same options. */
|
|
239
|
+
const timetrackApplyStandInSplit = (options) => (0, exports.askTimetrack)(Object.assign(Object.assign({ op: 'standIn.split' }, options), { apply: true }));
|
|
240
|
+
exports.timetrackApplyStandInSplit = timetrackApplyStandInSplit;
|
|
241
|
+
/** Where a write this caller queued stands, and what it answered once the user approved it. */
|
|
242
|
+
const timetrackApprovalStatus = (id) => (0, exports.askTimetrack)({ op: 'approval.status', id });
|
|
243
|
+
exports.timetrackApprovalStatus = timetrackApprovalStatus;
|
|
208
244
|
//# sourceMappingURL=timetrack.js.map
|
package/src/lib/timetrack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timetrack.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/timetrack.ts"],"names":[],"mappings":";;;;AAAA,mCAAkE;AAClE,2BAA8C;AAC9C,2BAAuC;AACvC,+BAA4B;AAE5B,2FAA2F;AAC3F,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAE1C,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAExC;;;GAGG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,mGAAmG;AACnG,MAAM,UAAU,GAAG,KAAM,CAAC;AAE1B,MAAM,IAAI,GAAG,QAAQ,CAAC;AACtB,MAAM,UAAU,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"timetrack.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/timetrack.ts"],"names":[],"mappings":"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"}
|