@rasensio/aidlc 1.10.6 → 1.11.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/commands/add-action.d.ts +1 -1
- package/dist/commands/add-action.js +2 -2
- package/dist/commands/cost.d.ts.map +1 -1
- package/dist/commands/cost.js +29 -7
- package/dist/commands/cost.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +5 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +22 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +6 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/compile/loaders.d.ts +42 -6
- package/dist/compile/loaders.d.ts.map +1 -1
- package/dist/compile/loaders.js +75 -9
- package/dist/compile/loaders.js.map +1 -1
- package/dist/concurrency/gitattributes.d.ts.map +1 -1
- package/dist/concurrency/gitattributes.js +10 -0
- package/dist/concurrency/gitattributes.js.map +1 -1
- package/dist/cost/hooks/claude-code.d.ts +38 -5
- package/dist/cost/hooks/claude-code.d.ts.map +1 -1
- package/dist/cost/hooks/claude-code.js +38 -13
- package/dist/cost/hooks/claude-code.js.map +1 -1
- package/dist/cost/hooks/entry.d.ts +14 -0
- package/dist/cost/hooks/entry.d.ts.map +1 -0
- package/dist/cost/hooks/entry.js +18 -0
- package/dist/cost/hooks/entry.js.map +1 -0
- package/dist/cost/hooks/kiro.d.ts +16 -4
- package/dist/cost/hooks/kiro.d.ts.map +1 -1
- package/dist/cost/hooks/kiro.js +21 -9
- package/dist/cost/hooks/kiro.js.map +1 -1
- package/dist/cost/hooks/shim.d.ts +54 -0
- package/dist/cost/hooks/shim.d.ts.map +1 -0
- package/dist/cost/hooks/shim.js +170 -0
- package/dist/cost/hooks/shim.js.map +1 -0
- package/dist/cost/recorder.d.ts +22 -0
- package/dist/cost/recorder.d.ts.map +1 -1
- package/dist/cost/recorder.js +44 -0
- package/dist/cost/recorder.js.map +1 -1
- package/dist/doctor/migrations/cost-gitignore.d.ts.map +1 -1
- package/dist/doctor/migrations/cost-gitignore.js +15 -1
- package/dist/doctor/migrations/cost-gitignore.js.map +1 -1
- package/dist/doctor/migrations/index.js +2 -2
- package/dist/doctor/migrations/index.js.map +1 -1
- package/dist/doctor/migrations/legacy-cost-hooks.d.ts +40 -0
- package/dist/doctor/migrations/legacy-cost-hooks.d.ts.map +1 -0
- package/dist/doctor/migrations/legacy-cost-hooks.js +92 -0
- package/dist/doctor/migrations/legacy-cost-hooks.js.map +1 -0
- package/package.json +2 -2
- package/dist/doctor/migrations/stale-cost-hooks.d.ts +0 -37
- package/dist/doctor/migrations/stale-cost-hooks.d.ts.map +0 -1
- package/dist/doctor/migrations/stale-cost-hooks.js +0 -85
- package/dist/doctor/migrations/stale-cost-hooks.js.map +0 -1
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cost-capture shim: resolves the node runtime and the CLI at RUN time.
|
|
3
|
+
*
|
|
4
|
+
* Why this exists (cost-capture-goes-dark). Hook commands used to be written as
|
|
5
|
+
* two absolute paths frozen at install time — `"<node>" "<cli>" cost record …`.
|
|
6
|
+
* A username change, a new machine, or an ordinary `nvm` upgrade invalidated
|
|
7
|
+
* both, the hook could not execute, and **nothing reported that**: no ledger, no
|
|
8
|
+
* capture.log, and `aidlc cost` read `$0.00` forever. A hook that cannot start
|
|
9
|
+
* cannot report that it did not start. This repo's own hooks named
|
|
10
|
+
* `/Users/rodrigo` and node v24.9.0 long after the account and runtime moved on.
|
|
11
|
+
*
|
|
12
|
+
* The shim is the only design considered that can report its own failure — an
|
|
13
|
+
* `npx` one-liner resolves at run time but has nowhere to write when it fails.
|
|
14
|
+
* That property, not elegance, is why a generated file won.
|
|
15
|
+
*
|
|
16
|
+
* SECURITY (cost-capture-goes-dark/AC-15). The naive fix — resolve `node` from
|
|
17
|
+
* `PATH` — would be a regression. This command runs automatically on every
|
|
18
|
+
* session start and end, so an attacker-influenced `PATH` would execute
|
|
19
|
+
* arbitrary code with the developer's privileges. The frozen absolute path,
|
|
20
|
+
* whatever else was wrong with it, did not have that weakness. So the shim:
|
|
21
|
+
*
|
|
22
|
+
* - never performs a bare `command -v node` / PATH lookup;
|
|
23
|
+
* - only ever execs an ABSOLUTE candidate;
|
|
24
|
+
* - rejects any candidate whose directory is world-writable (unless sticky);
|
|
25
|
+
* - derives the global CLI location from the *resolved* node rather than the
|
|
26
|
+
* install-time node, which is what lets it survive an nvm upgrade.
|
|
27
|
+
*
|
|
28
|
+
* Candidate order is deliberate: an explicit operator override first, then the
|
|
29
|
+
* project-local install (deterministic and project-scoped), then the recorded
|
|
30
|
+
* install-time hint, then a narrow set of standard absolute locations.
|
|
31
|
+
*/
|
|
32
|
+
import { chmodSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
33
|
+
import { dirname, join } from 'node:path';
|
|
34
|
+
/** Path of the generated shim. */
|
|
35
|
+
export function shimPath(projectRoot) {
|
|
36
|
+
return join(projectRoot, '.aidlc', 'cost', 'capture.sh');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Single-quote a value for POSIX sh. Embedded single quotes are closed,
|
|
40
|
+
* escaped, and reopened — the standard `'\''` dance.
|
|
41
|
+
*/
|
|
42
|
+
function shQuote(value) {
|
|
43
|
+
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The shim body. `nodeHint`/`cliHint` are the absolute paths known at install
|
|
47
|
+
* time; they are *hints*, validated before use and never trusted to still exist.
|
|
48
|
+
*/
|
|
49
|
+
export function shimBody(nodeHint, cliHint) {
|
|
50
|
+
return `#!/bin/sh
|
|
51
|
+
# Generated by \`aidlc cost hooks install\` — do not edit by hand.
|
|
52
|
+
#
|
|
53
|
+
# Resolves the node runtime and CLI at RUN time. Absolute paths frozen at
|
|
54
|
+
# install time break on any username, machine, or nvm change, and a hook that
|
|
55
|
+
# cannot start cannot report that it did not start (cost-capture-goes-dark).
|
|
56
|
+
#
|
|
57
|
+
# Deliberately does NOT consult PATH for the runtime: this runs automatically
|
|
58
|
+
# every session, so a PATH lookup would be an arbitrary-code-execution surface
|
|
59
|
+
# (AC-15).
|
|
60
|
+
set -u
|
|
61
|
+
|
|
62
|
+
# Set a known PATH rather than inheriting one. Two reasons, both load-bearing:
|
|
63
|
+
# an inherited PATH could point \`ls\`/\`cut\`/\`date\` at attacker-controlled
|
|
64
|
+
# binaries, and — found while testing — a hostile or empty PATH otherwise makes
|
|
65
|
+
# the permission check below fail for every candidate, so the shim would report
|
|
66
|
+
# "no usable node" for the wrong reason.
|
|
67
|
+
PATH=/usr/bin:/bin:/usr/sbin:/sbin
|
|
68
|
+
export PATH
|
|
69
|
+
|
|
70
|
+
# Project root: two levels up from .aidlc/cost/capture.sh, unless declared.
|
|
71
|
+
if [ -n "\${AIDLC_PROJECT_ROOT:-}" ]; then
|
|
72
|
+
AIDLC_ROOT="\$AIDLC_PROJECT_ROOT"
|
|
73
|
+
else
|
|
74
|
+
AIDLC_ROOT=\$(CDPATH= cd -- "\$(dirname -- "\$0")/../.." && pwd) || AIDLC_ROOT=.
|
|
75
|
+
fi
|
|
76
|
+
LOG="\$AIDLC_ROOT/.aidlc/cost/capture.log"
|
|
77
|
+
|
|
78
|
+
log() {
|
|
79
|
+
# Best-effort: never let logging failure mask the original problem.
|
|
80
|
+
mkdir -p -- "\$AIDLC_ROOT/.aidlc/cost" 2>/dev/null || true
|
|
81
|
+
printf '%s shim %s\\n' "\$(date -u +%Y-%m-%dT%H:%M:%SZ)" "\$1" >>"\$LOG" 2>/dev/null || true
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
# Reject a candidate that is missing, not executable, not absolute, or sits in a
|
|
85
|
+
# world-writable directory (AC-15). Sticky dirs like /tmp are rejected too: the
|
|
86
|
+
# simpler rule is the safer one, and no legitimate runtime lives there.
|
|
87
|
+
usable() {
|
|
88
|
+
[ -n "\${1:-}" ] || return 1
|
|
89
|
+
case "\$1" in /*) ;; *) return 1 ;; esac
|
|
90
|
+
[ -x "\$1" ] || return 1
|
|
91
|
+
_perm=\$(ls -ld -- "\$(dirname -- "\$1")" 2>/dev/null | cut -c1-10) || return 1
|
|
92
|
+
# Tests the world-write bit: 9th char of drwxr-xr-x style output.
|
|
93
|
+
case "\$_perm" in
|
|
94
|
+
*w?) return 1 ;;
|
|
95
|
+
esac
|
|
96
|
+
return 0
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
NODE_HINT=${shQuote(nodeHint)}
|
|
100
|
+
CLI_HINT=${shQuote(cliHint)}
|
|
101
|
+
|
|
102
|
+
NODE=
|
|
103
|
+
for candidate in \\
|
|
104
|
+
"\${AIDLC_NODE:-}" \\
|
|
105
|
+
"\$NODE_HINT" \\
|
|
106
|
+
/opt/homebrew/bin/node \\
|
|
107
|
+
/usr/local/bin/node \\
|
|
108
|
+
/usr/bin/node
|
|
109
|
+
do
|
|
110
|
+
if usable "\$candidate"; then NODE="\$candidate"; break; fi
|
|
111
|
+
done
|
|
112
|
+
|
|
113
|
+
# Version-manager installs move on every upgrade, so glob rather than freeze.
|
|
114
|
+
# No \`break\`: the glob expands in ascending order, so last-match wins and we end
|
|
115
|
+
# up on the newest installed version rather than the oldest.
|
|
116
|
+
if [ -z "\$NODE" ]; then
|
|
117
|
+
for candidate in "\$HOME"/.nvm/versions/node/*/bin/node "\$HOME"/.volta/tools/image/node/*/bin/node; do
|
|
118
|
+
if usable "\$candidate"; then NODE="\$candidate"; fi
|
|
119
|
+
done
|
|
120
|
+
fi
|
|
121
|
+
|
|
122
|
+
if [ -z "\$NODE" ]; then
|
|
123
|
+
log "no-runtime: no usable node found; cost capture did not run"
|
|
124
|
+
exit 1
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
# CLI: project-local first (deterministic), then the hint, then derived from the
|
|
128
|
+
# RESOLVED node — that derivation is what survives an nvm upgrade.
|
|
129
|
+
CLI=
|
|
130
|
+
for candidate in \\
|
|
131
|
+
"\${AIDLC_CLI:-}" \\
|
|
132
|
+
"\$AIDLC_ROOT/node_modules/@rasensio/aidlc/dist/cli.js" \\
|
|
133
|
+
"\$CLI_HINT" \\
|
|
134
|
+
"\$(dirname -- "\$(dirname -- "\$NODE")")/lib/node_modules/@rasensio/aidlc/dist/cli.js"
|
|
135
|
+
do
|
|
136
|
+
if [ -n "\${candidate:-}" ] && [ -f "\$candidate" ]; then CLI="\$candidate"; break; fi
|
|
137
|
+
done
|
|
138
|
+
|
|
139
|
+
if [ -z "\$CLI" ]; then
|
|
140
|
+
log "no-cli: node resolved at \$NODE but no aidlc CLI found; cost capture did not run"
|
|
141
|
+
exit 1
|
|
142
|
+
fi
|
|
143
|
+
|
|
144
|
+
exec "\$NODE" "\$CLI" "\$@"
|
|
145
|
+
`;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Write (or rewrite) the shim and make it executable. Idempotent: the body is a
|
|
149
|
+
* pure function of the two hints, so re-installing produces identical bytes
|
|
150
|
+
* unless the environment genuinely moved.
|
|
151
|
+
*/
|
|
152
|
+
export function writeShim(projectRoot, nodeHint, cliHint) {
|
|
153
|
+
const path = shimPath(projectRoot);
|
|
154
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
155
|
+
writeFileSync(path, shimBody(nodeHint, cliHint));
|
|
156
|
+
chmodSync(path, 0o755);
|
|
157
|
+
return path;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* How a hook command should invoke the shim.
|
|
161
|
+
*
|
|
162
|
+
* `$CLAUDE_PROJECT_DIR` is set by Claude Code; the `:-.` fallback covers hosts
|
|
163
|
+
* that do not set it and run hooks from the project root. The path is relative
|
|
164
|
+
* to a variable rather than absolute precisely so the command text carries no
|
|
165
|
+
* machine-specific path (AC-1) — that is the whole point.
|
|
166
|
+
*/
|
|
167
|
+
export function shimInvocation(rootVar = 'CLAUDE_PROJECT_DIR') {
|
|
168
|
+
return `"\${${rootVar}:-.}/.aidlc/cost/capture.sh"`;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=shim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shim.js","sourceRoot":"","sources":["../../../src/cost/hooks/shim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,kCAAkC;AAClC,MAAM,UAAU,QAAQ,CAAC,WAAmB;IAC1C,OAAO,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB,EAAE,OAAe;IACxD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAiDG,OAAO,CAAC,QAAQ,CAAC;WAClB,OAAO,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C1B,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,WAAmB,EAAE,QAAgB,EAAE,OAAe;IAC9E,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,OAAO,GAAG,oBAAoB;IAC3D,OAAO,OAAO,OAAO,8BAA8B,CAAC;AACtD,CAAC"}
|
package/dist/cost/recorder.d.ts
CHANGED
|
@@ -15,6 +15,28 @@
|
|
|
15
15
|
import { type ProviderEnv } from './providers/provider.js';
|
|
16
16
|
import type { RecordInput } from './types.js';
|
|
17
17
|
export declare function captureLogPath(projectRoot: string): string;
|
|
18
|
+
/** Whether the capture path has ever executed, and when it last did. */
|
|
19
|
+
export interface CaptureLiveness {
|
|
20
|
+
/** capture.log exists and holds at least one parseable line. */
|
|
21
|
+
everRan: boolean;
|
|
22
|
+
/** Newest capture.log timestamp, or null when it has never run. */
|
|
23
|
+
lastAt: string | null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Liveness of the capture path (cost-capture-goes-dark/AC-10).
|
|
27
|
+
*
|
|
28
|
+
* "No cost data" has two very different causes and reports used to render them
|
|
29
|
+
* identically: no usage occurred, or capture never ran. The second is the one
|
|
30
|
+
* that cost this project its cost history — a hook whose frozen absolute paths
|
|
31
|
+
* had gone stale could not execute, so it wrote nothing at all, not even an
|
|
32
|
+
* error. **The absence of capture.log is therefore itself the signal**: every
|
|
33
|
+
* capture attempt logs, including the failures, so a missing log means nothing
|
|
34
|
+
* ever tried.
|
|
35
|
+
*
|
|
36
|
+
* Cheap by construction — one stat and one read of a file capped at 256 KB — so
|
|
37
|
+
* it is safe to consult on every report.
|
|
38
|
+
*/
|
|
39
|
+
export declare function captureLiveness(projectRoot: string): CaptureLiveness;
|
|
18
40
|
export declare function logCapture(projectRoot: string, stage: string, errorCode: string, counts?: Record<string, number>): void;
|
|
19
41
|
interface CaptureLogLine {
|
|
20
42
|
timestamp: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/cost/recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAqBH,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAW9C,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,IAAI,CA+BN;AAED,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AA4BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,IAAiB,GACrB,cAAc,GAAG,IAAI,CAmBvB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAG1F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CA2BnF;AAcD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,EAAE,CAcpF;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,EAAE,CAWtF;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAqCvF;AAMD,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,WAAW,EAAE,CAiBvG;AASD,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CASpF;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAqCnF"}
|
|
1
|
+
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/cost/recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAqBH,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAW9C,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAwBpE;AAED,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,IAAI,CA+BN;AAED,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AA4BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,IAAiB,GACrB,cAAc,GAAG,IAAI,CAmBvB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAG1F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CA2BnF;AAcD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,EAAE,CAcpF;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,EAAE,CAWtF;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAqCvF;AAMD,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,WAAW,EAAE,CAiBvG;AASD,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CASpF;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAqCnF"}
|
package/dist/cost/recorder.js
CHANGED
|
@@ -29,6 +29,50 @@ const CAPTURE_ERROR_RETENTION_MS = 7 * 24 * 60 * 60 * 1000;
|
|
|
29
29
|
export function captureLogPath(projectRoot) {
|
|
30
30
|
return join(projectRoot, '.aidlc', 'cost', 'capture.log');
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Liveness of the capture path (cost-capture-goes-dark/AC-10).
|
|
34
|
+
*
|
|
35
|
+
* "No cost data" has two very different causes and reports used to render them
|
|
36
|
+
* identically: no usage occurred, or capture never ran. The second is the one
|
|
37
|
+
* that cost this project its cost history — a hook whose frozen absolute paths
|
|
38
|
+
* had gone stale could not execute, so it wrote nothing at all, not even an
|
|
39
|
+
* error. **The absence of capture.log is therefore itself the signal**: every
|
|
40
|
+
* capture attempt logs, including the failures, so a missing log means nothing
|
|
41
|
+
* ever tried.
|
|
42
|
+
*
|
|
43
|
+
* Cheap by construction — one stat and one read of a file capped at 256 KB — so
|
|
44
|
+
* it is safe to consult on every report.
|
|
45
|
+
*/
|
|
46
|
+
export function captureLiveness(projectRoot) {
|
|
47
|
+
const path = captureLogPath(projectRoot);
|
|
48
|
+
if (!existsSync(path))
|
|
49
|
+
return { everRan: false, lastAt: null };
|
|
50
|
+
let raw;
|
|
51
|
+
try {
|
|
52
|
+
raw = readFileSync(path, 'utf8');
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Unreadable is not the same as absent; say nothing rather than guess.
|
|
56
|
+
return { everRan: false, lastAt: null };
|
|
57
|
+
}
|
|
58
|
+
let lastAt = null;
|
|
59
|
+
for (const line of raw.split('\n')) {
|
|
60
|
+
if (line.trim() === '')
|
|
61
|
+
continue;
|
|
62
|
+
try {
|
|
63
|
+
const parsed = JSON.parse(line);
|
|
64
|
+
if (typeof parsed.timestamp !== 'string')
|
|
65
|
+
continue;
|
|
66
|
+
if (lastAt === null || Date.parse(parsed.timestamp) > Date.parse(lastAt)) {
|
|
67
|
+
lastAt = parsed.timestamp;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return { everRan: lastAt !== null, lastAt };
|
|
75
|
+
}
|
|
32
76
|
export function logCapture(projectRoot, stage, errorCode, counts = {}) {
|
|
33
77
|
const path = captureLogPath(projectRoot);
|
|
34
78
|
mkdirSync(dirname(path), { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/cost/recorder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/cost/recorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-gitignore.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/cost-gitignore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cost-gitignore.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/cost-gitignore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAW7C,eAAO,MAAM,iBAAiB,UAM7B,CAAC;AAMF,eAAO,MAAM,aAAa,EAAE,SAsB3B,CAAC"}
|
|
@@ -7,7 +7,21 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { join } from 'node:path';
|
|
9
9
|
import { ensureIgnoreLines, missingIgnoreLines } from './nested-gitignore.js';
|
|
10
|
-
|
|
10
|
+
/*
|
|
11
|
+
* `capture.sh` is generated per-install and its body embeds the node and CLI
|
|
12
|
+
* paths seen at install time as resolution *hints*. Those are machine-specific,
|
|
13
|
+
* so tracking the file would commit exactly the kind of absolute path this
|
|
14
|
+
* project just spent a bugfix removing from hook commands
|
|
15
|
+
* (cost-capture-goes-dark/AC-5). It is regenerated by `aidlc cost hooks install`
|
|
16
|
+
* and by the legacy-cost-hooks doctor migration, so nothing is lost by ignoring it.
|
|
17
|
+
*/
|
|
18
|
+
export const COST_IGNORE_LINES = [
|
|
19
|
+
'active-sessions/',
|
|
20
|
+
'capture.log',
|
|
21
|
+
'capture.sh',
|
|
22
|
+
'locks/',
|
|
23
|
+
'.gitignore',
|
|
24
|
+
];
|
|
11
25
|
function ignorePath(projectRoot) {
|
|
12
26
|
return join(projectRoot, '.aidlc', 'cost', '.gitignore');
|
|
13
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-gitignore.js","sourceRoot":"","sources":["../../../src/doctor/migrations/cost-gitignore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,
|
|
1
|
+
{"version":3,"file":"cost-gitignore.js","sourceRoot":"","sources":["../../../src/doctor/migrations/cost-gitignore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kBAAkB;IAClB,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,YAAY;CACb,CAAC;AAEF,SAAS,UAAU,CAAC,WAAmB;IACrC,OAAO,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,MAAM;IACZ,KAAK,CAAC,GAAG;QACP,IAAI,GAAG,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;QACpE,CAAC;QACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACnF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACtE,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,aAAa,OAAO,CAAC,MAAM,uCAAuC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SACrG,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,GAAG;QACP,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAChF,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;YACzB,OAAO,EAAE,SAAS,KAAK,CAAC,MAAM,oCAAoC;SACnE,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -15,7 +15,7 @@ import { pruneCostLocks } from './prune-cost-locks.js';
|
|
|
15
15
|
import { pruneCaptureLogMigration } from './prune-capture-log.js';
|
|
16
16
|
import { pruneRegistry } from './prune-registry.js';
|
|
17
17
|
import { unknownAgentClaims } from './unknown-agent-claims.js';
|
|
18
|
-
import {
|
|
18
|
+
import { legacyCostHooks } from './legacy-cost-hooks.js';
|
|
19
19
|
import { installGuidance } from './install-guidance.js';
|
|
20
20
|
export const MIGRATIONS = [
|
|
21
21
|
costGitignore,
|
|
@@ -29,6 +29,6 @@ export const MIGRATIONS = [
|
|
|
29
29
|
pruneCaptureLogMigration,
|
|
30
30
|
pruneRegistry,
|
|
31
31
|
unknownAgentClaims,
|
|
32
|
-
|
|
32
|
+
legacyCostHooks,
|
|
33
33
|
];
|
|
34
34
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doctor/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doctor/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,aAAa;IACb,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,iBAAiB;IACjB,cAAc;IACd,wBAAwB;IACxB,aAAa;IACb,kBAAkB;IAClB,eAAe;CAChB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* legacy-cost-hooks migration: re-install cost hooks that predate the shim.
|
|
3
|
+
*
|
|
4
|
+
* Replaces `stale-cost-hooks` (cost-capture-goes-dark/AC-14, AC-18). That
|
|
5
|
+
* migration asked "does the absolute CLI path recorded in the hook still exist?"
|
|
6
|
+
* — the right question only while the command *contained* an absolute path. Hook
|
|
7
|
+
* commands now invoke `.aidlc/cost/capture.sh`, which resolves node and the CLI
|
|
8
|
+
* at run time, so there is no longer a path that can go stale and nothing left
|
|
9
|
+
* to detect. What remains is a one-time migration: hooks installed by an older
|
|
10
|
+
* version still carry the frozen paths and are still silently broken.
|
|
11
|
+
*
|
|
12
|
+
* WHY THIS ONE REPAIRS, WHERE ITS PREDECESSOR ONLY REPORTED. `stale-cost-hooks`
|
|
13
|
+
* was deliberately report-only, reasoning that "a diagnostic must not silently
|
|
14
|
+
* rewrite a user's .claude/settings.json". That reasoning was sound and is
|
|
15
|
+
* narrowed here rather than discarded: this migration only ever replaces hook
|
|
16
|
+
* entries carrying our own `#aidlc-cost-hook` marker, via the same
|
|
17
|
+
* merge-not-clobber installer that leaves every other key and every unmarked
|
|
18
|
+
* hook untouched. Nothing the user wrote is rewritten.
|
|
19
|
+
*
|
|
20
|
+
* The reason to change the stance at all is what report-only cost us: the
|
|
21
|
+
* detection was correct, the report printed on every `aidlc update`, and the
|
|
22
|
+
* data was lost anyway, because the last link in the chain was a human reading a
|
|
23
|
+
* line. A repair that needs to be noticed is a repair that does not happen. The
|
|
24
|
+
* failure it prevents is silent and unrecoverable — usage that was never
|
|
25
|
+
* captured cannot be reconstructed later.
|
|
26
|
+
*
|
|
27
|
+
* Self-clearing: re-installing produces the shim form, so `legacy` goes false
|
|
28
|
+
* and this stops reporting without anyone editing state.
|
|
29
|
+
*/
|
|
30
|
+
import type { Migration } from '../types.js';
|
|
31
|
+
/**
|
|
32
|
+
* Platforms whose installed hook still uses the pre-shim absolute-path form.
|
|
33
|
+
* Read-only half, exported for reuse and direct testing.
|
|
34
|
+
*
|
|
35
|
+
* Only installed hooks are considered: an absent hook is a different condition
|
|
36
|
+
* (never armed, not broken), and `aidlc cost hooks status` already says so.
|
|
37
|
+
*/
|
|
38
|
+
export declare function legacyCostHookPlatforms(projectRoot: string): string[];
|
|
39
|
+
export declare const legacyCostHooks: Migration;
|
|
40
|
+
//# sourceMappingURL=legacy-cost-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-cost-hooks.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/legacy-cost-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAqB7C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAOrE;AAWD,eAAO,MAAM,eAAe,EAAE,SAsB7B,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* legacy-cost-hooks migration: re-install cost hooks that predate the shim.
|
|
3
|
+
*
|
|
4
|
+
* Replaces `stale-cost-hooks` (cost-capture-goes-dark/AC-14, AC-18). That
|
|
5
|
+
* migration asked "does the absolute CLI path recorded in the hook still exist?"
|
|
6
|
+
* — the right question only while the command *contained* an absolute path. Hook
|
|
7
|
+
* commands now invoke `.aidlc/cost/capture.sh`, which resolves node and the CLI
|
|
8
|
+
* at run time, so there is no longer a path that can go stale and nothing left
|
|
9
|
+
* to detect. What remains is a one-time migration: hooks installed by an older
|
|
10
|
+
* version still carry the frozen paths and are still silently broken.
|
|
11
|
+
*
|
|
12
|
+
* WHY THIS ONE REPAIRS, WHERE ITS PREDECESSOR ONLY REPORTED. `stale-cost-hooks`
|
|
13
|
+
* was deliberately report-only, reasoning that "a diagnostic must not silently
|
|
14
|
+
* rewrite a user's .claude/settings.json". That reasoning was sound and is
|
|
15
|
+
* narrowed here rather than discarded: this migration only ever replaces hook
|
|
16
|
+
* entries carrying our own `#aidlc-cost-hook` marker, via the same
|
|
17
|
+
* merge-not-clobber installer that leaves every other key and every unmarked
|
|
18
|
+
* hook untouched. Nothing the user wrote is rewritten.
|
|
19
|
+
*
|
|
20
|
+
* The reason to change the stance at all is what report-only cost us: the
|
|
21
|
+
* detection was correct, the report printed on every `aidlc update`, and the
|
|
22
|
+
* data was lost anyway, because the last link in the chain was a human reading a
|
|
23
|
+
* line. A repair that needs to be noticed is a repair that does not happen. The
|
|
24
|
+
* failure it prevents is silent and unrecoverable — usage that was never
|
|
25
|
+
* captured cannot be reconstructed later.
|
|
26
|
+
*
|
|
27
|
+
* Self-clearing: re-installing produces the shim form, so `legacy` goes false
|
|
28
|
+
* and this stops reporting without anyone editing state.
|
|
29
|
+
*/
|
|
30
|
+
import { claudeCodeHookStatus, installClaudeCodeHooks } from '../../cost/hooks/claude-code.js';
|
|
31
|
+
import { kiroHookStatus, installKiroHooks } from '../../cost/hooks/kiro.js';
|
|
32
|
+
import { cliEntryPath } from '../../cost/hooks/entry.js';
|
|
33
|
+
/*
|
|
34
|
+
* Deliberately NOT driven by allProviders(): that registry is populated by an
|
|
35
|
+
* explicit registerBuiltinProviders() call, so any caller that has not made it
|
|
36
|
+
* sees an EMPTY list — the predecessor migration reproduced exactly that bug on
|
|
37
|
+
* its first run and found nothing in every case. A diagnostic that silently
|
|
38
|
+
* finds nothing is worse than no diagnostic. Hook installation exists only for
|
|
39
|
+
* these two platforms, so the pairing is static.
|
|
40
|
+
*/
|
|
41
|
+
const HOOK_PLATFORMS = [
|
|
42
|
+
{ name: 'claude-code', status: claudeCodeHookStatus, install: installClaudeCodeHooks },
|
|
43
|
+
{ name: 'kiro', status: kiroHookStatus, install: installKiroHooks },
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* Platforms whose installed hook still uses the pre-shim absolute-path form.
|
|
47
|
+
* Read-only half, exported for reuse and direct testing.
|
|
48
|
+
*
|
|
49
|
+
* Only installed hooks are considered: an absent hook is a different condition
|
|
50
|
+
* (never armed, not broken), and `aidlc cost hooks status` already says so.
|
|
51
|
+
*/
|
|
52
|
+
export function legacyCostHookPlatforms(projectRoot) {
|
|
53
|
+
const legacy = [];
|
|
54
|
+
for (const p of HOOK_PLATFORMS) {
|
|
55
|
+
const status = p.status(projectRoot);
|
|
56
|
+
if (status.installed && status.legacy)
|
|
57
|
+
legacy.push(p.name);
|
|
58
|
+
}
|
|
59
|
+
return legacy;
|
|
60
|
+
}
|
|
61
|
+
function summarize(legacy) {
|
|
62
|
+
const one = legacy.length === 1;
|
|
63
|
+
return (`${legacy.length} cost hook${one ? '' : 's'} ` +
|
|
64
|
+
`still ${one ? 'names' : 'name'} an absolute node/CLI path frozen at install time ` +
|
|
65
|
+
`(${legacy.join(', ')}) — re-installed so capture survives a node or machine change`);
|
|
66
|
+
}
|
|
67
|
+
export const legacyCostHooks = {
|
|
68
|
+
id: 'legacy-cost-hooks',
|
|
69
|
+
tier: 'safe',
|
|
70
|
+
check(ctx) {
|
|
71
|
+
const legacy = legacyCostHookPlatforms(ctx.projectRoot);
|
|
72
|
+
if (legacy.length === 0)
|
|
73
|
+
return { applicable: true, pending: false };
|
|
74
|
+
return { applicable: true, pending: true, description: summarize(legacy) };
|
|
75
|
+
},
|
|
76
|
+
apply(ctx) {
|
|
77
|
+
const legacy = legacyCostHookPlatforms(ctx.projectRoot);
|
|
78
|
+
if (legacy.length === 0)
|
|
79
|
+
return { changed: false, summary: 'no legacy cost hooks' };
|
|
80
|
+
// process.execPath and the resolved CLI are only *hints* for the shim; they
|
|
81
|
+
// are validated at run time and never written into the command text, so a
|
|
82
|
+
// hint captured here going stale later is no longer a failure mode.
|
|
83
|
+
const nodePath = process.execPath;
|
|
84
|
+
const cliPath = cliEntryPath();
|
|
85
|
+
for (const p of HOOK_PLATFORMS) {
|
|
86
|
+
if (legacy.includes(p.name))
|
|
87
|
+
p.install(ctx.projectRoot, nodePath, cliPath);
|
|
88
|
+
}
|
|
89
|
+
return { changed: true, summary: summarize(legacy) };
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=legacy-cost-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-cost-hooks.js","sourceRoot":"","sources":["../../../src/doctor/migrations/legacy-cost-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AASzD;;;;;;;GAOG;AACH,MAAM,cAAc,GAAmB;IACrC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,sBAAsB,EAAE;IACtF,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,EAAE;CACpE,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,MAAgB;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAChC,OAAO,CACL,GAAG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;QAC9C,SAAS,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,oDAAoD;QACnF,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,+DAA+D,CACrF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAc;IACxC,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,MAAM;IACZ,KAAK,CAAC,GAAG;QACP,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACrE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7E,CAAC;IACD,KAAK,CAAC,GAAG;QACP,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAEpF,4EAA4E;QAC5E,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;YAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rasensio/aidlc",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"description": "AI Development Lifecycle Framework — structured lifecycle guidance for AI coding agents across platforms",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"commander": "15.0.0",
|
|
25
25
|
"picomatch": "4.0.5",
|
|
26
26
|
"yaml": "2.9.0",
|
|
27
|
-
"@rasensio/aidlc-content": "1.
|
|
27
|
+
"@rasensio/aidlc-content": "1.11.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "22.15.32",
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* stale-cost-hooks migration: report installed cost hooks whose recorded CLI
|
|
3
|
-
* path no longer resolves on disk.
|
|
4
|
-
*
|
|
5
|
-
* Report-only, `safe` tier. The repair rewrites project files, so it belongs to
|
|
6
|
-
* `aidlc cost hooks install` — a diagnostic must not silently rewrite a user's
|
|
7
|
-
* .claude/settings.json or .kiro/hooks/. Same reasoning as unknown-agent-claims.
|
|
8
|
-
*
|
|
9
|
-
* Why this exists: hook commands are written with ABSOLUTE paths to both the
|
|
10
|
-
* node binary and the globally installed CLI. A username change, a new machine,
|
|
11
|
-
* or an `nvm` upgrade invalidates them, and the hook then fails silently —
|
|
12
|
-
* nothing executes, nothing reaches capture.log, and `aidlc cost` reports no
|
|
13
|
-
* data forever with no indication why. Observed in a real project whose hooks
|
|
14
|
-
* still named `/Users/rodrigo` and node v24.9.0 long after the account and
|
|
15
|
-
* runtime had moved on: capture had been dead for four days, every phase read
|
|
16
|
-
* $0.00, and no command said anything was wrong.
|
|
17
|
-
*
|
|
18
|
-
* The detection already existed — `commandResolvable` on both hook-status
|
|
19
|
-
* functions — and had no caller outside `aidlc cost hooks status`, which a
|
|
20
|
-
* human has to remember to run. A guard nobody invokes is the same shape as the
|
|
21
|
-
* cost feature whose arming was manual and therefore never armed.
|
|
22
|
-
*
|
|
23
|
-
* Self-clearing (the cost-capture-noise lesson: a suppression guard needs its
|
|
24
|
-
* counterpart verified to exist). Reinstalling the hooks makes the path resolve
|
|
25
|
-
* and silences this without anyone editing state.
|
|
26
|
-
*/
|
|
27
|
-
import type { Migration } from '../types.js';
|
|
28
|
-
/**
|
|
29
|
-
* Platforms whose cost hooks are installed but point at a path that is gone.
|
|
30
|
-
* Read-only half, exported for reuse and for direct testing.
|
|
31
|
-
*
|
|
32
|
-
* Only installed hooks are reported: an absent hook is a different condition
|
|
33
|
-
* (never armed, not broken) and `aidlc cost hooks status` already says so.
|
|
34
|
-
*/
|
|
35
|
-
export declare function staleCostHookPlatforms(projectRoot: string): string[];
|
|
36
|
-
export declare const staleCostHooks: Migration;
|
|
37
|
-
//# sourceMappingURL=stale-cost-hooks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stale-cost-hooks.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/stale-cost-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAwB7C;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAOpE;AAWD,eAAO,MAAM,cAAc,EAAE,SAgB5B,CAAC"}
|