@tekyzinc/gsd-t 5.17.11 → 5.17.12
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 +22 -0
- package/README.md +1 -1
- package/bin/gsd-t-graph-query-cli.cjs +28 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to GSD-T are documented here. Updated with each release.
|
|
4
4
|
|
|
5
|
+
## [5.17.12] - 2026-09-02
|
|
6
|
+
|
|
7
|
+
### Fixed — an import written `.js` never resolved to its `.ts` source, so `who-imports` answered "nothing imports this"
|
|
8
|
+
|
|
9
|
+
`who-imports src/content/dom-observer.ts` in binvoice returned 0 importers with
|
|
10
|
+
coverage "complete" while five real importers sat in the edges table. TypeScript
|
|
11
|
+
ESM requires an import to be WRITTEN `./dom-observer.js` even though the file on
|
|
12
|
+
disk is `dom-observer.ts`. The resolver only ever APPENDED extensions
|
|
13
|
+
(`x.js`, `x.js.ts`, …) and never SWAPPED one, so the specifier could not reach
|
|
14
|
+
its source. 817 of binvoice's 2,376 import edges (34%) were unresolvable this way,
|
|
15
|
+
each reading as "safe to delete."
|
|
16
|
+
|
|
17
|
+
- `bin/gsd-t-graph-query-cli.cjs`: after the append pass, try the swap
|
|
18
|
+
(`.js`→`.ts`/`.tsx`, `.mjs`→`.mts`, `.cjs`→`.cts`) on both the relative and
|
|
19
|
+
alias-expanded routes. A real `.js` on disk still wins; a package specifier
|
|
20
|
+
stays as written. `[RULE] query-resolves-js-specifier-to-ts-source`.
|
|
21
|
+
- `test/m114-nested-tsconfig-graph.test.js`: three end-to-end tests that index a
|
|
22
|
+
tiny repo and query it through the real CLI — `.js`→`.ts` resolves, a real
|
|
23
|
+
`.js` beats the swap, an external package is not rewritten.
|
|
24
|
+
|
|
25
|
+
Re-run `gsd-t graph index` is NOT required — resolution happens at query time.
|
|
26
|
+
|
|
5
27
|
## [5.17.11] - 2026-09-01
|
|
6
28
|
|
|
7
29
|
### Fixed — every arrow-function export was invisible to the code graph
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GSD-T: Contract-Driven Development for Claude Code
|
|
2
2
|
|
|
3
|
-
**v5.17.
|
|
3
|
+
**v5.17.12** - A methodology for reliable, parallelizable development using Claude Code with optional Agent Teams support.
|
|
4
4
|
|
|
5
5
|
**Eliminates context rot** — task-level fresh dispatch (one subagent per task, ~10-20% context each) means compaction never triggers.
|
|
6
6
|
**Compaction-proof debug loops** — `gsd-t headless --debug-loop` runs test-fix-retest cycles as separate `claude -p` sessions. A JSONL debug ledger persists all hypothesis/fix/learning history across fresh sessions. Anti-repetition preamble injection prevents retrying failed hypotheses. Escalation tiers (sonnet → opus → human) and a hard iteration ceiling enforced externally.
|
|
@@ -525,6 +525,25 @@ function loadSqliteStore(dbPath) {
|
|
|
525
525
|
// expanded alias is ALREADY project-relative and must not be — joining it to
|
|
526
526
|
// the importer's directory would produce `src/app/src/lib/db`. So the two
|
|
527
527
|
// take different routes to the same place: add the extension either way.
|
|
528
|
+
// [RULE] query-resolves-js-specifier-to-ts-source
|
|
529
|
+
//
|
|
530
|
+
// binvoice, 2026-09-02: `who-imports src/content/dom-observer.ts` returned 0
|
|
531
|
+
// importers with coverage "complete" while five real importers sat in the
|
|
532
|
+
// edges table. TypeScript ESM requires an import to be WRITTEN `.js` even
|
|
533
|
+
// though the file on disk is `.ts` — so the edge says `./dom-observer.js`
|
|
534
|
+
// and no amount of appending extensions reaches `dom-observer.ts`. It has to
|
|
535
|
+
// SWAP the extension, not append to it. 817 of binvoice's 2,376 import edges
|
|
536
|
+
// (34%) were unresolvable this way, each answering "nothing imports this" —
|
|
537
|
+
// which reads as safe to delete.
|
|
538
|
+
const jsToTsCandidates = (p) => {
|
|
539
|
+
const m = /\.(js|jsx|mjs|cjs)$/.exec(p);
|
|
540
|
+
if (!m) return [];
|
|
541
|
+
const stem = p.slice(0, -m[0].length);
|
|
542
|
+
// .js->.ts/.tsx, .jsx->.tsx, .mjs->.mts, .cjs->.cts — the source files a
|
|
543
|
+
// bundler would have compiled INTO the specifier that was written.
|
|
544
|
+
return [stem + ".ts", stem + ".tsx", stem + ".mts", stem + ".cts"];
|
|
545
|
+
};
|
|
546
|
+
|
|
528
547
|
const resolveDst = (srcFile, dst) => {
|
|
529
548
|
if (typeof dst !== "string" || !dst) return dst;
|
|
530
549
|
|
|
@@ -536,6 +555,10 @@ function loadSqliteStore(dbPath) {
|
|
|
536
555
|
for (const ext of EXTS) {
|
|
537
556
|
if (fileIds.has(base + ext)) return base + ext;
|
|
538
557
|
}
|
|
558
|
+
// An alias-expanded path can carry the same written-.js convention.
|
|
559
|
+
for (const cand of jsToTsCandidates(base)) {
|
|
560
|
+
if (fileIds.has(cand)) return cand;
|
|
561
|
+
}
|
|
539
562
|
return dst; // genuinely external — keep it exactly as written
|
|
540
563
|
}
|
|
541
564
|
|
|
@@ -544,6 +567,11 @@ function loadSqliteStore(dbPath) {
|
|
|
544
567
|
for (const ext of EXTS) {
|
|
545
568
|
if (fileIds.has(base + ext)) return base + ext;
|
|
546
569
|
}
|
|
570
|
+
// TypeScript ESM: the import is written `.js`, the source is `.ts`. Swap,
|
|
571
|
+
// don't append. [RULE] query-resolves-js-specifier-to-ts-source
|
|
572
|
+
for (const cand of jsToTsCandidates(base)) {
|
|
573
|
+
if (fileIds.has(cand)) return cand;
|
|
574
|
+
}
|
|
547
575
|
return base; // no indexed match (external/missing) — keep the resolved path
|
|
548
576
|
};
|
|
549
577
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tekyzinc/gsd-t",
|
|
3
|
-
"version": "5.17.
|
|
3
|
+
"version": "5.17.12",
|
|
4
4
|
"description": "GSD-T: Contract-Driven Development for Claude Code — 54 slash commands with headless-by-default workflow spawning, unattended supervisor relay with event stream, graph-powered code analysis, real-time agent dashboard, task telemetry, doc-ripple enforcement, backlog management, impact analysis, test sync, milestone archival, and PRD generation",
|
|
5
5
|
"author": "Tekyz, Inc.",
|
|
6
6
|
"license": "MIT",
|