@inharness-ai/claude4spec 1.0.13 → 1.0.15
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 +18 -0
- package/dist/bin/c4s/commands/find-references.d.ts +13 -0
- package/dist/bin/c4s/commands/find-references.js +81 -0
- package/dist/bin/c4s/commands/find-references.js.map +1 -0
- package/dist/bin/c4s.js +6 -0
- package/dist/bin/c4s.js.map +1 -1
- package/dist/client/assets/{arc-E0e7X_zn.js → arc-Bm0IE9-2.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-BzlqOVZv.js → architectureDiagram-3BPJPVTR-GJ4QxX0Q.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-BIQcApN7.js → blockDiagram-GPEHLZMM-C9rZbfxq.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-CDU0V1yk.js → c4Diagram-AAUBKEIU-DyVuHGeV.js} +1 -1
- package/dist/client/assets/channel-BGn39mc8.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-PtDSwC5f.js → chunk-2J33WTMH-DePzEFC8.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-DTUPWrSO.js → chunk-4BX2VUAB-NZkVFx6P.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-Cpd59xZT.js → chunk-55IACEB6-DSelTsfa.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-C4DOvpJT.js → chunk-727SXJPM-Vk_bMeuW.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-CtjeHPBB.js → chunk-AQP2D5EJ-Bv_5j6lW.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-CZA3OvVr.js → chunk-FMBD7UC4-CIwy6WRQ.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-Cbx6nQHm.js → chunk-ND2GUHAM-C-7ZR2Kw.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-3DunELI_.js → chunk-QZHKN3VN-D2pOGWp9.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-DZ5eaGnY.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DZ5eaGnY.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-CKYJnuL7.js → cose-bilkent-S5V4N54A-NgRxSzcd.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-BrvRwrr_.js → dagre-BM42HDAG-kwaDBrFq.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-BaVLuzcD.js → diagram-2AECGRRQ-B5OMokEe.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-9Cu7Wa7J.js → diagram-5GNKFQAL-9h9Lsrr_.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-XKiCVdjO.js → diagram-KO2AKTUF-DcNC4jPN.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-DerecU5v.js → diagram-LMA3HP47-D41zybvJ.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-BWcREvZ9.js → diagram-OG6HWLK6-D12dQiCG.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-DU3BBQJY.js → erDiagram-TEJ5UH35-brqTv2OJ.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-DXO_IJeR.js → flowDiagram-I6XJVG4X-D6q2xyWg.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-CXiFZEPx.js → ganttDiagram-6RSMTGT7-DlH9o0CJ.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DHewdln-.js → gitGraphDiagram-PVQCEYII-CgNLFhAT.js} +1 -1
- package/dist/client/assets/{index-DT5g2AtL.js → index-C-gTQA-n.js} +1 -1
- package/dist/client/assets/{index-DD0GkjkG.js → index-DDRzJojo.js} +1 -1
- package/dist/client/assets/{index-BTXWIk4x.css → index-DirDnayu.css} +1 -1
- package/dist/client/assets/{index-DcIG_8JB.js → index-qO9stCkx.js} +189 -179
- package/dist/client/assets/{infoDiagram-5YYISTIA-CN40PAGW.js → infoDiagram-5YYISTIA-ThuQNCvi.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-B8KsyuPk.js → ishikawaDiagram-YF4QCWOH-m-2DHbkK.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-BlEb3E_P.js → journeyDiagram-JHISSGLW-CNCSJPeY.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-B080CGS9.js → kanban-definition-UN3LZRKU-CtzjrW3p.js} +1 -1
- package/dist/client/assets/{linear-D6Tg-IET.js → linear-BF1Qhpjc.js} +1 -1
- package/dist/client/assets/{mermaid.core-DP18nW3T.js → mermaid.core-fKaK1Sz_.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-bfo7Qm5I.js → mindmap-definition-RKZ34NQL-CXuVRuzz.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-ZsPztPu6.js → pieDiagram-4H26LBE5-DdL9uKdO.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DKrTleIL.js → quadrantDiagram-W4KKPZXB-C_0FG9xH.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-D4YX8ZgG.js → requirementDiagram-4Y6WPE33-Qmg8C7k6.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Bo-xm6Mc.js → sankeyDiagram-5OEKKPKP-DuIvgSjA.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-CozgdKp6.js → sequenceDiagram-3UESZ5HK-B4JsFW9i.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-CiK61MwV.js → stateDiagram-AJRCARHV-lTFw6Md4.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D2iiMzxh.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-CgHoguI7.js → timeline-definition-PNZ67QCA-C7Hc5KbB.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-TY32dxQb.js → vennDiagram-CIIHVFJN-DMyGzBh7.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-C6Q7VFwH.js → wardley-L42UT6IY-BjA5T0YY.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-nZLnVsQL.js → wardleyDiagram-YWT4CUSO-BhOipIZG.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-DHdYRHEr.js → xychartDiagram-2RQKCTM6-Czx4--PM.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/core/references/find-references.d.ts +13 -0
- package/dist/core/references/find-references.js +41 -0
- package/dist/core/references/find-references.js.map +1 -0
- package/dist/core/references/index.d.ts +2 -0
- package/dist/core/references/index.js +2 -0
- package/dist/core/references/index.js.map +1 -0
- package/dist/core/references/types.d.ts +45 -0
- package/dist/core/references/types.js +9 -0
- package/dist/core/references/types.js.map +1 -0
- package/dist/server/config.d.ts +9 -0
- package/dist/server/config.js +6 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/core/plugin-host/entities-router.d.ts +2 -1
- package/dist/server/core/plugin-host/entities-router.js +19 -13
- package/dist/server/core/plugin-host/entities-router.js.map +1 -1
- package/dist/server/core/plugin-host/host.js +4 -9
- package/dist/server/core/plugin-host/host.js.map +1 -1
- package/dist/server/core/plugin-host/types.d.ts +9 -14
- package/dist/server/db/migrations/035_m29_slug_identity.sql +248 -0
- package/dist/server/domain/raw-entity-reader.d.ts +3 -5
- package/dist/server/domain/raw-entity-reader.js +28 -39
- package/dist/server/domain/raw-entity-reader.js.map +1 -1
- package/dist/server/entities/ac/ac-analysis.service.d.ts +54 -0
- package/dist/server/entities/ac/ac-analysis.service.js +162 -0
- package/dist/server/entities/ac/ac-analysis.service.js.map +1 -0
- package/dist/server/entities/ac/mcp-server.d.ts +8 -0
- package/dist/server/entities/ac/mcp-server.js +30 -2
- package/dist/server/entities/ac/mcp-server.js.map +1 -1
- package/dist/server/entities/ac/plugin.js +4 -2
- package/dist/server/entities/ac/plugin.js.map +1 -1
- package/dist/server/entities/ac/serializer.js +1 -1
- package/dist/server/entities/ac/serializer.js.map +1 -1
- package/dist/server/entities/ac/services.d.ts +19 -7
- package/dist/server/entities/ac/services.js +65 -42
- package/dist/server/entities/ac/services.js.map +1 -1
- package/dist/server/entities/database-table/plugin.js +1 -2
- package/dist/server/entities/database-table/plugin.js.map +1 -1
- package/dist/server/entities/database-table/serializer.js +1 -1
- package/dist/server/entities/database-table/serializer.js.map +1 -1
- package/dist/server/entities/database-table/services.d.ts +19 -7
- package/dist/server/entities/database-table/services.js +74 -47
- package/dist/server/entities/database-table/services.js.map +1 -1
- package/dist/server/entities/dto/plugin.js +1 -2
- package/dist/server/entities/dto/plugin.js.map +1 -1
- package/dist/server/entities/dto/serializer.js +2 -2
- package/dist/server/entities/dto/serializer.js.map +1 -1
- package/dist/server/entities/dto/services.d.ts +19 -7
- package/dist/server/entities/dto/services.js +70 -47
- package/dist/server/entities/dto/services.js.map +1 -1
- package/dist/server/entities/endpoint/plugin.js +1 -2
- package/dist/server/entities/endpoint/plugin.js.map +1 -1
- package/dist/server/entities/endpoint/serializer.js +4 -4
- package/dist/server/entities/endpoint/serializer.js.map +1 -1
- package/dist/server/entities/endpoint/services.d.ts +21 -9
- package/dist/server/entities/endpoint/services.js +91 -63
- package/dist/server/entities/endpoint/services.js.map +1 -1
- package/dist/server/entities/mutate-opts.d.ts +15 -0
- package/dist/server/entities/mutate-opts.js +2 -0
- package/dist/server/entities/mutate-opts.js.map +1 -0
- package/dist/server/entities/ui-view/plugin.js +1 -2
- package/dist/server/entities/ui-view/plugin.js.map +1 -1
- package/dist/server/entities/ui-view/serializer.js +1 -1
- package/dist/server/entities/ui-view/serializer.js.map +1 -1
- package/dist/server/entities/ui-view/services.d.ts +19 -7
- package/dist/server/entities/ui-view/services.js +65 -42
- package/dist/server/entities/ui-view/services.js.map +1 -1
- package/dist/server/fs/entities-watcher.d.ts +31 -0
- package/dist/server/fs/entities-watcher.js +68 -0
- package/dist/server/fs/entities-watcher.js.map +1 -0
- package/dist/server/fs/watcher.js +7 -1
- package/dist/server/fs/watcher.js.map +1 -1
- package/dist/server/index.js +112 -6
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp/reference-tools.d.ts +3 -0
- package/dist/server/mcp/reference-tools.js +25 -161
- package/dist/server/mcp/reference-tools.js.map +1 -1
- package/dist/server/routes/static.d.ts +11 -0
- package/dist/server/routes/static.js +44 -0
- package/dist/server/routes/static.js.map +1 -0
- package/dist/server/services/entity-indexer.d.ts +42 -0
- package/dist/server/services/entity-indexer.js +179 -0
- package/dist/server/services/entity-indexer.js.map +1 -0
- package/dist/server/services/entity-store.d.ts +68 -0
- package/dist/server/services/entity-store.js +162 -0
- package/dist/server/services/entity-store.js.map +1 -0
- package/dist/server/services/entity-writer.d.ts +12 -1
- package/dist/server/services/entity-writer.js +22 -11
- package/dist/server/services/entity-writer.js.map +1 -1
- package/dist/server/services/git.js +6 -1
- package/dist/server/services/git.js.map +1 -1
- package/dist/server/services/pages.js +5 -1
- package/dist/server/services/pages.js.map +1 -1
- package/dist/server/services/references.d.ts +25 -0
- package/dist/server/services/references.js +102 -21
- package/dist/server/services/references.js.map +1 -1
- package/dist/server/services/release.d.ts +10 -10
- package/dist/server/services/release.js +32 -63
- package/dist/server/services/release.js.map +1 -1
- package/dist/server/services/section-indexer.d.ts +0 -1
- package/dist/server/services/section-indexer.js +5 -7
- package/dist/server/services/section-indexer.js.map +1 -1
- package/dist/server/services/skill-registry.d.ts +28 -1
- package/dist/server/services/skill-registry.js +51 -10
- package/dist/server/services/skill-registry.js.map +1 -1
- package/dist/server/services/static-html.d.ts +24 -0
- package/dist/server/services/static-html.js +49 -0
- package/dist/server/services/static-html.js.map +1 -0
- package/dist/server/services/tags.d.ts +13 -3
- package/dist/server/services/tags.js +65 -26
- package/dist/server/services/tags.js.map +1 -1
- package/dist/server/services/versions.d.ts +7 -7
- package/dist/server/services/versions.js +34 -37
- package/dist/server/services/versions.js.map +1 -1
- package/dist/shared/entities.d.ts +2 -2
- package/dist/shared/types.d.ts +9 -0
- package/dist/shared/xml-tags.d.ts +8 -0
- package/dist/shared/xml-tags.js +24 -0
- package/dist/shared/xml-tags.js.map +1 -1
- package/package.json +1 -1
- package/dist/client/assets/channel-BqjILLUr.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-LjT84-kK.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-LjT84-kK.js +0 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-C6-8M5Sb.js +0 -1
- package/dist/server/db/migrations/026_ac_seed.sql +0 -75
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section-indexer.js","sourceRoot":"","sources":["../../../src/server/services/section-indexer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"section-indexer.js","sourceRoot":"","sources":["../../../src/server/services/section-indexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { InlineSkill } from '@inharness-ai/agent-adapters';
|
|
2
2
|
export type SkillScope = 'writing-style' | 'contextual';
|
|
3
|
+
/** Where a skill was discovered: in-package bundle vs a user `.claude/skills` root. */
|
|
4
|
+
export type SkillSource = 'bundled' | 'user';
|
|
3
5
|
export interface SkillMetadata {
|
|
4
6
|
slug: string;
|
|
5
7
|
title: string;
|
|
@@ -7,8 +9,18 @@ export interface SkillMetadata {
|
|
|
7
9
|
version: number;
|
|
8
10
|
language: 'en' | 'pl';
|
|
9
11
|
scope: SkillScope;
|
|
12
|
+
source: SkillSource;
|
|
10
13
|
path: string;
|
|
11
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* A root scanned by {@link SkillRegistry.load}. Roots are scanned in array order
|
|
17
|
+
* (highest precedence first); on a slug collision the first root wins, so callers
|
|
18
|
+
* pass project before global before bundled. See {@link findSkillsRoots}.
|
|
19
|
+
*/
|
|
20
|
+
export interface SkillRoot {
|
|
21
|
+
dir: string;
|
|
22
|
+
source: SkillSource;
|
|
23
|
+
}
|
|
12
24
|
export interface ResolvedSkill {
|
|
13
25
|
metadata: SkillMetadata;
|
|
14
26
|
content: string;
|
|
@@ -16,7 +28,16 @@ export interface ResolvedSkill {
|
|
|
16
28
|
}
|
|
17
29
|
export declare class SkillRegistry {
|
|
18
30
|
private metadataBySlug;
|
|
19
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Scan one or more roots once at startup and merge them, deduplicated per slug
|
|
33
|
+
* by precedence: roots earlier in the array win (project > global > bundled).
|
|
34
|
+
* A missing or unreadable root is treated as empty — no throw. A malformed
|
|
35
|
+
* `SKILL.md` is skipped with a warning. Skills declaring `scope: contextual`
|
|
36
|
+
* found in a `source: 'user'` root are ignored entirely (contextual skills are
|
|
37
|
+
* package-only); bundled contextual skills are kept.
|
|
38
|
+
*/
|
|
39
|
+
static load(roots: SkillRoot[]): SkillRegistry;
|
|
40
|
+
private scanRoot;
|
|
20
41
|
list(): SkillMetadata[];
|
|
21
42
|
listSelectable(): SkillMetadata[];
|
|
22
43
|
has(slug: string): boolean;
|
|
@@ -36,3 +57,9 @@ export declare class SkillResolver {
|
|
|
36
57
|
resolve(): InlineSkill[];
|
|
37
58
|
}
|
|
38
59
|
export declare function findSkillsDir(): string;
|
|
60
|
+
/**
|
|
61
|
+
* Roots to scan for selectable writing styles, highest precedence first:
|
|
62
|
+
* project `<cwd>/.claude/skills` > global `~/.claude/skills` > in-package bundle.
|
|
63
|
+
* Project/global are user-authored (`source: 'user'`); the bundle is `'bundled'`.
|
|
64
|
+
*/
|
|
65
|
+
export declare function findSkillsRoots(cwd: string): SkillRoot[];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import { fileURLToPath } from 'node:url';
|
|
4
5
|
import matter from 'gray-matter';
|
|
@@ -7,16 +8,39 @@ const SUPPORTED_VERSION = 1;
|
|
|
7
8
|
const FILES_SUBDIRS = ['templates', 'examples', 'workflows'];
|
|
8
9
|
export class SkillRegistry {
|
|
9
10
|
metadataBySlug = new Map();
|
|
10
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Scan one or more roots once at startup and merge them, deduplicated per slug
|
|
13
|
+
* by precedence: roots earlier in the array win (project > global > bundled).
|
|
14
|
+
* A missing or unreadable root is treated as empty — no throw. A malformed
|
|
15
|
+
* `SKILL.md` is skipped with a warning. Skills declaring `scope: contextual`
|
|
16
|
+
* found in a `source: 'user'` root are ignored entirely (contextual skills are
|
|
17
|
+
* package-only); bundled contextual skills are kept.
|
|
18
|
+
*/
|
|
19
|
+
static load(roots) {
|
|
11
20
|
const registry = new SkillRegistry();
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
21
|
+
for (const root of roots)
|
|
22
|
+
registry.scanRoot(root);
|
|
23
|
+
return registry;
|
|
24
|
+
}
|
|
25
|
+
scanRoot(root) {
|
|
26
|
+
let entries;
|
|
27
|
+
try {
|
|
28
|
+
if (!fs.existsSync(root.dir))
|
|
29
|
+
return;
|
|
30
|
+
entries = fs.readdirSync(root.dir, { withFileTypes: true });
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
console.warn(`[skill] root "${root.dir}" unreadable: ${err.message}, treating as empty`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
15
36
|
for (const entry of entries) {
|
|
16
37
|
if (!entry.isDirectory())
|
|
17
38
|
continue;
|
|
18
39
|
const slug = entry.name;
|
|
19
|
-
|
|
40
|
+
// Higher-precedence root already claimed this slug.
|
|
41
|
+
if (this.metadataBySlug.has(slug))
|
|
42
|
+
continue;
|
|
43
|
+
const skillDir = path.join(root.dir, slug);
|
|
20
44
|
const skillFile = path.join(skillDir, 'SKILL.md');
|
|
21
45
|
if (!fs.existsSync(skillFile)) {
|
|
22
46
|
console.warn(`[skill] ${slug}: missing SKILL.md, skipping`);
|
|
@@ -25,18 +49,23 @@ export class SkillRegistry {
|
|
|
25
49
|
try {
|
|
26
50
|
const raw = fs.readFileSync(skillFile, 'utf8');
|
|
27
51
|
const { data } = matter(raw);
|
|
28
|
-
const metadata = parseFrontmatter(slug, skillDir, data);
|
|
52
|
+
const metadata = parseFrontmatter(slug, skillDir, root.source, data);
|
|
29
53
|
if (metadata.version > SUPPORTED_VERSION) {
|
|
30
54
|
console.warn(`[skill] ${slug}: version ${metadata.version} > supported ${SUPPORTED_VERSION}, skipping`);
|
|
31
55
|
continue;
|
|
32
56
|
}
|
|
33
|
-
|
|
57
|
+
// Contextual skills are package-only: ignore them entirely when dropped
|
|
58
|
+
// into a user root (not selectable, not used for contextual resolution).
|
|
59
|
+
if (metadata.scope === 'contextual' && root.source === 'user') {
|
|
60
|
+
console.warn(`[skill] ${slug}: scope "contextual" in user root, ignored (package-only)`);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
this.metadataBySlug.set(slug, metadata);
|
|
34
64
|
}
|
|
35
65
|
catch (err) {
|
|
36
66
|
console.warn(`[skill] ${slug}: ${err.message}, skipping`);
|
|
37
67
|
}
|
|
38
68
|
}
|
|
39
|
-
return registry;
|
|
40
69
|
}
|
|
41
70
|
list() {
|
|
42
71
|
return Array.from(this.metadataBySlug.values());
|
|
@@ -108,7 +137,19 @@ export function findSkillsDir() {
|
|
|
108
137
|
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
109
138
|
return path.resolve(here, '..', 'skills');
|
|
110
139
|
}
|
|
111
|
-
|
|
140
|
+
/**
|
|
141
|
+
* Roots to scan for selectable writing styles, highest precedence first:
|
|
142
|
+
* project `<cwd>/.claude/skills` > global `~/.claude/skills` > in-package bundle.
|
|
143
|
+
* Project/global are user-authored (`source: 'user'`); the bundle is `'bundled'`.
|
|
144
|
+
*/
|
|
145
|
+
export function findSkillsRoots(cwd) {
|
|
146
|
+
return [
|
|
147
|
+
{ dir: path.join(cwd, '.claude', 'skills'), source: 'user' },
|
|
148
|
+
{ dir: path.join(os.homedir(), '.claude', 'skills'), source: 'user' },
|
|
149
|
+
{ dir: findSkillsDir(), source: 'bundled' },
|
|
150
|
+
];
|
|
151
|
+
}
|
|
152
|
+
function parseFrontmatter(slug, skillPath, source, data) {
|
|
112
153
|
const title = data.title;
|
|
113
154
|
const description = data.description;
|
|
114
155
|
const version = data.version;
|
|
@@ -124,7 +165,7 @@ function parseFrontmatter(slug, skillPath, data) {
|
|
|
124
165
|
throw new Error("frontmatter 'language' must be 'en' or 'pl'");
|
|
125
166
|
if (scopeRaw !== 'writing-style' && scopeRaw !== 'contextual')
|
|
126
167
|
throw new Error("frontmatter 'scope' must be 'writing-style' or 'contextual'");
|
|
127
|
-
return { slug, title, description, version, language, scope: scopeRaw, path: skillPath };
|
|
168
|
+
return { slug, title, description, version, language, scope: scopeRaw, source, path: skillPath };
|
|
128
169
|
}
|
|
129
170
|
function loadSkillFiles(skillDir) {
|
|
130
171
|
const out = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-registry.js","sourceRoot":"","sources":["../../../src/server/services/skill-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-registry.js","sourceRoot":"","sources":["../../../src/server/services/skill-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M30 (L2): static file server rooted at `pagesDir`, backing `GET /api/static/*`.
|
|
3
|
+
*
|
|
4
|
+
* Used as the iframe `src` for the read-only HTML preview. Deliberately a separate
|
|
5
|
+
* slice from `PagesService`: it copies the `resolveSafe` *pattern* from `pages.ts`
|
|
6
|
+
* rather than sharing a helper, and applies NO extension whitelist (any file under
|
|
7
|
+
* `pagesDir` is servable so relative assets — `./style.css`, `img/x.png` — resolve).
|
|
8
|
+
*/
|
|
9
|
+
/** Thrown when a requested path escapes `pagesDir` (`../`, absolute, null byte). Maps to HTTP 403. */
|
|
10
|
+
export declare class StaticPathTraversalError extends Error {
|
|
11
|
+
constructor(relPath: string);
|
|
12
|
+
}
|
|
13
|
+
export declare class StaticHtmlService {
|
|
14
|
+
readonly root: string;
|
|
15
|
+
constructor(cwd: string, pagesDir?: string);
|
|
16
|
+
/**
|
|
17
|
+
* Resolve a request path (relative to `pagesDir`) to an absolute path, guarding
|
|
18
|
+
* against traversal. No extension check. Throws {@link StaticPathTraversalError}
|
|
19
|
+
* if the path would escape the root.
|
|
20
|
+
*/
|
|
21
|
+
resolveSafe(relPath: string): string;
|
|
22
|
+
/** True if the resolved (in-root) path exists and is a regular file. */
|
|
23
|
+
existsFile(abs: string): Promise<boolean>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* M30 (L2): static file server rooted at `pagesDir`, backing `GET /api/static/*`.
|
|
5
|
+
*
|
|
6
|
+
* Used as the iframe `src` for the read-only HTML preview. Deliberately a separate
|
|
7
|
+
* slice from `PagesService`: it copies the `resolveSafe` *pattern* from `pages.ts`
|
|
8
|
+
* rather than sharing a helper, and applies NO extension whitelist (any file under
|
|
9
|
+
* `pagesDir` is servable so relative assets — `./style.css`, `img/x.png` — resolve).
|
|
10
|
+
*/
|
|
11
|
+
/** Thrown when a requested path escapes `pagesDir` (`../`, absolute, null byte). Maps to HTTP 403. */
|
|
12
|
+
export class StaticPathTraversalError extends Error {
|
|
13
|
+
constructor(relPath) {
|
|
14
|
+
super(`path escapes pages root: ${relPath}`);
|
|
15
|
+
this.name = 'StaticPathTraversalError';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class StaticHtmlService {
|
|
19
|
+
root;
|
|
20
|
+
constructor(cwd, pagesDir = 'pages') {
|
|
21
|
+
this.root = path.join(cwd, pagesDir);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Resolve a request path (relative to `pagesDir`) to an absolute path, guarding
|
|
25
|
+
* against traversal. No extension check. Throws {@link StaticPathTraversalError}
|
|
26
|
+
* if the path would escape the root.
|
|
27
|
+
*/
|
|
28
|
+
resolveSafe(relPath) {
|
|
29
|
+
if (!relPath || relPath.includes('\0'))
|
|
30
|
+
throw new StaticPathTraversalError(relPath);
|
|
31
|
+
const abs = path.resolve(this.root, relPath);
|
|
32
|
+
const rel = path.relative(this.root, abs);
|
|
33
|
+
if (rel.startsWith('..') || path.isAbsolute(rel)) {
|
|
34
|
+
throw new StaticPathTraversalError(relPath);
|
|
35
|
+
}
|
|
36
|
+
return abs;
|
|
37
|
+
}
|
|
38
|
+
/** True if the resolved (in-root) path exists and is a regular file. */
|
|
39
|
+
async existsFile(abs) {
|
|
40
|
+
try {
|
|
41
|
+
const stat = await fs.stat(abs);
|
|
42
|
+
return stat.isFile();
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=static-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-html.js","sourceRoot":"","sources":["../../../src/server/services/static-html.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;GAOG;AAEH,sGAAsG;AACtG,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,iBAAiB;IACnB,IAAI,CAAS;IAEtB,YAAY,GAAW,EAAE,WAAmB,OAAO;QACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,OAAe;QACzB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import type Database from 'better-sqlite3';
|
|
2
2
|
import type { EntityType, Tag, TagCreateInput, TagUpdateInput } from '../../shared/entities.js';
|
|
3
|
+
import type { EntityStore } from './entity-store.js';
|
|
3
4
|
export declare class TagsService {
|
|
4
5
|
private db;
|
|
5
6
|
constructor(db: Database.Database);
|
|
7
|
+
/**
|
|
8
|
+
* M29: tags.json is the registry source of truth. Wired post-construction
|
|
9
|
+
* (the store is built later in boot). When present, every tag mutation
|
|
10
|
+
* re-writes tags.json; a tag rename also re-persists the entity files whose
|
|
11
|
+
* `tags[]` the FK cascade just moved. Null during early boot / index rebuild.
|
|
12
|
+
*/
|
|
13
|
+
private store;
|
|
14
|
+
setEntityStore(store: EntityStore): void;
|
|
6
15
|
list(): Tag[];
|
|
7
16
|
getBySlug(slug: string): Tag | null;
|
|
8
|
-
getIdBySlug(slug: string): number | null;
|
|
9
17
|
create(input: TagCreateInput): Tag;
|
|
18
|
+
/** M29: re-persist the entity files whose `tags[]` changed due to a tag mutation. */
|
|
19
|
+
private persistEntitiesWithTag;
|
|
10
20
|
/** Idempotent: returns existing tag if already present. */
|
|
11
21
|
ensure(name: string): Tag;
|
|
12
22
|
update(slug: string, input: TagUpdateInput): Tag;
|
|
@@ -15,8 +25,8 @@ export declare class TagsService {
|
|
|
15
25
|
affectedEntities: number;
|
|
16
26
|
};
|
|
17
27
|
/** Sets the tag set of an entity to exactly `tagNames` (auto-creating missing tags). */
|
|
18
|
-
assignTags(entityType: EntityType,
|
|
19
|
-
getEntityTagSlugs(entityType: EntityType,
|
|
28
|
+
assignTags(entityType: EntityType, entitySlug: string, tagNames: string[]): string[];
|
|
29
|
+
getEntityTagSlugs(entityType: EntityType, entitySlug: string): string[];
|
|
20
30
|
private countsByTagSlug;
|
|
21
31
|
private pickColor;
|
|
22
32
|
private toTag;
|
|
@@ -8,6 +8,16 @@ export class TagsService {
|
|
|
8
8
|
constructor(db) {
|
|
9
9
|
this.db = db;
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* M29: tags.json is the registry source of truth. Wired post-construction
|
|
13
|
+
* (the store is built later in boot). When present, every tag mutation
|
|
14
|
+
* re-writes tags.json; a tag rename also re-persists the entity files whose
|
|
15
|
+
* `tags[]` the FK cascade just moved. Null during early boot / index rebuild.
|
|
16
|
+
*/
|
|
17
|
+
store = null;
|
|
18
|
+
setEntityStore(store) {
|
|
19
|
+
this.store = store;
|
|
20
|
+
}
|
|
11
21
|
list() {
|
|
12
22
|
const rows = this.db.prepare(`SELECT * FROM tag ORDER BY name`).all();
|
|
13
23
|
const counts = this.countsByTagSlug();
|
|
@@ -19,10 +29,6 @@ export class TagsService {
|
|
|
19
29
|
return null;
|
|
20
30
|
return this.toTag(row, this.countsByTagSlug(slug));
|
|
21
31
|
}
|
|
22
|
-
getIdBySlug(slug) {
|
|
23
|
-
const row = this.db.prepare(`SELECT id FROM tag WHERE slug = ?`).get(slug);
|
|
24
|
-
return row?.id ?? null;
|
|
25
|
-
}
|
|
26
32
|
create(input) {
|
|
27
33
|
const slug = tagSlug(input.name);
|
|
28
34
|
if (!slug)
|
|
@@ -34,8 +40,25 @@ export class TagsService {
|
|
|
34
40
|
this.db
|
|
35
41
|
.prepare(`INSERT INTO tag (slug, name, color, description) VALUES (?, ?, ?, ?)`)
|
|
36
42
|
.run(slug, input.name, color, input.description ?? null);
|
|
43
|
+
this.store?.persistTags();
|
|
37
44
|
return this.getBySlug(slug);
|
|
38
45
|
}
|
|
46
|
+
/** M29: re-persist the entity files whose `tags[]` changed due to a tag mutation. */
|
|
47
|
+
persistEntitiesWithTag(tagSlugValue) {
|
|
48
|
+
if (!this.store)
|
|
49
|
+
return;
|
|
50
|
+
const rows = this.db
|
|
51
|
+
.prepare(`SELECT DISTINCT entity_type, entity_slug FROM entity_tag WHERE tag_slug = ?`)
|
|
52
|
+
.all(tagSlugValue);
|
|
53
|
+
for (const r of rows) {
|
|
54
|
+
try {
|
|
55
|
+
this.store.persist(r.entity_type, r.entity_slug);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
/* entity may be inactive/missing — skip */
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
39
62
|
/** Idempotent: returns existing tag if already present. */
|
|
40
63
|
ensure(name) {
|
|
41
64
|
const slug = tagSlug(name);
|
|
@@ -66,54 +89,70 @@ export class TagsService {
|
|
|
66
89
|
updated_at = datetime('now')
|
|
67
90
|
WHERE slug = ?`)
|
|
68
91
|
.run(newSlug, newName, input.color !== undefined ? input.color : existing.color, input.description !== undefined ? input.description : existing.description, slug);
|
|
92
|
+
this.store?.persistTags();
|
|
93
|
+
// M29: on rename, entity_tag.tag_slug already cascaded (FK ON UPDATE
|
|
94
|
+
// CASCADE) — re-persist the entity files whose tags[] now reference newSlug.
|
|
95
|
+
if (newSlug !== slug)
|
|
96
|
+
this.persistEntitiesWithTag(newSlug);
|
|
69
97
|
return this.getBySlug(newSlug);
|
|
70
98
|
}
|
|
71
99
|
remove(slug) {
|
|
72
|
-
const existing = this.db.prepare(`SELECT
|
|
100
|
+
const existing = this.db.prepare(`SELECT slug FROM tag WHERE slug = ?`).get(slug);
|
|
73
101
|
if (!existing)
|
|
74
102
|
throw new DomainError('NOT_FOUND', `tag '${slug}' not found`);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
.
|
|
78
|
-
|
|
79
|
-
|
|
103
|
+
// Capture affected entities BEFORE the delete cascades entity_tag away.
|
|
104
|
+
const affectedEntities = this.db
|
|
105
|
+
.prepare(`SELECT DISTINCT entity_type, entity_slug FROM entity_tag WHERE tag_slug = ?`)
|
|
106
|
+
.all(slug);
|
|
107
|
+
this.db.prepare(`DELETE FROM tag WHERE slug = ?`).run(slug);
|
|
108
|
+
this.store?.persistTags();
|
|
109
|
+
if (this.store) {
|
|
110
|
+
for (const r of affectedEntities) {
|
|
111
|
+
try {
|
|
112
|
+
this.store.persist(r.entity_type, r.entity_slug);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
/* skip */
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return { deleted: true, affectedEntities: affectedEntities.length };
|
|
80
120
|
}
|
|
81
121
|
/** Sets the tag set of an entity to exactly `tagNames` (auto-creating missing tags). */
|
|
82
|
-
assignTags(entityType,
|
|
122
|
+
assignTags(entityType, entitySlug, tagNames) {
|
|
83
123
|
const names = [...new Set(tagNames.map((n) => n.trim()).filter(Boolean))];
|
|
84
124
|
const tx = this.db.transaction(() => {
|
|
85
|
-
const
|
|
125
|
+
const tagSlugs = [];
|
|
86
126
|
for (const name of names) {
|
|
87
127
|
const tag = this.ensure(name);
|
|
88
|
-
|
|
128
|
+
tagSlugs.push(tag.slug);
|
|
89
129
|
}
|
|
90
130
|
this.db
|
|
91
|
-
.prepare(`DELETE FROM entity_tag WHERE entity_type = ? AND
|
|
92
|
-
.run(entityType,
|
|
93
|
-
const insert = this.db.prepare(`INSERT INTO entity_tag (entity_type,
|
|
94
|
-
for (const
|
|
95
|
-
insert.run(entityType,
|
|
131
|
+
.prepare(`DELETE FROM entity_tag WHERE entity_type = ? AND entity_slug = ?`)
|
|
132
|
+
.run(entityType, entitySlug);
|
|
133
|
+
const insert = this.db.prepare(`INSERT INTO entity_tag (entity_type, entity_slug, tag_slug) VALUES (?, ?, ?)`);
|
|
134
|
+
for (const ts of tagSlugs)
|
|
135
|
+
insert.run(entityType, entitySlug, ts);
|
|
96
136
|
return names.map((n) => tagSlug(n));
|
|
97
137
|
});
|
|
98
138
|
return tx();
|
|
99
139
|
}
|
|
100
|
-
getEntityTagSlugs(entityType,
|
|
140
|
+
getEntityTagSlugs(entityType, entitySlug) {
|
|
101
141
|
const rows = this.db
|
|
102
142
|
.prepare(`SELECT t.slug AS slug
|
|
103
143
|
FROM entity_tag et
|
|
104
|
-
JOIN tag t ON t.
|
|
105
|
-
WHERE et.entity_type = ? AND et.
|
|
144
|
+
JOIN tag t ON t.slug = et.tag_slug
|
|
145
|
+
WHERE et.entity_type = ? AND et.entity_slug = ?
|
|
106
146
|
ORDER BY t.name`)
|
|
107
|
-
.all(entityType,
|
|
147
|
+
.all(entityType, entitySlug);
|
|
108
148
|
return rows.map((r) => r.slug);
|
|
109
149
|
}
|
|
110
150
|
countsByTagSlug(slug) {
|
|
111
151
|
const sql = `
|
|
112
|
-
SELECT
|
|
152
|
+
SELECT et.tag_slug AS slug, et.entity_type AS entity_type, COUNT(*) AS c
|
|
113
153
|
FROM entity_tag et
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
GROUP BY t.slug, et.entity_type
|
|
154
|
+
${slug ? `WHERE et.tag_slug = ?` : ``}
|
|
155
|
+
GROUP BY et.tag_slug, et.entity_type
|
|
117
156
|
`;
|
|
118
157
|
const rows = (slug ? this.db.prepare(sql).all(slug) : this.db.prepare(sql).all());
|
|
119
158
|
const out = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/server/services/tags.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/server/services/tags.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import type { RawEntityReader, RawEntityType } from '../domain/raw-entity-reader
|
|
|
5
5
|
export type VersionOp = 'create' | 'update' | 'delete';
|
|
6
6
|
export interface CreateVersionInput {
|
|
7
7
|
entityType: EntityType;
|
|
8
|
-
|
|
8
|
+
entitySlug: string;
|
|
9
9
|
data: unknown;
|
|
10
10
|
changedBy: ChangedBy;
|
|
11
11
|
changeSummary?: string | null;
|
|
@@ -27,22 +27,22 @@ export declare class VersionService {
|
|
|
27
27
|
* host.snapshot BEFORE the caller deletes the row — pass `previousSnapshot`
|
|
28
28
|
* explicitly to capture a tombstone with last-known data.
|
|
29
29
|
*/
|
|
30
|
-
captureEntitySnapshot(type: RawEntityType,
|
|
30
|
+
captureEntitySnapshot(type: RawEntityType, entitySlug: string, op: VersionOp, actor: ChangedBy, summary: string | null, serializerVersion: string): VersionListItem;
|
|
31
31
|
/**
|
|
32
32
|
* Capture a new version. M17 augments the row with `op` and
|
|
33
33
|
* `serializer_version`; `release_id` always starts NULL and is assigned by
|
|
34
34
|
* `releaseService.createRelease()`.
|
|
35
35
|
*/
|
|
36
|
-
createVersion(entityType: EntityType,
|
|
37
|
-
listVersions(entityType: EntityType,
|
|
38
|
-
getVersion(entityType: EntityType,
|
|
36
|
+
createVersion(entityType: EntityType, entitySlug: string, data: unknown, changedBy: ChangedBy, changeSummary?: string | null, op?: VersionOp, serializerVersion?: string | null): VersionListItem;
|
|
37
|
+
listVersions(entityType: EntityType, entitySlug: string): VersionListItem[];
|
|
38
|
+
getVersion(entityType: EntityType, entitySlug: string, version: number): VersionDetail | null;
|
|
39
39
|
/**
|
|
40
40
|
* M17: latest captured version of an entity at-or-before a given release.
|
|
41
41
|
* `releaseId === null` returns the latest unreleased capture (release_id IS NULL).
|
|
42
42
|
* `releaseId === undefined` returns the latest overall (no release filter).
|
|
43
43
|
*/
|
|
44
|
-
getLatestVersionForEntity(entityType: EntityType,
|
|
45
|
-
diff(entityType: EntityType,
|
|
44
|
+
getLatestVersionForEntity(entityType: EntityType, entitySlug: string, releaseId?: number | null): VersionDetail | null;
|
|
45
|
+
diff(entityType: EntityType, entitySlug: string, fromVersion: number, toVersion: number): {
|
|
46
46
|
from: VersionDetail;
|
|
47
47
|
to: VersionDetail;
|
|
48
48
|
changes: DiffEntry[];
|