tickmarkr 1.33.2 → 1.33.4
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 +2 -2
- package/dist/cli/commands/status.js +5 -1
- package/dist/config/config.js +6 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -235,7 +235,7 @@ and first-attempt success rate. Cost reporting follows strict honesty rules and
|
|
|
235
235
|
- **Ranges, never single numbers**: quota multipliers and monthly-window variation make subscription costs a range, not a point estimate
|
|
236
236
|
- **"Not measurable" never becomes $0**: if a channel lacks pricing or metering data, the report explicitly states "not measurable"
|
|
237
237
|
- **Basis always shown**: every cost figure prints the token count, rate used, and date so estimates can be audited
|
|
238
|
-
- **No network calls**: pricing config is operator-maintained in `.drovr/config.yaml` (or `~/.config/
|
|
238
|
+
- **No network calls**: pricing config is operator-maintained in `.drovr/config.yaml` (or `~/.config/tickmarkr/config.yaml`; legacy `~/.config/drovr` still read), seeded with dated
|
|
239
239
|
comments and LiteLLM's JSON file named as the copy-from source; tickmarkr never calls home to fetch rates
|
|
240
240
|
- **Attribution from journal**: token counts come from tickmarkr's own telemetry spans in the audit trail, never from provider invoices or dashboards
|
|
241
241
|
|
|
@@ -368,7 +368,7 @@ Cloning this repo gives Claude Code project skills under `.claude/skills/`:
|
|
|
368
368
|
- **`/tickmarkr-auto`** — the **GSD binding**: run remaining GSD milestone phases autonomously with tickmarkr as the
|
|
369
369
|
executor (plans → compile → dry-run → run → merge → sync-back). Bindings are per-SDD by nature — the
|
|
370
370
|
sync-back writes that methodology's artifacts; other SDDs need their own thin binding, not this one.
|
|
371
|
-
- **`/overseer`** — supervise an autonomous tickmarkr engagement from a Herdr workspace: two-tier visible hierarchy,
|
|
371
|
+
- **`/tickmarkr-overseer`** — supervise an autonomous tickmarkr engagement from a Herdr workspace: two-tier visible hierarchy,
|
|
372
372
|
journal-based watchers, gate-failure triage, human-checkpoint routing. Requires `HERDR_ENV=1`.
|
|
373
373
|
|
|
374
374
|
Repo-scoped: available automatically in Claude Code sessions inside this repo; not installed by npm.
|
|
@@ -100,13 +100,16 @@ const liveness = (events) => {
|
|
|
100
100
|
const pid = daemonPid(events);
|
|
101
101
|
if (pid === undefined)
|
|
102
102
|
return `last event ${age} ago · daemon pid unknown`;
|
|
103
|
+
// a dead pid after run-end is a clean exit, not a crash — "dead" is only alarming (red) while
|
|
104
|
+
// the run is still incomplete (operator's crash indicator)
|
|
105
|
+
const ended = events.some((e) => e.event === "run-end");
|
|
103
106
|
let state;
|
|
104
107
|
try {
|
|
105
108
|
process.kill(pid, 0);
|
|
106
109
|
state = "alive";
|
|
107
110
|
} // no throw ⇒ alive
|
|
108
111
|
catch (k) {
|
|
109
|
-
state = k.code === "ESRCH" ? "dead" : "alive";
|
|
112
|
+
state = k.code === "ESRCH" ? (ended ? "finished" : "dead") : "alive";
|
|
110
113
|
} // EPERM ⇒ alive
|
|
111
114
|
return `last event ${age} ago · daemon pid ${pid} ${state}`;
|
|
112
115
|
};
|
|
@@ -172,6 +175,7 @@ const renderFrame = (cwd) => {
|
|
|
172
175
|
const gauge = (fill ? color("█".repeat(fill), anyFailed ? 31 : 32, true) : "") + (fill < gaugeCells ? dim("░".repeat(gaugeCells - fill)) : "");
|
|
173
176
|
const live = liveness(events)
|
|
174
177
|
.replace(/\bdead\b/, color("dead", 31, true))
|
|
178
|
+
.replace(/\bfinished\b/, color("finished", 2, true))
|
|
175
179
|
.replace(/\balive\b/, color("alive", 32, true))
|
|
176
180
|
.replaceAll(" · ", dot);
|
|
177
181
|
const tally = `${done}/${g.tasks.length} done`;
|
package/dist/config/config.js
CHANGED
|
@@ -255,9 +255,12 @@ function readYaml(path) {
|
|
|
255
255
|
return parse(readFileSync(path, "utf8"));
|
|
256
256
|
}
|
|
257
257
|
export function globalConfigDir() {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
258
|
+
// read-old/write-new (operator-ordered rename 2026-07-15): prefer ~/.config/tickmarkr; an
|
|
259
|
+
// existing ~/.config/drovr keeps working until the operator moves it. New scaffolds use tickmarkr.
|
|
260
|
+
const base = process.env.XDG_CONFIG_HOME ?? join(homedir(), ".config");
|
|
261
|
+
const next = join(base, "tickmarkr");
|
|
262
|
+
const legacy = join(base, "drovr");
|
|
263
|
+
return existsSync(join(next, "config.yaml")) || !existsSync(join(legacy, "config.yaml")) ? next : legacy;
|
|
261
264
|
}
|
|
262
265
|
export function loadConfig(repoRoot, opts = {}) {
|
|
263
266
|
const globalCfg = readYaml(join(opts.globalDir ?? globalConfigDir(), "config.yaml"));
|