@bendyline/gezel-catalog 0.1.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +16 -8
- package/dist/index.js +35 -20
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -79,10 +79,16 @@ interface BundledSourceOptions {
|
|
|
79
79
|
*/
|
|
80
80
|
noIndex?: boolean;
|
|
81
81
|
/**
|
|
82
|
-
* The
|
|
83
|
-
* floors. Defaults to `
|
|
84
|
-
* gating against a stamped
|
|
85
|
-
* checkouts, which bypasses all filtering).
|
|
82
|
+
* The calendar line this build sits on, compared against content
|
|
83
|
+
* `minGezelVersion` floors. Defaults to `GEZEL_CONTENT_COMPAT`; injectable so
|
|
84
|
+
* tests can exercise gating against a stamped build (both constants are
|
|
85
|
+
* `0.0.0` in dev checkouts, which bypasses all filtering).
|
|
86
|
+
*
|
|
87
|
+
* Deliberately **not** `GEZEL_VERSION`. Floors are authored as `1.YYDDD`, and
|
|
88
|
+
* npm releases are semver: `0.1.0` and `1.0.0` fall below every floor while a
|
|
89
|
+
* later `2.0.0` clears all of them, so gating on the published version made
|
|
90
|
+
* npm builds hide floored content and would eventually have made them accept
|
|
91
|
+
* content they cannot run.
|
|
86
92
|
*/
|
|
87
93
|
gezelVersion?: string;
|
|
88
94
|
}
|
|
@@ -186,10 +192,12 @@ declare class CatalogService {
|
|
|
186
192
|
* bundled + community tiers, re-read on every disk access. The live
|
|
187
193
|
* gilde update mechanism flips it without reconstructing this service
|
|
188
194
|
* (which is built once at boot and held by many subsystems).
|
|
189
|
-
* @param opts.gezelVersion the
|
|
190
|
-
* content `minGezelVersion` floors. Defaults to
|
|
191
|
-
* inside each source
|
|
192
|
-
*
|
|
195
|
+
* @param opts.gezelVersion the calendar line this build sits on, compared
|
|
196
|
+
* against content `minGezelVersion` floors. Defaults to
|
|
197
|
+
* `GEZEL_CONTENT_COMPAT` inside each source — *not* `GEZEL_VERSION`, which
|
|
198
|
+
* is semver on the npm channel and not on the axis floors are authored
|
|
199
|
+
* against. Injectable so tests can exercise gating (dev checkouts report
|
|
200
|
+
* `0.0.0`, which bypasses all filtering).
|
|
193
201
|
*/
|
|
194
202
|
constructor(sources?: CatalogSource[], opts?: {
|
|
195
203
|
localRoot?: string;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
// src/service.ts
|
|
2
2
|
import { join as join4 } from "path";
|
|
3
3
|
|
|
4
|
+
// src/builtin-toolsets.ts
|
|
5
|
+
import { sanitizePresentationSvg } from "@bendyline/gezel/svg";
|
|
6
|
+
|
|
4
7
|
// src/builtin-toolset-icons.ts
|
|
5
8
|
var SVG_ATTRS = 'xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"';
|
|
6
9
|
var BUILTIN_TOOLSET_ICONS = {
|
|
@@ -50,6 +53,10 @@ var BUILTIN_TOOLSET_ICONS = {
|
|
|
50
53
|
// src/builtin-toolsets.ts
|
|
51
54
|
var BUILTIN_VERSION = "1.0.0";
|
|
52
55
|
var BUILTIN_RELEASED_AT = "2026-04-25T00:00:00Z";
|
|
56
|
+
function builtinIconSvg(id) {
|
|
57
|
+
const raw = BUILTIN_TOOLSET_ICONS[id];
|
|
58
|
+
return raw ? sanitizePresentationSvg(raw) ?? void 0 : void 0;
|
|
59
|
+
}
|
|
53
60
|
var BUILTIN_TOOLSETS = [
|
|
54
61
|
{
|
|
55
62
|
id: "memory",
|
|
@@ -60,7 +67,7 @@ var BUILTIN_TOOLSETS = [
|
|
|
60
67
|
{
|
|
61
68
|
id: "workspace-fs-read",
|
|
62
69
|
name: "Workspace File Reading",
|
|
63
|
-
description: "Read, list, search, and diff files in the project workspace. Mirrors Node's `fs` reads plus content/glob search. Diagnose-only \u2014 pair with `workspace-fs-write` to actually mutate.",
|
|
70
|
+
description: "Read, list, search, and diff files in the project workspace, and retrieve a referenced Boekwachter issue's durable metadata. Mirrors Node's `fs` reads plus content/glob search. Diagnose-only \u2014 pair with `workspace-fs-write` to actually mutate.",
|
|
64
71
|
tools: [
|
|
65
72
|
"list_dir",
|
|
66
73
|
"read_file",
|
|
@@ -69,7 +76,8 @@ var BUILTIN_TOOLSETS = [
|
|
|
69
76
|
"validate",
|
|
70
77
|
"grep_files",
|
|
71
78
|
"find_files",
|
|
72
|
-
"diff_files"
|
|
79
|
+
"diff_files",
|
|
80
|
+
"get_file_issue"
|
|
73
81
|
]
|
|
74
82
|
},
|
|
75
83
|
{
|
|
@@ -84,7 +92,8 @@ var BUILTIN_TOOLSETS = [
|
|
|
84
92
|
"map_repo",
|
|
85
93
|
"search_code",
|
|
86
94
|
"file_review",
|
|
87
|
-
"list_file_issues"
|
|
95
|
+
"list_file_issues",
|
|
96
|
+
"set_file_issue_status"
|
|
88
97
|
]
|
|
89
98
|
},
|
|
90
99
|
{
|
|
@@ -401,11 +410,12 @@ var BuiltinToolsetsSource = class {
|
|
|
401
410
|
if (kind !== "toolset") return [];
|
|
402
411
|
return BUILTIN_TOOLSETS.map((g) => {
|
|
403
412
|
const manifest = manifestForGroup(g);
|
|
413
|
+
const iconSvg = builtinIconSvg(g.id);
|
|
404
414
|
return {
|
|
405
415
|
sourceId: this.id,
|
|
406
416
|
kind,
|
|
407
417
|
manifest,
|
|
408
|
-
...
|
|
418
|
+
...iconSvg ? { iconSvg } : {}
|
|
409
419
|
};
|
|
410
420
|
});
|
|
411
421
|
}
|
|
@@ -417,11 +427,12 @@ var BuiltinToolsetsSource = class {
|
|
|
417
427
|
const g = BUILTIN_BY_ID.get(groupId);
|
|
418
428
|
if (!g) return null;
|
|
419
429
|
const manifest = manifestForGroup(g);
|
|
430
|
+
const iconSvg = builtinIconSvg(g.id);
|
|
420
431
|
return {
|
|
421
432
|
sourceId: this.id,
|
|
422
433
|
kind,
|
|
423
434
|
manifest,
|
|
424
|
-
...
|
|
435
|
+
...iconSvg ? { iconSvg } : {}
|
|
425
436
|
};
|
|
426
437
|
}
|
|
427
438
|
async listVersions(kind, id) {
|
|
@@ -465,7 +476,7 @@ import {
|
|
|
465
476
|
ChatModelVersionManifestSchema,
|
|
466
477
|
ConnectorTypeVersionManifestSchema,
|
|
467
478
|
CraftbookTemplateVersionManifestSchema,
|
|
468
|
-
|
|
479
|
+
GEZEL_CONTENT_COMPAT,
|
|
469
480
|
GezelTemplateVersionManifestSchema,
|
|
470
481
|
ImageModelVersionManifestSchema,
|
|
471
482
|
ProjectTypeVersionManifestSchema,
|
|
@@ -480,6 +491,7 @@ import {
|
|
|
480
491
|
parseCraftbookTestSpec,
|
|
481
492
|
satisfiesMinGezelVersion
|
|
482
493
|
} from "@bendyline/gezel";
|
|
494
|
+
import { sanitizePresentationSvg as sanitizePresentationSvg2 } from "@bendyline/gezel/svg";
|
|
483
495
|
var KINDS = [
|
|
484
496
|
"toolset",
|
|
485
497
|
"gezel-template",
|
|
@@ -528,7 +540,7 @@ var BundledSource = class {
|
|
|
528
540
|
this.id = opts.id ?? "bundled";
|
|
529
541
|
this.label = opts.label ?? "Bundled";
|
|
530
542
|
this.useIndex = !opts.noIndex;
|
|
531
|
-
this.gezelVersion = opts.gezelVersion ??
|
|
543
|
+
this.gezelVersion = opts.gezelVersion ?? GEZEL_CONTENT_COMPAT;
|
|
532
544
|
}
|
|
533
545
|
get root() {
|
|
534
546
|
return this.rootProvider();
|
|
@@ -587,11 +599,12 @@ var BundledSource = class {
|
|
|
587
599
|
if (!reResolved) continue;
|
|
588
600
|
manifest = reResolved;
|
|
589
601
|
}
|
|
602
|
+
const iconSvg = typeof e.iconSvg === "string" ? sanitizePresentationSvg2(e.iconSvg) : null;
|
|
590
603
|
const item = {
|
|
591
604
|
sourceId: this.id,
|
|
592
605
|
kind,
|
|
593
606
|
manifest,
|
|
594
|
-
...
|
|
607
|
+
...iconSvg ? { iconSvg } : {}
|
|
595
608
|
};
|
|
596
609
|
const logo = this.logoUrlFor(kind, manifest.id, manifest);
|
|
597
610
|
if (logo) item.logoUrl = logo;
|
|
@@ -1402,10 +1415,12 @@ var CatalogService = class {
|
|
|
1402
1415
|
* bundled + community tiers, re-read on every disk access. The live
|
|
1403
1416
|
* gilde update mechanism flips it without reconstructing this service
|
|
1404
1417
|
* (which is built once at boot and held by many subsystems).
|
|
1405
|
-
* @param opts.gezelVersion the
|
|
1406
|
-
* content `minGezelVersion` floors. Defaults to
|
|
1407
|
-
* inside each source
|
|
1408
|
-
*
|
|
1418
|
+
* @param opts.gezelVersion the calendar line this build sits on, compared
|
|
1419
|
+
* against content `minGezelVersion` floors. Defaults to
|
|
1420
|
+
* `GEZEL_CONTENT_COMPAT` inside each source — *not* `GEZEL_VERSION`, which
|
|
1421
|
+
* is semver on the npm channel and not on the axis floors are authored
|
|
1422
|
+
* against. Injectable so tests can exercise gating (dev checkouts report
|
|
1423
|
+
* `0.0.0`, which bypasses all filtering).
|
|
1409
1424
|
*/
|
|
1410
1425
|
constructor(sources, opts) {
|
|
1411
1426
|
this.contentRootProvider = opts?.contentRoot ?? null;
|
|
@@ -1826,6 +1841,7 @@ import {
|
|
|
1826
1841
|
resolvePnpmInvocation,
|
|
1827
1842
|
retryTransient
|
|
1828
1843
|
} from "@bendyline/gezel";
|
|
1844
|
+
import { windowsHeadlessSpawnOptions } from "@bendyline/gezel/native";
|
|
1829
1845
|
import * as tar from "tar";
|
|
1830
1846
|
var DEFAULT_NPM_REGISTRY = "https://registry.npmjs.org";
|
|
1831
1847
|
var MAX_PACKUMENT_BYTES = 5 * 1024 * 1024;
|
|
@@ -2147,12 +2163,11 @@ function runAndWait(command, args, cwd, shell) {
|
|
|
2147
2163
|
const child = spawn(command, args, {
|
|
2148
2164
|
cwd,
|
|
2149
2165
|
stdio: ["ignore", "pipe", "pipe"],
|
|
2150
|
-
//
|
|
2151
|
-
// Windows
|
|
2152
|
-
//
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
detached: true,
|
|
2166
|
+
// Keep the process-group boundary used by POSIX timeout cleanup. On
|
|
2167
|
+
// Windows, taskkill follows parent PIDs, so the owned installer stays
|
|
2168
|
+
// attached and its console window stays hidden.
|
|
2169
|
+
detached: process.platform !== "win32",
|
|
2170
|
+
...windowsHeadlessSpawnOptions(),
|
|
2156
2171
|
shell
|
|
2157
2172
|
});
|
|
2158
2173
|
let output = "";
|
|
@@ -2186,8 +2201,8 @@ function runAndWait(command, args, cwd, shell) {
|
|
|
2186
2201
|
function killProcessTree(child) {
|
|
2187
2202
|
if (process.platform === "win32" && child.pid) {
|
|
2188
2203
|
const killer = spawn("taskkill.exe", ["/PID", String(child.pid), "/T", "/F"], {
|
|
2189
|
-
|
|
2190
|
-
|
|
2204
|
+
stdio: "ignore",
|
|
2205
|
+
...windowsHeadlessSpawnOptions()
|
|
2191
2206
|
});
|
|
2192
2207
|
killer.once("error", () => child.kill("SIGKILL"));
|
|
2193
2208
|
killer.unref();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bendyline/gezel-catalog",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Gezel catalog loader: sources, install pipeline, and authoring scripts over the external @bendyline/gilde content package.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -47,10 +47,10 @@
|
|
|
47
47
|
"!dist/**/*.map"
|
|
48
48
|
],
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@bendyline/gilde": "0.1.
|
|
50
|
+
"@bendyline/gilde": "0.1.23",
|
|
51
51
|
"tar": "7.5.21",
|
|
52
52
|
"zod": "^4.4.3",
|
|
53
|
-
"@bendyline/gezel": "
|
|
53
|
+
"@bendyline/gezel": "1.0.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"esbuild": "^0.28.1",
|