@selvakumaresra/specship 0.9.0 → 0.10.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/commands/ss-domain.md +98 -0
- package/commands/ss-triage.md +177 -0
- package/dist/bin/specship.js +249 -0
- package/dist/bin/specship.js.map +1 -1
- package/dist/db/schema.sql +1 -1
- package/dist/db/spec-queries.d.ts +29 -0
- package/dist/db/spec-queries.d.ts.map +1 -1
- package/dist/db/spec-queries.js +63 -0
- package/dist/db/spec-queries.js.map +1 -1
- package/dist/enforce/enforce.d.ts +70 -0
- package/dist/enforce/enforce.d.ts.map +1 -0
- package/dist/enforce/enforce.js +125 -0
- package/dist/enforce/enforce.js.map +1 -0
- package/dist/extraction/specs/markdown-spec-extractor.d.ts +21 -0
- package/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -1
- package/dist/extraction/specs/markdown-spec-extractor.js +144 -0
- package/dist/extraction/specs/markdown-spec-extractor.js.map +1 -1
- package/dist/fitness/fitness.d.ts +75 -0
- package/dist/fitness/fitness.d.ts.map +1 -0
- package/dist/fitness/fitness.js +204 -0
- package/dist/fitness/fitness.js.map +1 -0
- package/dist/graph/maintainability.d.ts +101 -0
- package/dist/graph/maintainability.d.ts.map +1 -0
- package/dist/graph/maintainability.js +278 -0
- package/dist/graph/maintainability.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -1
- package/dist/index.js.map +1 -1
- package/dist/installer/instructions-template.d.ts +5 -4
- package/dist/installer/instructions-template.d.ts.map +1 -1
- package/dist/installer/instructions-template.js +10 -4
- package/dist/installer/instructions-template.js.map +1 -1
- package/dist/installer/targets/claude.d.ts.map +1 -1
- package/dist/installer/targets/claude.js +4 -0
- package/dist/installer/targets/claude.js.map +1 -1
- package/dist/installer/targets/shared.d.ts.map +1 -1
- package/dist/installer/targets/shared.js +4 -0
- package/dist/installer/targets/shared.js.map +1 -1
- package/dist/mcp/fitness-tool.d.ts +12 -0
- package/dist/mcp/fitness-tool.d.ts.map +1 -0
- package/dist/mcp/fitness-tool.js +46 -0
- package/dist/mcp/fitness-tool.js.map +1 -0
- package/dist/mcp/maintainability-tool.d.ts +13 -0
- package/dist/mcp/maintainability-tool.d.ts.map +1 -0
- package/dist/mcp/maintainability-tool.js +64 -0
- package/dist/mcp/maintainability-tool.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.d.ts.map +1 -1
- package/dist/mcp/server-instructions.js +3 -2
- package/dist/mcp/server-instructions.js.map +1 -1
- package/dist/mcp/spec-tools.d.ts.map +1 -1
- package/dist/mcp/spec-tools.js +115 -1
- package/dist/mcp/spec-tools.js.map +1 -1
- package/dist/mcp/tools.d.ts +13 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +75 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/resolution/domain-gap-seed.d.ts +60 -0
- package/dist/resolution/domain-gap-seed.d.ts.map +1 -0
- package/dist/resolution/domain-gap-seed.js +87 -0
- package/dist/resolution/domain-gap-seed.js.map +1 -0
- package/dist/resolution/spec-link-resolver.d.ts +46 -1
- package/dist/resolution/spec-link-resolver.d.ts.map +1 -1
- package/dist/resolution/spec-link-resolver.js +78 -0
- package/dist/resolution/spec-link-resolver.js.map +1 -1
- package/dist/server/routes/domain.js +0 -0
- package/dist/server/routes/maintainability.js +18 -0
- package/dist/server/server.js +4 -0
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -1
- package/dist/web/chunk-EZZBWC7Z.js +1 -0
- package/dist/web/{chunk-UBOZGQNK.js → chunk-IZQXYQNQ.js} +1 -1
- package/dist/web/chunk-JQXCRIK2.js +1 -0
- package/dist/web/{chunk-ASZ77FMZ.js → chunk-JT2YIHPL.js} +1 -1
- package/dist/web/{chunk-WLIMNDS3.js → chunk-ONKHTXHJ.js} +1 -1
- package/dist/web/{chunk-FHZHD2ZG.js → chunk-P5JX67LT.js} +1 -1
- package/dist/web/{chunk-RJLLYZEQ.js → chunk-PDTQX2UL.js} +1 -1
- package/dist/web/{chunk-RASJHUXS.js → chunk-XWDR6MPC.js} +1 -1
- package/dist/web/{chunk-D5OCNEJA.js → chunk-ZG7H3XPL.js} +1 -1
- package/dist/web/index.html +1 -1
- package/dist/web/main-GYPY5V5H.js +1 -0
- package/package.json +1 -1
- package/dist/web/main-P33TUYUP.js +0 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Domain gap-seed (REQ-DOMAIN-003).
|
|
4
|
+
*
|
|
5
|
+
* A read-only pass that surfaces what the domain knowledge layer does NOT yet
|
|
6
|
+
* cover, so an author (or the `/ss-domain` command, REQ-DOMAIN-004) can decide
|
|
7
|
+
* what to document next. It answers two questions against current DB state:
|
|
8
|
+
*
|
|
9
|
+
* - which structural code entities (classes, structs, interfaces, routes,
|
|
10
|
+
* components) are reached by NO domain fact; and
|
|
11
|
+
* - which non-domain specs (documents, requirements, …) have NO domain fact
|
|
12
|
+
* hanging off them.
|
|
13
|
+
*
|
|
14
|
+
* A domain fact carries no direct domain→code rows. It reaches code transitively
|
|
15
|
+
* through its spec-tier chain (`parentId` + `metadata.depends_on`), resolved by
|
|
16
|
+
* {@link SpecLinkResolver.getInheritedLinks} (REQ-DOMAIN-002). An entity is
|
|
17
|
+
* "documented" when some domain fact's inherited links resolve to that entity's
|
|
18
|
+
* node; a spec is "documented" when some domain fact's spec-tier chain reaches
|
|
19
|
+
* it. Everything else is a gap.
|
|
20
|
+
*
|
|
21
|
+
* COMPUTED from live state — writes nothing. Like the spec funnel
|
|
22
|
+
* (`computeSpecFunnel`), the result is always fresh and needs no bookkeeping.
|
|
23
|
+
*/
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.computeDomainGapSeed = computeDomainGapSeed;
|
|
26
|
+
/** The structural node kinds the gap-seed considers "domain-worthy" entities. */
|
|
27
|
+
const IN_SCOPE_ENTITY_KINDS = [
|
|
28
|
+
'class',
|
|
29
|
+
'struct',
|
|
30
|
+
'interface',
|
|
31
|
+
'route',
|
|
32
|
+
'component',
|
|
33
|
+
];
|
|
34
|
+
/**
|
|
35
|
+
* Compute the domain gap-seed: the in-scope entities and non-domain specs that
|
|
36
|
+
* no domain fact yet covers. Read-only — issues only `SELECT`s through the
|
|
37
|
+
* passed query objects and the resolver's read-time `getInheritedLinks`.
|
|
38
|
+
*/
|
|
39
|
+
function computeDomainGapSeed(queries, specQueries, resolver) {
|
|
40
|
+
// In-scope entities: every structural code symbol a domain fact could document.
|
|
41
|
+
const entities = IN_SCOPE_ENTITY_KINDS.flatMap((k) => queries.getNodesByKind(k));
|
|
42
|
+
// Build the documented sets by walking each domain fact's spec-tier chain.
|
|
43
|
+
const allSpecs = specQueries.getAllSpecs();
|
|
44
|
+
const documentedNodeIds = new Set();
|
|
45
|
+
const documentedSpecIds = new Set();
|
|
46
|
+
for (const spec of allSpecs) {
|
|
47
|
+
if (spec.kind !== 'domain')
|
|
48
|
+
continue;
|
|
49
|
+
const inherited = resolver.getInheritedLinks(spec);
|
|
50
|
+
for (const { link } of inherited.links) {
|
|
51
|
+
if (link.resolvedNodeId)
|
|
52
|
+
documentedNodeIds.add(link.resolvedNodeId);
|
|
53
|
+
}
|
|
54
|
+
// Every indexed spec the fact reaches counts as documented — even one that
|
|
55
|
+
// contributes no code link of its own (REQ-DOMAIN-003.A2).
|
|
56
|
+
for (const reached of inherited.visitedSpecIds) {
|
|
57
|
+
documentedSpecIds.add(reached);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Gap entities: in-scope entities no domain fact resolves to (A1, A2).
|
|
61
|
+
const gapEntities = entities
|
|
62
|
+
.filter((n) => !documentedNodeIds.has(n.id))
|
|
63
|
+
.map((n) => ({
|
|
64
|
+
nodeId: n.id,
|
|
65
|
+
name: n.name,
|
|
66
|
+
qualifiedName: n.qualifiedName,
|
|
67
|
+
kind: n.kind,
|
|
68
|
+
filePath: n.filePath,
|
|
69
|
+
}));
|
|
70
|
+
// Non-domain specs are the spec-side universe; a domain fact is never its own
|
|
71
|
+
// documentation target.
|
|
72
|
+
const nonDomainSpecs = allSpecs.filter((s) => s.kind !== 'domain');
|
|
73
|
+
const gapSpecs = nonDomainSpecs
|
|
74
|
+
.filter((s) => !documentedSpecIds.has(s.id))
|
|
75
|
+
.map((s) => ({ id: s.id, title: s.title, kind: s.kind }));
|
|
76
|
+
// Coverage over the entity ∪ spec universe (A3): the denominator is the total
|
|
77
|
+
// count of in-scope entities plus non-domain specs, so documented + gaps
|
|
78
|
+
// always reconstitutes it exactly.
|
|
79
|
+
const gaps = gapEntities.length + gapSpecs.length;
|
|
80
|
+
const documented = entities.length + nonDomainSpecs.length - gaps;
|
|
81
|
+
return {
|
|
82
|
+
entities: gapEntities,
|
|
83
|
+
specs: gapSpecs,
|
|
84
|
+
coverage: { documented, gaps },
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=domain-gap-seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-gap-seed.js","sourceRoot":"","sources":["../../src/resolution/domain-gap-seed.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AAoDH,oDAyDC;AAtGD,iFAAiF;AACjF,MAAM,qBAAqB,GAAe;IACxC,OAAO;IACP,QAAQ;IACR,WAAW;IACX,OAAO;IACP,WAAW;CACZ,CAAC;AAiCF;;;;GAIG;AACH,SAAgB,oBAAoB,CAClC,OAAqB,EACrB,WAAwB,EACxB,QAA0B;IAE1B,gFAAgF;IAChF,MAAM,QAAQ,GAAW,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3D,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAC1B,CAAC;IAEF,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACnD,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,cAAc;gBAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtE,CAAC;QACD,2EAA2E;QAC3E,2DAA2D;QAC3D,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;YAC/C,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,MAAM,WAAW,GAAoB,QAAQ;SAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,MAAM,EAAE,CAAC,CAAC,EAAE;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;KACrB,CAAC,CAAC,CAAC;IAEN,8EAA8E;IAC9E,wBAAwB;IACxB,MAAM,cAAc,GAAW,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAkB,cAAc;SAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAE5D,8EAA8E;IAC9E,yEAAyE;IACzE,mCAAmC;IACnC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;IAElE,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* Highest-confidence signal wins per logical key — `upsertSpecLink` enforces
|
|
28
28
|
* this.
|
|
29
29
|
*/
|
|
30
|
-
import { Spec } from '../types';
|
|
30
|
+
import { Spec, SpecLink } from '../types';
|
|
31
31
|
import { QueryBuilder } from '../db/queries';
|
|
32
32
|
import { SpecQueries } from '../db/spec-queries';
|
|
33
33
|
import { SpecLinkCandidate } from '../extraction/specs/types';
|
|
@@ -45,6 +45,35 @@ export interface SpecLinkResolverStats {
|
|
|
45
45
|
candidatesApplied: number;
|
|
46
46
|
commentLinksApplied: number;
|
|
47
47
|
}
|
|
48
|
+
/** One code link inherited by a spec through a spec→spec dependency edge. */
|
|
49
|
+
export interface InheritedLink {
|
|
50
|
+
/** The dependency spec id whose `implements` link this is. */
|
|
51
|
+
viaSpecId: string;
|
|
52
|
+
/** The inherited link itself (carries live `state` / `driftAxis`). */
|
|
53
|
+
link: SpecLink;
|
|
54
|
+
}
|
|
55
|
+
/** Result of {@link SpecLinkResolver.getInheritedLinks}. */
|
|
56
|
+
export interface InheritedLinksResult {
|
|
57
|
+
/** Code links reached transitively through the spec's parent / depends_on chain. */
|
|
58
|
+
links: InheritedLink[];
|
|
59
|
+
/** Declared dependency spec ids that don't resolve to an indexed spec (gaps). */
|
|
60
|
+
gaps: string[];
|
|
61
|
+
/**
|
|
62
|
+
* Every *indexed* spec id reached through the spec-tier chain (excludes the
|
|
63
|
+
* originating spec and the unresolved `gaps`). A spec a fact reaches but that
|
|
64
|
+
* contributes no code link still appears here, so consumers like the domain
|
|
65
|
+
* gap-seed (REQ-DOMAIN-003) can treat "reached by a domain fact" as documented
|
|
66
|
+
* even when the reached spec carries no `spec_links` of its own.
|
|
67
|
+
*/
|
|
68
|
+
visitedSpecIds: string[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The spec ids a spec links to at the spec tier: its `parentId` plus every
|
|
72
|
+
* entry of `metadata.depends_on` (REQ-DOMAIN-002). `depends_on` may be a
|
|
73
|
+
* single string or a string[]; both normalize to a deduped list of non-empty
|
|
74
|
+
* ids.
|
|
75
|
+
*/
|
|
76
|
+
export declare function sourceSpecIds(spec: Spec): string[];
|
|
48
77
|
export declare class SpecLinkResolver {
|
|
49
78
|
private queries;
|
|
50
79
|
private specQueries;
|
|
@@ -98,6 +127,22 @@ export declare class SpecLinkResolver {
|
|
|
98
127
|
* needed, call specship_link_verify to take state back to `verified`.
|
|
99
128
|
*/
|
|
100
129
|
markSpecDrifted(specId: string, newSpecHash: string): number;
|
|
130
|
+
/**
|
|
131
|
+
* Compute the code links a spec inherits transitively through its
|
|
132
|
+
* spec→spec edges (`parentId` + `metadata.depends_on`). A `domain` fact
|
|
133
|
+
* carries NO direct domain→code rows; its code association and drift state
|
|
134
|
+
* are derived here by following those spec edges to requirement specs and
|
|
135
|
+
* reusing *their* `spec_links` — whose `resolved_node_id`/`state` the normal
|
|
136
|
+
* `resolveAll`/`resolveLinksForFiles` pass already refreshed this sync. So
|
|
137
|
+
* "re-resolved after each sync" holds with no stored domain rows, and drift
|
|
138
|
+
* surfaces automatically through each inherited link's live `state`.
|
|
139
|
+
*
|
|
140
|
+
* Read-time derivation only — writes nothing. Cycle-guarded via a visited
|
|
141
|
+
* `Set`, depth-capped (default {@link INHERITED_LINK_MAX_DEPTH}). A declared
|
|
142
|
+
* dependency that doesn't resolve to an indexed spec is returned in `gaps`
|
|
143
|
+
* (an unlinked/proposed fact, never an error — REQ-DOMAIN-002.A3).
|
|
144
|
+
*/
|
|
145
|
+
getInheritedLinks(spec: Spec, maxDepth?: number): InheritedLinksResult;
|
|
101
146
|
private makeStats;
|
|
102
147
|
}
|
|
103
148
|
//# sourceMappingURL=spec-link-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-link-resolver.d.ts","sourceRoot":"","sources":["../../src/resolution/spec-link-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAGL,IAAI,
|
|
1
|
+
{"version":3,"file":"spec-link-resolver.d.ts","sourceRoot":"","sources":["../../src/resolution/spec-link-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAGL,IAAI,EACJ,QAAQ,EAGT,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAY9D,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,4DAA4D;AAC5D,MAAM,WAAW,oBAAoB;IACnC,oFAAoF;IACpF,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,iFAAiF;IACjF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAKD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAalD;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,IAAI,CAA0B;gBAGpC,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,WAAW,EACxB,IAAI,GAAE,uBAA4B;IAOpC;;;OAGG;IACH,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,qBAAqB;IAQnE;;;OAGG;IACH,UAAU,IAAI,qBAAqB;IAQnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,cAAc;IA+CtB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAwBzB;;;OAGG;IACH,0BAA0B,CACxB,UAAU,EAAE,iBAAiB,EAAE,EAC/B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EACnC,KAAK,CAAC,EAAE,qBAAqB,GAC5B,IAAI;IAgCP;;;;;;;;;;OAUG;IACH,qBAAqB,CACnB,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,CAAC,EAAE,qBAAqB,GAC5B,IAAI;IA4CP;;;;;;;OAOG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAgB5D;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CACf,IAAI,EAAE,IAAI,EACV,QAAQ,GAAE,MAAiC,GAC1C,oBAAoB;IA4CvB,OAAO,CAAC,SAAS;CAUlB"}
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
*/
|
|
31
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
32
|
exports.SpecLinkResolver = void 0;
|
|
33
|
+
exports.sourceSpecIds = sourceSpecIds;
|
|
33
34
|
/** Pattern: `// @implements REQ-X` or `# @implements REQ-X` etc. */
|
|
34
35
|
const CODE_COMMENT_IMPL = /@implements\s+([A-Za-z][A-Za-z0-9_.-]*)/g;
|
|
35
36
|
/**
|
|
@@ -38,6 +39,31 @@ const CODE_COMMENT_IMPL = /@implements\s+([A-Za-z][A-Za-z0-9_.-]*)/g;
|
|
|
38
39
|
* `orphaned` won't become `implemented` again until the agent re-asserts.
|
|
39
40
|
*/
|
|
40
41
|
const STICKY_STATES = new Set(['verified', 'broken']);
|
|
42
|
+
/** Default cap on how deep the parent / depends_on chain is followed. */
|
|
43
|
+
const INHERITED_LINK_MAX_DEPTH = 5;
|
|
44
|
+
/**
|
|
45
|
+
* The spec ids a spec links to at the spec tier: its `parentId` plus every
|
|
46
|
+
* entry of `metadata.depends_on` (REQ-DOMAIN-002). `depends_on` may be a
|
|
47
|
+
* single string or a string[]; both normalize to a deduped list of non-empty
|
|
48
|
+
* ids.
|
|
49
|
+
*/
|
|
50
|
+
function sourceSpecIds(spec) {
|
|
51
|
+
const out = [];
|
|
52
|
+
if (typeof spec.parentId === 'string' && spec.parentId.length > 0) {
|
|
53
|
+
out.push(spec.parentId);
|
|
54
|
+
}
|
|
55
|
+
const dep = spec.metadata?.depends_on;
|
|
56
|
+
if (Array.isArray(dep)) {
|
|
57
|
+
for (const d of dep)
|
|
58
|
+
if (typeof d === 'string' && d.length > 0)
|
|
59
|
+
out.push(d);
|
|
60
|
+
}
|
|
61
|
+
else if (typeof dep === 'string' && dep.length > 0) {
|
|
62
|
+
out.push(dep);
|
|
63
|
+
}
|
|
64
|
+
// Dedup while preserving order.
|
|
65
|
+
return [...new Set(out)];
|
|
66
|
+
}
|
|
41
67
|
class SpecLinkResolver {
|
|
42
68
|
queries;
|
|
43
69
|
specQueries;
|
|
@@ -242,6 +268,58 @@ class SpecLinkResolver {
|
|
|
242
268
|
return count;
|
|
243
269
|
}
|
|
244
270
|
// ===========================================================================
|
|
271
|
+
// Transitive (spec-tier) inheritance — REQ-DOMAIN-002
|
|
272
|
+
// ===========================================================================
|
|
273
|
+
/**
|
|
274
|
+
* Compute the code links a spec inherits transitively through its
|
|
275
|
+
* spec→spec edges (`parentId` + `metadata.depends_on`). A `domain` fact
|
|
276
|
+
* carries NO direct domain→code rows; its code association and drift state
|
|
277
|
+
* are derived here by following those spec edges to requirement specs and
|
|
278
|
+
* reusing *their* `spec_links` — whose `resolved_node_id`/`state` the normal
|
|
279
|
+
* `resolveAll`/`resolveLinksForFiles` pass already refreshed this sync. So
|
|
280
|
+
* "re-resolved after each sync" holds with no stored domain rows, and drift
|
|
281
|
+
* surfaces automatically through each inherited link's live `state`.
|
|
282
|
+
*
|
|
283
|
+
* Read-time derivation only — writes nothing. Cycle-guarded via a visited
|
|
284
|
+
* `Set`, depth-capped (default {@link INHERITED_LINK_MAX_DEPTH}). A declared
|
|
285
|
+
* dependency that doesn't resolve to an indexed spec is returned in `gaps`
|
|
286
|
+
* (an unlinked/proposed fact, never an error — REQ-DOMAIN-002.A3).
|
|
287
|
+
*/
|
|
288
|
+
getInheritedLinks(spec, maxDepth = INHERITED_LINK_MAX_DEPTH) {
|
|
289
|
+
const links = [];
|
|
290
|
+
const gaps = [];
|
|
291
|
+
const visitedSpecIds = [];
|
|
292
|
+
const visited = new Set([spec.id]);
|
|
293
|
+
const seenLinkIds = new Set();
|
|
294
|
+
// BFS over the parent / depends_on chain.
|
|
295
|
+
const queue = sourceSpecIds(spec).map((id) => ({ id, depth: 1 }));
|
|
296
|
+
while (queue.length > 0) {
|
|
297
|
+
const { id, depth } = queue.shift();
|
|
298
|
+
if (visited.has(id))
|
|
299
|
+
continue;
|
|
300
|
+
visited.add(id);
|
|
301
|
+
const src = this.specQueries.getSpecById(id);
|
|
302
|
+
if (!src) {
|
|
303
|
+
gaps.push(id);
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
visitedSpecIds.push(id);
|
|
307
|
+
for (const link of this.specQueries.getLinksBySpec(id)) {
|
|
308
|
+
if (seenLinkIds.has(link.id))
|
|
309
|
+
continue;
|
|
310
|
+
seenLinkIds.add(link.id);
|
|
311
|
+
links.push({ viaSpecId: id, link });
|
|
312
|
+
}
|
|
313
|
+
if (depth < maxDepth) {
|
|
314
|
+
for (const nextId of sourceSpecIds(src)) {
|
|
315
|
+
if (!visited.has(nextId))
|
|
316
|
+
queue.push({ id: nextId, depth: depth + 1 });
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
return { links, gaps, visitedSpecIds };
|
|
321
|
+
}
|
|
322
|
+
// ===========================================================================
|
|
245
323
|
// Helpers
|
|
246
324
|
// ===========================================================================
|
|
247
325
|
makeStats() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-link-resolver.js","sourceRoot":"","sources":["../../src/resolution/spec-link-resolver.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;;
|
|
1
|
+
{"version":3,"file":"spec-link-resolver.js","sourceRoot":"","sources":["../../src/resolution/spec-link-resolver.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GET /api/maintainability (REQ-MAINT-003).
|
|
3
|
+
*
|
|
4
|
+
* Returns the active project's graph-derived maintainability report — coupling,
|
|
5
|
+
* size hotspots, dependency cycles, dead-code candidates. Project-scoped (uses
|
|
6
|
+
* the active instance, like the graph/spec routes), driven through the instance
|
|
7
|
+
* method `getMaintainability()` so the server never runtime-imports the package.
|
|
8
|
+
*/
|
|
9
|
+
export async function registerMaintainabilityRoutes(app) {
|
|
10
|
+
app.get('/api/maintainability', async (req, reply) => {
|
|
11
|
+
const cg = await app.activeCg(req);
|
|
12
|
+
if (!cg) {
|
|
13
|
+
reply.code(409).send({ error: 'no project selected', code: 'no_project' });
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
return cg.getMaintainability();
|
|
17
|
+
});
|
|
18
|
+
}
|
package/dist/server/server.js
CHANGED
|
@@ -29,6 +29,8 @@ import { registerMemoryRoutes } from './routes/memory.js';
|
|
|
29
29
|
import { registerProjectsRoutes } from './routes/projects.js';
|
|
30
30
|
import { registerEventsRoutes } from './routes/events.js';
|
|
31
31
|
import { registerReflectRoutes } from './routes/reflect.js';
|
|
32
|
+
import { registerMaintainabilityRoutes } from './routes/maintainability.js';
|
|
33
|
+
import { registerDomainRoutes } from './routes/domain.js';
|
|
32
34
|
/**
|
|
33
35
|
* Lazy-import the specship core. Two delivery shapes are supported:
|
|
34
36
|
*
|
|
@@ -168,6 +170,8 @@ export async function createServer(options) {
|
|
|
168
170
|
await registerProjectsRoutes(app);
|
|
169
171
|
await registerEventsRoutes(app);
|
|
170
172
|
await registerReflectRoutes(app);
|
|
173
|
+
await registerMaintainabilityRoutes(app);
|
|
174
|
+
await registerDomainRoutes(app);
|
|
171
175
|
// Optional: serve the built Angular UI from `webDir` and fall back to
|
|
172
176
|
// index.html for client-side routes. Must register AFTER the /api/*
|
|
173
177
|
// routes so they take precedence over the SPA wildcard.
|
package/dist/types.d.ts
CHANGED
|
@@ -383,8 +383,10 @@ export interface FindRelevantContextOptions {
|
|
|
383
383
|
* - `acceptance`: an acceptance criterion under a requirement
|
|
384
384
|
* - `contract`: an API/data contract (OpenAPI, AsyncAPI, etc.)
|
|
385
385
|
* - `data_schema`: a data shape definition
|
|
386
|
+
* - `domain`: a human-confirmed domain fact (term / rule / decision /
|
|
387
|
+
* constraint), authored under `specs/domain/` (REQ-DOMAIN-001)
|
|
386
388
|
*/
|
|
387
|
-
export declare const SPEC_KINDS: readonly ["document", "requirement", "acceptance", "contract", "data_schema", "brief"];
|
|
389
|
+
export declare const SPEC_KINDS: readonly ["document", "requirement", "acceptance", "contract", "data_schema", "brief", "domain"];
|
|
388
390
|
export type SpecKind = (typeof SPEC_KINDS)[number];
|
|
389
391
|
/**
|
|
390
392
|
* Spec source format. Each format has its own extractor under
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -92,6 +92,8 @@ exports.LANGUAGES = [
|
|
|
92
92
|
* - `acceptance`: an acceptance criterion under a requirement
|
|
93
93
|
* - `contract`: an API/data contract (OpenAPI, AsyncAPI, etc.)
|
|
94
94
|
* - `data_schema`: a data shape definition
|
|
95
|
+
* - `domain`: a human-confirmed domain fact (term / rule / decision /
|
|
96
|
+
* constraint), authored under `specs/domain/` (REQ-DOMAIN-001)
|
|
95
97
|
*/
|
|
96
98
|
exports.SPEC_KINDS = [
|
|
97
99
|
'document',
|
|
@@ -103,6 +105,10 @@ exports.SPEC_KINDS = [
|
|
|
103
105
|
// spec lifecycle, indexed as a first-class entity so the idea → spec →
|
|
104
106
|
// implemented funnel is queryable (REQ-FUNNEL-001).
|
|
105
107
|
'brief',
|
|
108
|
+
// A domain fact (`specs/domain/*.md`) — the project's ubiquitous language,
|
|
109
|
+
// rules/invariants, decisions, and constraints. Its `type` (term / rule /
|
|
110
|
+
// decision / constraint) lives in the spec's `metadata` (REQ-DOMAIN-001).
|
|
111
|
+
'domain',
|
|
106
112
|
];
|
|
107
113
|
/**
|
|
108
114
|
* Spec source format. Each format has its own extractor under
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;;;GAMG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,WAAW;IACX,OAAO;IACP,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,OAAO;IACP,UAAU;IACV,UAAU;IACV,MAAM;IACN,aAAa;IACb,YAAY;IACZ,WAAW;IACX,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,WAAW;IACX,2EAA2E;IAC3E,qEAAqE;IACrE,yEAAyE;IACzE,yBAAyB;IACzB,MAAM;CACE,CAAC;AAuBX;;;GAGG;AACU,QAAA,SAAS,GAAG;IACvB,YAAY;IACZ,YAAY;IACZ,KAAK;IACL,KAAK;IACL,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,YAAY;IACZ,SAAS;CACD,CAAC;AA0eX,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;;;GAMG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,WAAW;IACX,OAAO;IACP,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,OAAO;IACP,UAAU;IACV,UAAU;IACV,MAAM;IACN,aAAa;IACb,YAAY;IACZ,WAAW;IACX,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,WAAW;IACX,2EAA2E;IAC3E,qEAAqE;IACrE,yEAAyE;IACzE,yBAAyB;IACzB,MAAM;CACE,CAAC;AAuBX;;;GAGG;AACU,QAAA,SAAS,GAAG;IACvB,YAAY;IACZ,YAAY;IACZ,KAAK;IACL,KAAK;IACL,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,YAAY;IACZ,SAAS;CACD,CAAC;AA0eX,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACU,QAAA,UAAU,GAAG;IACxB,UAAU;IACV,aAAa;IACb,YAAY;IACZ,UAAU;IACV,aAAa;IACb,yEAAyE;IACzE,uEAAuE;IACvE,oDAAoD;IACpD,OAAO;IACP,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,QAAQ;CACA,CAAC;AAIX;;;GAGG;AACU,QAAA,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as V}from"./chunk-EMGMOEVR.js";import{a as A}from"./chunk-X2HTISHL.js";import{a as N}from"./chunk-UYC52MBC.js";import{b as B}from"./chunk-HZA6NEAB.js";import{a as $}from"./chunk-WDU3WICG.js";import{c as k}from"./chunk-SHPTC4RL.js";import{c as z}from"./chunk-GR72OOCN.js";import{a as I}from"./chunk-7RNS77UP.js";import{a as R}from"./chunk-E44X4RH2.js";import{Aa as m,Ea as P,Fa as M,Ga as E,I as y,Ia as S,Ka as s,M as h,N as w,Va as r,Wa as x,Xa as v,Ya as b,bb as O,ea as i,ka as T,lb as _,ra as d,sa as p,ua as F,va as f,wa as u,xa as l,ya as o,za as a,zb as j}from"./chunk-PDN6QYGJ.js";import{a as C,b as D}from"./chunk-Q7L6LLAK.js";var q=()=>[0,1,2],G=(e,t)=>t.type,J=(e,t)=>t.id,K=(e,t)=>t.specId+t.symbol;function L(e,t){e&1&&m(0,"app-pick-project-empty",0)}function U(e,t){e&1&&m(0,"div",7)}function W(e,t){e&1&&f(0,U,1,0,"div",7,F),e&2&&u(O(0,q))}function X(e,t){e&1&&(o(0,"div",5),r(1,"No domain data \u2014 run "),o(2,"code"),r(3,"specship index"),a(),r(4," first."),a())}function Y(e,t){e&1&&(o(0,"app-empty",6)(1,"button",8),m(2,"app-icon",9),r(3," Capture knowledge "),a()()),e&2&&(i(2),l("size",12))}function Z(e,t){if(e&1&&(o(0,"div",16),r(1),a()),e&2){let n=s().$implicit;i(),x(n.body)}}function ee(e,t){if(e&1&&(o(0,"div",24),r(1),a()),e&2){let n=t.$implicit;i(),b("governs ",n.specId," \u2192 ",n.symbol)}}function te(e,t){if(e&1&&(o(0,"div",18),f(1,ee,2,2,"div",24,K),a()),e&2){let n=s().$implicit;i(),u(n.governs)}}function ne(e,t){e&1&&m(0,"app-state-pill",20),e&2&&l("state",t)}function ie(e,t){e&1&&(o(0,"app-pill",4),r(1,"No linked code yet"),a()),e&2&&l("color","var(--text-muted)")("bg","var(--bg-elevated)")}function oe(e,t){if(e&1){let n=E();o(0,"button",25),S("click",function(){h(n);let g=s(5);return w(g.review())}),m(1,"app-icon",26),r(2," Review "),a()}e&2&&(i(),l("size",12))}function ae(e,t){if(e&1&&(o(0,"div",13)(1,"div",14)(2,"div",15),r(3),a(),d(4,Z,2,1,"div",16),o(5,"div",17),r(6),a(),d(7,te,3,0,"div",18),a(),o(8,"div",19),d(9,ne,1,1,"app-state-pill",20)(10,ie,2,2,"app-pill",4),o(11,"div",21),d(12,oe,3,1,"button",22),o(13,"button",23),m(14,"app-icon",9),r(15," Capture "),a()()()()),e&2){let n,c=t.$implicit,g=s(4);i(3),x(c.title),i(),p(c.body?4:-1),i(2),x(c.id),i(),p(c.governs.length?7:-1),i(2),p((n=g.stateOf(c))?9:c.state==="none"&&c.governs.length===0?10:-1,n),i(3),p(g.needsReview(c)?12:-1),i(2),l("size",12)}}function re(e,t){if(e&1&&(o(0,"section",10)(1,"div",11),r(2),o(3,"span",12),r(4),a()(),f(5,ae,16,7,"div",13,J),a()),e&2){let n=t.$implicit;i(2),v("",n.label," "),i(2),x(n.facts.length),i(),u(n.facts)}}function ce(e,t){if(e&1&&f(0,re,7,2,"section",10,G),e&2){let n=s(2);u(n.sections())}}function le(e,t){if(e&1&&(o(0,"div",1)(1,"app-page-head",2),P(2,3),o(3,"app-pill",4),r(4),a(),o(5,"app-pill",4),r(6),a(),M(),a(),d(7,W,2,1)(8,X,5,0,"div",5)(9,Y,4,1,"app-empty",6)(10,ce,2,0),a()),e&2){let n=s();i(3),l("color","var(--success)")("bg","var(--success-soft)"),i(),v("",n.coverage().documented," documented"),i(),l("color","var(--warn)")("bg","var(--warn-soft)"),i(),b("",n.coverage().gaps," gap",n.coverage().gaps===1?"":"s"),i(),p(n.resource.state().loading?7:n.data()?n.isEmpty()?9:10:8)}}var H=[{type:"term",label:"Terms"},{type:"rule",label:"Rules"},{type:"decision",label:"Decisions"},{type:"constraint",label:"Constraints"},{type:"other",label:"Other"}],Q=class e{api=y(R);projects=y(I);router=y(k);resource=z(this.api,()=>`/api/domain${this.projects.projectQuery()}`);data=_(()=>this.resource.state().data);coverage=_(()=>this.data()?.coverage??{documented:0,gaps:0});sections=_(()=>{let t=this.data();return t?H.map(n=>D(C({},n),{facts:t.factsByType[n.type]??[]})).filter(n=>n.facts.length>0):[]});total=_(()=>{let t=this.data();return t?H.reduce((n,c)=>n+(t.factsByType[c.type]?.length??0),0):0});isEmpty=_(()=>{let t=this.resource.state();return!t.loading&&!t.noProject&&t.data!=null&&this.total()===0});stateOf(t){return t.state==="none"?null:t.state}needsReview(t){return t.state==="drifted"}review(){this.router.navigate(["/drift"])}static \u0275fac=function(n){return new(n||e)};static \u0275cmp=T({type:e,selectors:[["app-domain"]],decls:2,vars:1,consts:[["surface","The domain layer"],[1,"page","scroll-y"],["icon","book","title","Domain","sub","Human-confirmed knowledge \u2014 terms, rules, decisions, constraints"],["actions",""],[3,"color","bg"],[1,"empty"],["icon","book","title","No domain knowledge captured yet","body","Document the terms, rules, decisions, and constraints that the code can't tell you. Run /ss-domain to capture the first fact."],[1,"skel","card-skel"],["action","","type","button","title","Run /ss-domain to capture a domain fact",1,"btn","btn-primary","btn-sm"],["name","plus",3,"size"],[1,"sig","card"],[1,"sig-head"],[1,"n"],[1,"fact"],[1,"fact-main"],[1,"fact-title"],[1,"fact-body"],[1,"fact-id","mono"],[1,"fact-governs"],[1,"fact-side"],[3,"state"],[1,"fact-actions","row","gap-6"],["type","button",1,"btn","btn-secondary","btn-sm"],["type","button","title","Run /ss-domain to refine this fact",1,"btn","btn-secondary","btn-sm"],[1,"fact-governs-row","mono"],["type","button",1,"btn","btn-secondary","btn-sm",3,"click"],["name","drift",3,"size"]],template:function(n,c){n&1&&d(0,L,1,0,"app-pick-project-empty",0)(1,le,11,8,"div",1),n&2&&p(c.resource.state().noProject?0:1)},dependencies:[N,A,B,V,j,$],styles:[".page[_ngcontent-%COMP%]{padding:20px 24px 48px}.empty[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:64px 24px;color:var(--text-muted)}.empty[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-family:var(--font-mono, monospace);font-size:.92em}.card-skel[_ngcontent-%COMP%]{height:120px;border-radius:12px;margin-bottom:12px}.sig[_ngcontent-%COMP%]{padding:0;margin-bottom:14px;overflow:hidden}.sig-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:12px 16px;font-size:13px;font-weight:600;border-bottom:1px solid var(--border, color-mix(in srgb, var(--text) 12%, transparent))}.sig-head[_ngcontent-%COMP%] .n[_ngcontent-%COMP%]{font-size:11px;font-weight:600;color:var(--text-muted);background:var(--bg-elevated, color-mix(in srgb, var(--text) 7%, transparent));border-radius:999px;padding:1px 8px}.fact[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px;padding:12px 16px;border-top:1px solid var(--border-subtle, color-mix(in srgb, var(--text) 6%, transparent))}.fact[_ngcontent-%COMP%]:first-of-type{border-top:none}.fact-main[_ngcontent-%COMP%]{min-width:0;flex:1}.fact-title[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--text)}.fact-body[_ngcontent-%COMP%]{margin-top:3px;font-size:12.5px;line-height:1.5;color:var(--text-secondary, var(--text-muted))}.fact-id[_ngcontent-%COMP%]{margin-top:5px;font-size:11px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fact-governs[_ngcontent-%COMP%]{margin-top:6px;display:flex;flex-direction:column;gap:2px}.fact-governs-row[_ngcontent-%COMP%]{font-size:11px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fact-side[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:0 0 auto}.fact-actions[_ngcontent-%COMP%]{flex-wrap:wrap;justify-content:flex-end}.mono[_ngcontent-%COMP%]{font-family:var(--font-mono, ui-monospace, monospace)}"],changeDetection:0})};export{Q as Domain};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as I}from"./chunk-X2HTISHL.js";import{a as W}from"./chunk-UYC52MBC.js";import{a as
|
|
1
|
+
import{a as I}from"./chunk-X2HTISHL.js";import{a as W}from"./chunk-UYC52MBC.js";import{a as z,b as D}from"./chunk-HZA6NEAB.js";import{a as F}from"./chunk-WDU3WICG.js";import{a as A}from"./chunk-SUZYBYDW.js";import{c as E}from"./chunk-SHPTC4RL.js";import{c as P}from"./chunk-GR72OOCN.js";import{a as M}from"./chunk-7RNS77UP.js";import{a as O}from"./chunk-E44X4RH2.js";import{Aa as c,Ga as h,I as m,Ia as C,Ka as l,M as _,N as f,Va as a,W as b,Wa as y,Xa as p,ea as s,ka as R,lb as w,ra as x,sa as g,va as k,wa as S,xa as v,ya as r,za as i,zb as T}from"./chunk-PDN6QYGJ.js";import"./chunk-Q7L6LLAK.js";var N=(o,e)=>e.id;function V(o,e){o&1&&c(0,"app-pick-project-empty",0)}function $(o,e){o&1&&(r(0,"div",15),a(1,"No runs yet. Start one from the Workflows page."),i())}function H(o,e){if(o&1&&(r(0,"app-pill"),c(1,"app-icon",26),a(2),i()),o&2){let t=l().$implicit,n=l(3);s(),v("size",10),s(),p(" ",n.artifactsOf(t)," ")}}function Q(o,e){if(o&1){let t=h();r(0,"div",17),C("click",function(){let d=_(t).$implicit,u=l(3);return f(u.goToRun(d))})("keydown.enter",function(){let d=_(t).$implicit,u=l(3);return f(u.goToRun(d))}),r(1,"span",9),c(2,"app-state-pill",18),i(),r(3,"div",19)(4,"span",20),a(5),i(),r(6,"span",21),a(7),i(),x(8,H,3,2,"app-pill"),i(),r(9,"span",22),a(10),i(),r(11,"span",23),a(12),i(),r(13,"span",24),a(14),i(),r(15,"span",25),a(16),i()()}if(o&2){let t=e.$implicit,n=l(3);s(2),v("state",t.status)("pulse",t.status==="running"),s(3),y(t.workflowName),s(2),y(t.id.slice(0,8)),s(),g(n.artifactsOf(t)>0?8:-1),s(2),p(" ",n.durationOf(t)," "),s(2),p(" ",n.costOf(t)," "),s(2),p(" ",n.worktreeOf(t)," "),s(2),p(" ",n.timeAgo(t)," ")}}function q(o,e){if(o&1&&k(0,Q,17,9,"div",16,N),o&2){let t=l(2);S(t.runs())}}function B(o,e){if(o&1){let t=h();r(0,"div",1)(1,"div",2),c(2,"app-page-head",3),i(),r(3,"div",4)(4,"app-segmented",5),C("change",function(d){_(t);let u=l();return f(u.setFilter(d))}),i()(),r(5,"div",6)(6,"div",7)(7,"div",8)(8,"span",9),a(9,"Status"),i(),r(10,"span",10),a(11,"Workflow"),i(),r(12,"span",11),a(13,"Duration"),i(),r(14,"span",12),a(15,"Cost"),i(),r(16,"span",13),a(17,"Worktree"),i(),r(18,"span",14),a(19,"When"),i()(),x(20,$,2,0,"div",15)(21,q,2,0),i()()()}if(o&2){let t=l();s(4),v("options",t.filterOptions())("value",t.statusFilter()),s(16),g(t.runs().length===0&&!t.resource.state().loading?20:21)}}var j=class o{api=m(O);projects=m(M);router=m(E);resource=P(this.api,()=>`/api/workflows/runs?limit=100${this.projects.projectQuery("&")}`);allRuns=w(()=>this.resource.state().data?.runs??[]);statusFilter=b("all");filterOptions=w(()=>[{value:"all",label:"All"},...["running","paused","completed","failed","cancelled"].map(t=>({value:t,label:z[t]?.label??t}))]);runs=w(()=>{let e=this.statusFilter(),t=this.allRuns();return e==="all"?t:t.filter(n=>n.status===e)});setFilter(e){this.statusFilter.set(e)}goToRun(e){this.router.navigate(["/runs",e.id])}durationOf(e){if(!e.startedAt)return"\u2014";let n=(e.completedAt??e.lastActivityAt)-e.startedAt;return n>=6e4?Math.round(n/6e4)+"m "+Math.round(n%6e4/1e3)+"s":n>=1e3?Math.round(n/1e3)+"s":n+"ms"}timeAgo(e){let t=e.lastActivityAt;if(!t)return"";let n=Date.now()-t;return n<6e4?"just now":n<36e5?Math.round(n/6e4)+"m ago":n<864e5?Math.round(n/36e5)+"h ago":Math.round(n/864e5)+"d ago"}worktreeOf(e){return e.isolationEnvId??e.metadata?.isolationEnvId??"\u2014"}costOf(e){return"\u2014"}artifactsOf(e){return 0}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=R({type:o,selectors:[["app-runs"]],decls:2,vars:1,consts:[["surface","Runs"],[1,"col","runs-page"],[2,"padding","16px 18px 0"],["icon","play","title","Runs","sub","Recent workflow executions"],[1,"row","gap-6",2,"padding","0 18px 12px"],["size","sm",3,"change","options","value"],[2,"padding","0 18px 18px"],[1,"card","runs-table"],[1,"runs-header","row"],[2,"width","100px"],[1,"grow"],[2,"width","90px"],[2,"width","70px","text-align","right"],[2,"width","130px","text-align","right"],[2,"width","60px","text-align","right"],[1,"runs-empty"],["role","button","tabindex","0",1,"runs-row","row"],["role","button","tabindex","0",1,"runs-row","row",3,"click","keydown.enter"],[3,"state","pulse"],[1,"grow","row","gap-8"],[1,"mono",2,"font-size","12.5px"],[1,"mono","muted",2,"font-size","11px"],[1,"mono","tabular","muted",2,"width","90px","font-size","11.5px"],[1,"mono","tabular",2,"width","70px","text-align","right","font-size","12px"],[1,"mono","muted","runs-worktree",2,"width","130px","text-align","right","font-size","10.5px"],[1,"mono","muted",2,"width","60px","text-align","right","font-size","11px"],["name","box",3,"size"]],template:function(t,n){t&1&&x(0,V,1,0,"app-pick-project-empty",0)(1,B,22,3,"div",1),t&2&&g(n.resource.state().noProject?0:1)},dependencies:[F,W,D,A,I,T],styles:["[_nghost-%COMP%]{display:contents}.runs-page[_ngcontent-%COMP%]{flex:1;min-height:0}.runs-table[_ngcontent-%COMP%]{overflow:hidden}.runs-header[_ngcontent-%COMP%]{padding:8px 14px;border-bottom:1px solid var(--border-subtle);font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.runs-row[_ngcontent-%COMP%]{padding:11px 14px;border-top:1px solid var(--border-subtle);cursor:pointer;transition:background 80ms}.runs-row[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.runs-row[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.runs-worktree[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.runs-empty[_ngcontent-%COMP%]{padding:40px;text-align:center;color:var(--text-muted);font-size:12.5px}"],changeDetection:0})};export{j as Runs};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as F}from"./chunk-X2HTISHL.js";import{a as z}from"./chunk-UYC52MBC.js";import{c as I}from"./chunk-GR72OOCN.js";import{a as O}from"./chunk-7RNS77UP.js";import{a as w}from"./chunk-E44X4RH2.js";import{Aa as c,Ea as M,Fa as S,I as u,Ka as g,Va as i,Wa as l,Xa as v,Ya as y,Za as P,bb as E,ea as a,ka as C,lb as f,ra as p,sa as s,ua as h,va as m,wa as x,xa as _,ya as o,za as r,zb as T}from"./chunk-PDN6QYGJ.js";import"./chunk-Q7L6LLAK.js";var D=()=>[0,1,2],b=(e,n)=>n.nodeId,j=(e,n)=>n.filePath,$=(e,n)=>n.files[0];function N(e,n){e&1&&c(0,"div",5)}function B(e,n){e&1&&m(0,N,1,0,"div",5,h),e&2&&x(E(0,D))}function L(e,n){e&1&&(o(0,"div",4),i(1,"Select a project to see its maintainability signals."),r())}function R(e,n){e&1&&(o(0,"div",4),i(1,"No maintainability data \u2014 run "),o(2,"code"),i(3,"specship index"),r(),i(4," first."),r())}function G(e,n){e&1&&(o(0,"div",4),c(1,"app-icon",6),o(2,"div",7),i(3,"Clean"),r(),o(4,"div",8),i(5,"Nothing crossed a threshold. Tune them in "),o(6,"code"),i(7,"specship.config.json"),r(),i(8,"."),r()()),e&2&&(a(),_("size",28))}function A(e,n){if(e&1&&(o(0,"div",14)(1,"span",15),i(2),r(),o(3,"span",16),i(4),r(),o(5,"span",17),i(6),r()()),e&2){let t=n.$implicit;a(2),l(t.name),a(2),l(t.reason),a(2),l(t.filePath)}}function H(e,n){if(e&1&&(o(0,"section",9)(1,"div",11),c(2,"span",12),i(3,"Coupling hotspots "),o(4,"span",13),i(5),r()(),m(6,A,7,3,"div",14,b),r()),e&2){let t=g(2);a(5),l(t.report().coupling.length),a(),x(t.report().coupling)}}function Q(e,n){if(e&1&&(o(0,"div",14)(1,"span",15),i(2),r(),o(3,"span",16),i(4),r(),o(5,"span",17),i(6),r()()),e&2){let t=n.$implicit;a(2),l(t.name),a(2),l(t.reason),a(2),y("",t.filePath,":",t.startLine)}}function q(e,n){if(e&1&&(o(0,"section",9)(1,"div",11),c(2,"span",18),i(3,"Oversized symbols "),o(4,"span",13),i(5),r()(),m(6,Q,7,4,"div",14,b),r()),e&2){let t=g(2);a(5),l(t.report().oversized.length),a(),x(t.report().oversized)}}function J(e,n){if(e&1&&(o(0,"div",14)(1,"span",19),i(2),r(),o(3,"span",16),i(4),r()()),e&2){let t=n.$implicit;a(2),l(t.filePath),a(2),l(t.reason)}}function K(e,n){if(e&1&&(o(0,"section",9)(1,"div",11),c(2,"span",18),i(3,"God files "),o(4,"span",13),i(5),r()(),m(6,J,5,2,"div",14,j),r()),e&2){let t=g(2);a(5),l(t.report().godFiles.length),a(),x(t.report().godFiles)}}function U(e,n){if(e&1&&(o(0,"div",14)(1,"span",19),i(2),r()()),e&2){let t=n.$implicit;a(2),l(t.files.join(" \u2192 "))}}function V(e,n){if(e&1&&(o(0,"section",9)(1,"div",11),c(2,"span",20),i(3,"Dependency cycles "),o(4,"span",13),i(5),r()(),m(6,U,3,1,"div",14,$),r()),e&2){let t=g(2);a(5),l(t.report().cycles.length),a(),x(t.report().cycles)}}function W(e,n){if(e&1&&(o(0,"div",14)(1,"span",15),i(2),r(),o(3,"span",19),i(4),r()()),e&2){let t=n.$implicit;a(2),l(t.name),a(2),y("",t.filePath,":",t.startLine)}}function X(e,n){if(e&1&&(o(0,"section",9)(1,"div",11),c(2,"span",21),i(3,"Dead-code candidates "),o(4,"span",13),i(5),r(),o(6,"span",22),i(7,"heuristic \u2014 verify before removing"),r()(),m(8,W,5,3,"div",14,b),r()),e&2){let t=g(2);a(5),l(t.report().deadCode.length),a(3),x(t.report().deadCode)}}function Y(e,n){if(e&1&&(p(0,H,8,1,"section",9),p(1,q,8,1,"section",9),p(2,K,8,1,"section",9),p(3,V,8,1,"section",9),p(4,X,10,1,"section",9),o(5,"div",10),i(6),o(7,"code"),i(8,"specship.config.json"),r(),i(9,". "),r()),e&2){let t=g();s(t.report().coupling.length?0:-1),a(),s(t.report().oversized.length?1:-1),a(),s(t.report().godFiles.length?2:-1),a(),s(t.report().cycles.length?3:-1),a(),s(t.report().deadCode.length?4:-1),a(2),P(" Thresholds \u2014 fan-in/out \u2265 ",t.report().thresholds.highDegree," \xB7 symbol \u2265 ",t.report().thresholds.largeSymbolLines," lines \xB7 god-file \u2265 ",t.report().thresholds.godFileSymbols," symbols. Override in ")}}var k=class e{api=u(w);projects=u(O);resource=I(this.api,()=>`/api/maintainability${this.projects.projectQuery()}`);report=f(()=>this.resource.state().data);counts=f(()=>{let n=this.resource.state().data;return{coupling:n?.coupling.length??0,oversized:n?.oversized.length??0,godFiles:n?.godFiles.length??0,cycles:n?.cycles.length??0,deadCode:n?.deadCode.length??0}});total=f(()=>{let n=this.counts();return n.coupling+n.oversized+n.godFiles+n.cycles+n.deadCode});base(n){return n.split("/").pop()||n}static \u0275fac=function(t){return new(t||e)};static \u0275cmp=C({type:e,selectors:[["app-maintainability"]],decls:16,vars:13,consts:[[1,"page","scroll-y"],["icon","wrench","title","Maintainability","sub","Graph-derived signals \u2014 coupling, size, cycles, dead code"],["actions",""],[3,"color","bg"],[1,"empty"],[1,"skel","card-skel"],["name","check",3,"size"],[1,"empty-title"],[1,"empty-sub"],[1,"sig","card"],[1,"thresholds"],[1,"sig-head"],[1,"dot",2,"background","var(--error)"],[1,"n"],[1,"row"],[1,"sym","mono"],[1,"why"],[1,"loc","mono"],[1,"dot",2,"background","var(--warn)"],[1,"loc","mono","grow"],[1,"dot",2,"background","var(--info)"],[1,"dot",2,"background","var(--text-muted)"],[1,"caveat"]],template:function(t,d){t&1&&(o(0,"div",0)(1,"app-page-head",1),M(2,2),o(3,"app-pill",3),i(4),r(),o(5,"app-pill",3),i(6),r(),o(7,"app-pill",3),i(8),r(),o(9,"app-pill",3),i(10),r(),S(),r(),p(11,B,2,1)(12,L,2,0,"div",4)(13,R,5,0,"div",4)(14,G,9,1,"div",4)(15,Y,10,8),r()),t&2&&(a(3),_("color","var(--error)")("bg","var(--error-soft)"),a(),v("",d.counts().coupling," coupling"),a(),_("color","var(--warn)")("bg","var(--warn-soft)"),a(),v("",d.counts().oversized+d.counts().godFiles," size"),a(),_("color","var(--info)")("bg","var(--info-soft)"),a(),v("",d.counts().cycles," cycles"),a(),_("color","var(--text-muted)")("bg","var(--bg-elevated)"),a(),v("",d.counts().deadCode," dead"),a(),s(d.resource.state().loading?11:d.resource.state().noProject?12:d.report()?d.report().clean?14:15:13))},dependencies:[z,F,T],styles:[".page[_ngcontent-%COMP%]{padding:20px 24px 48px}.empty[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:64px 24px;color:var(--text-muted)}.empty[_ngcontent-%COMP%] .empty-title[_ngcontent-%COMP%]{font-size:15px;font-weight:600;color:var(--text)}.empty[_ngcontent-%COMP%] .empty-sub[_ngcontent-%COMP%]{font-size:12.5px;max-width:460px;line-height:1.5}.empty[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-family:var(--font-mono, monospace);font-size:.92em}.card-skel[_ngcontent-%COMP%]{height:120px;border-radius:12px;margin-bottom:12px}.sig[_ngcontent-%COMP%]{padding:0;margin-bottom:14px;overflow:hidden}.sig-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:12px 16px;font-size:13px;font-weight:600;border-bottom:1px solid var(--border, color-mix(in srgb, var(--text) 12%, transparent))}.sig-head[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;flex:0 0 8px}.sig-head[_ngcontent-%COMP%] .n[_ngcontent-%COMP%]{font-size:11px;font-weight:600;color:var(--text-muted);background:var(--bg-elevated, color-mix(in srgb, var(--text) 7%, transparent));border-radius:999px;padding:1px 8px}.sig-head[_ngcontent-%COMP%] .caveat[_ngcontent-%COMP%]{margin-left:auto;font-size:11px;font-weight:400;color:var(--text-muted);font-style:italic}.row[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:12px;padding:8px 16px;font-size:12px;border-top:1px solid var(--border-subtle, color-mix(in srgb, var(--text) 6%, transparent))}.row[_ngcontent-%COMP%]:first-of-type{border-top:none}.row[_ngcontent-%COMP%] .sym[_ngcontent-%COMP%]{color:var(--text);font-weight:500;flex:0 0 auto;max-width:38%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row[_ngcontent-%COMP%] .why[_ngcontent-%COMP%]{color:var(--text-secondary, var(--text-muted));flex:0 0 auto}.row[_ngcontent-%COMP%] .loc[_ngcontent-%COMP%]{color:var(--text-muted);font-size:11px;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row[_ngcontent-%COMP%] .grow[_ngcontent-%COMP%]{flex:1;margin-left:0}.mono[_ngcontent-%COMP%]{font-family:var(--font-mono, ui-monospace, monospace)}.thresholds[_ngcontent-%COMP%]{margin-top:8px;font-size:11.5px;color:var(--text-muted);line-height:1.5}.thresholds[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-family:var(--font-mono, monospace)}"],changeDetection:0})};export{k as Maintainability};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as W}from"./chunk-X2HTISHL.js";import{a as Q}from"./chunk-UYC52MBC.js";import{a as U}from"./chunk-SUZYBYDW.js";import{
|
|
1
|
+
import{a as W}from"./chunk-X2HTISHL.js";import{a as Q}from"./chunk-UYC52MBC.js";import{a as U}from"./chunk-SUZYBYDW.js";import{d as B}from"./chunk-SHPTC4RL.js";import{b as Y,c as G}from"./chunk-GR72OOCN.js";import{a as H}from"./chunk-7RNS77UP.js";import{a as $}from"./chunk-E44X4RH2.js";import{Aa as m,Ea as T,Fa as O,I as c,Ia as S,Ka as C,R,Ta as D,Ua as I,Va as s,W as f,Wa as g,X as E,Xa as h,Za as z,bb as u,cb as F,ea as a,eb as j,gb as L,ib as N,ka as P,lb as w,qa as M,ra as v,sa as x,ua as k,va as y,vb as A,wa as b,xa as d,ya as r,za as o,zb as J}from"./chunk-PDN6QYGJ.js";import"./chunk-Q7L6LLAK.js";var K=()=>({value:"time",label:"Latest"}),V=()=>({value:"cost",label:"Cost"}),X=()=>({value:"prompts",label:"Prompts"}),Z=(i,e,t)=>[i,e,t],ee=()=>[0,1,2,3,4],te=i=>["/sessions",i],ne=(i,e)=>e.fullId;function ie(i,e){i&1&&(r(0,"span",10),s(1,"\u26A0 refresh failed"),o()),i&2&&d("title",e)}function re(i,e){i&1&&(r(0,"div",20),m(1,"div",21),o())}function oe(i,e){i&1&&y(0,re,2,0,"div",20,k),i&2&&b(u(0,ee))}function se(i,e){i&1&&(r(0,"div",19),s(1," No sessions in this range. Either nothing's been logged yet, or the JSONL ingest watcher hasn't caught up \u2014 click Refresh. "),o())}function ae(i,e){if(i&1&&(r(0,"a",22)(1,"span",23),s(2),o(),r(3,"span",17)(4,"app-pill"),s(5),o()(),r(6,"span",24),s(7),o(),r(8,"span",25),s(9),o(),r(10,"span",25),s(11),L(12,"number"),o(),r(13,"span",26),s(14),o()()),i&2){let t=e.$implicit,n=C(2);d("routerLink",F(15,te,t.fullId)),M("aria-label","Open session "+t.id),a(2),g(t.id),a(3),g(t.project),a(2),z(" ",t.started," \u2013 ",t.ended," \xB7 ",t.model," "),a(2),g(t.prompts),a(),D("color",n.cacheColor(t.cache)),a(),h(" ",N(12,12,t.cache*100,"1.0-0"),"% "),a(3),h(" $",t.cost.toFixed(2)," ")}}function le(i,e){if(i&1&&y(0,ae,15,17,"a",22,ne),i&2){let t=C();b(t.sorted())}}var de=1e4,q=class i{api=c($);projects=c(H);refresh=c(Y);destroyRef=c(R);range=f("all");sort=f("time");ranges=["today","week","month","all"];localRefreshing=f(!1);resource=G(this.api,()=>`/api/claude/sessions?range=${this.range()}&limit=200${this.projects.projectQuery("&")}`);rows=w(()=>(this.resource.state().data?.sessions??[]).map(t=>this.adapt(t)));sorted=w(()=>{let e=this.sort();return[...this.rows()].sort((t,n)=>e==="cost"?n.cost-t.cost:e==="prompts"?n.prompts-t.prompts:n.startedAt-t.startedAt)});constructor(){let e=null,t=()=>{e===null&&(e=setInterval(()=>{typeof document<"u"&&document.visibilityState==="visible"&&this.resource.refetch()},de))},n=()=>{e!==null&&(clearInterval(e),e=null)},l=()=>{typeof document>"u"||document.visibilityState==="visible"&&this.resource.refetch()};t(),typeof document<"u"&&document.addEventListener("visibilitychange",l),this.destroyRef.onDestroy(()=>{n(),typeof document<"u"&&document.removeEventListener("visibilitychange",l)}),E(()=>{!this.resource.state().loading&&this.localRefreshing()&&this.localRefreshing.set(!1)})}async forceRefresh(){this.localRefreshing.set(!0),await this.refresh.triggerGlobalRefresh()}adapt(e){let t=(e.total_input_tokens||0)+(e.total_cache_creation_tokens||0)+(e.total_cache_read_tokens||0);return{id:(e.id||"").slice(0,8),fullId:e.id,project:(e.project_path||"").split("/").filter(Boolean).pop()||"?",startedAt:e.started_at||0,started:this.fmtTime(e.started_at),ended:this.fmtTime(e.ended_at).split(" ").pop()||"",prompts:e.prompt_count||0,cost:e.total_cost_usd||0,cache:t>0?(e.total_cache_read_tokens||0)/t:0,model:e.last_model||"unknown"}}fmtTime(e){if(!e)return"";try{let t=new Date(e),n=new Date;n.setHours(0,0,0,0);let l=864e5,p=n.getTime()-new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime(),_=t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return p===0?"Today "+_:p===l?"Yest "+_:t.toLocaleDateString([],{month:"short",day:"numeric"})+" "+_}catch{return String(e)}}setSort(e){this.sort.set(e)}setRange(e){this.range.set(e)}cacheColor(e){return e>=.7?"var(--success)":e>=.5?"var(--warn)":"var(--error)"}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=P({type:i,selectors:[["app-sessions"]],decls:35,vars:18,consts:[[1,"page"],[2,"padding","16px 18px 12px"],["icon","sessions","title","Sessions",3,"sub"],["actions",""],["type","button","title","Force refresh: sync the index + re-ingest Claude Code transcripts","aria-label","Refresh sessions",1,"btn","btn-secondary","btn-sm","refresh-btn",3,"click","disabled"],["name","refresh",3,"size"],[1,"filter-bar",2,"padding","0 18px 12px"],["name","filter",2,"color","var(--text-muted)",3,"size"],[1,"input",2,"font-size","12px","padding","4px 8px"],[1,"grow"],[2,"color","var(--warn)","font-size","11.5px","cursor","help",3,"title"],[1,"muted",2,"font-size","11.5px"],["size","sm",3,"change","value","options"],[1,"scroll-y",2,"flex","1","padding","0 18px 18px"],[1,"card",2,"overflow","hidden"],[1,"row",2,"padding","8px 14px","font-size","10.5px","color","var(--text-muted)","text-transform","uppercase","letter-spacing","0.05em","font-weight","600","border-bottom","1px solid var(--border-subtle)"],[2,"width","90px"],[2,"width","110px"],[2,"width","70px","text-align","right"],[2,"padding","28px 18px","text-align","center","color","var(--text-secondary)","font-size","12.5px","line-height","1.5"],[1,"row",2,"padding","10px 14px","border-top","1px solid var(--border-subtle)"],[1,"skel",2,"flex","1","height","18px"],[1,"row","session-row",2,"padding","11px 14px","border-top","1px solid var(--border-subtle)","display","flex","align-items","center","gap","0","text-decoration","none","color","inherit","cursor","pointer",3,"routerLink"],[1,"mono",2,"width","90px","font-size","12px"],[1,"mono","muted","grow",2,"font-size","11.5px","overflow","hidden","text-overflow","ellipsis","white-space","nowrap"],[1,"mono","tabular",2,"width","70px","text-align","right","font-size","12px"],[1,"mono","tabular",2,"width","70px","text-align","right","font-size","12.5px","font-weight","600"]],template:function(t,n){if(t&1&&(r(0,"div",0)(1,"div",1)(2,"app-page-head",2),T(3,3),r(4,"button",4),S("click",function(){return n.forceRefresh()}),m(5,"app-icon",5),s(6),o(),O(),o()(),r(7,"div",6),m(8,"app-icon",7),r(9,"select",8)(10,"option"),s(11,"All models"),o()(),m(12,"div",9),v(13,ie,2,1,"span",10),r(14,"span",11),s(15,"sort"),o(),r(16,"app-segmented",12),S("change",function(p){return n.setSort(p)}),o()(),r(17,"div",13)(18,"div",14)(19,"div",15)(20,"span",16),s(21,"Session"),o(),r(22,"span",17),s(23,"Project"),o(),r(24,"span",9),s(25,"Window"),o(),r(26,"span",18),s(27,"Prompts"),o(),r(28,"span",18),s(29,"Cache"),o(),r(30,"span",18),s(31,"Cost"),o()(),v(32,oe,2,1)(33,se,2,0,"div",19)(34,le,2,0),o()()()),t&2){let l;a(2),d("sub",n.resource.state().loading?"loading\u2026":n.sorted().length+" sessions \xB7 across all projects"),a(2),I("spinning",n.localRefreshing()||n.refresh.loading()),d("disabled",n.refresh.loading()),a(),d("size",13),a(),h(" ",n.localRefreshing()||n.refresh.loading()?"Refreshing\u2026":"Refresh"," "),a(2),d("size",13),a(5),x((l=n.refresh.error())?13:-1,l),a(3),d("value",n.sort())("options",j(14,Z,u(11,K),u(12,V),u(13,X))),a(16),x(n.resource.state().loading&&n.sorted().length===0?32:n.sorted().length===0?33:34)}},dependencies:[B,J,Q,U,W,A],styles:["[_nghost-%COMP%]{display:contents}.page[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;min-height:0}.filter-bar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--r-lg)}.row[_ngcontent-%COMP%]{display:flex;align-items:center}.session-row[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.session-row[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.skel[_ngcontent-%COMP%]{background:var(--bg-elevated);border-radius:5px;animation:_ngcontent-%COMP%_skeleton 1.4s ease-in-out infinite}@keyframes _ngcontent-%COMP%_skeleton{0%,to{opacity:.5}50%{opacity:.9}}.refresh-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px}.refresh-btn.spinning[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spin .9s linear infinite;color:var(--accent)}.refresh-btn[_ngcontent-%COMP%]:disabled{cursor:progress;opacity:.8}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"],changeDetection:0})};export{q as Sessions};
|