@hasna/skills 0.10.5 → 0.10.8
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/bin/index.js +9 -3
- package/bin/mcp.js +2 -1
- package/bin/migrate.js +2 -1
- package/bin/server.js +2 -1
- package/bin/worker.js +2 -1
- package/dist/index.js +8 -2
- package/dist/lib/codex-hook-rpc.d.ts +1 -1
- package/dist/lib/release-review-linkage.d.ts +104 -0
- package/dist/sdk/index.js +8 -2
- package/package.json +2 -1
package/bin/index.js
CHANGED
|
@@ -36868,7 +36868,7 @@ var package_default;
|
|
|
36868
36868
|
var init_package = __esm(() => {
|
|
36869
36869
|
package_default = {
|
|
36870
36870
|
name: "@hasna/skills",
|
|
36871
|
-
version: "0.10.
|
|
36871
|
+
version: "0.10.8",
|
|
36872
36872
|
description: "Skills library for AI coding agents",
|
|
36873
36873
|
type: "module",
|
|
36874
36874
|
bin: {
|
|
@@ -36930,6 +36930,7 @@ var init_package = __esm(() => {
|
|
|
36930
36930
|
migrate: "bun run ./src/server/migrate.ts",
|
|
36931
36931
|
typecheck: "tsc --noEmit",
|
|
36932
36932
|
"verify:release": "bun run scripts/release-guard.ts",
|
|
36933
|
+
"verify:release-review": "bun run scripts/verify-release-review.ts",
|
|
36933
36934
|
"verify:consumer-types": "bun run scripts/consumer-types.ts",
|
|
36934
36935
|
prepack: "bun run verify:generated && bun run verify:release && bun run verify:consumer-types",
|
|
36935
36936
|
prepublishOnly: "bun run verify:producer && bun run typecheck && bun run test",
|
|
@@ -51957,6 +51958,9 @@ function assertManagedAgentBridge(agent, options = {}) {
|
|
|
51957
51958
|
const runtimeCache = canonicalAgentPath(join20(home, ".cache", "codex-runtimes"), aliases);
|
|
51958
51959
|
if (entry.path.startsWith(runtimeCache + sep4) && discovery?.method === "automatic" && discovery.roots.some((root) => entry.path.startsWith(root + sep4)))
|
|
51959
51960
|
return true;
|
|
51961
|
+
const bundledMarketplaces = canonicalAgentPath(join20(home, ".codex", ".tmp", "bundled-marketplaces"), aliases);
|
|
51962
|
+
if (entry.path.startsWith(bundledMarketplaces + sep4) && discovery?.method === "automatic" && discovery.roots.some((root) => entry.path.startsWith(root + sep4)))
|
|
51963
|
+
return true;
|
|
51960
51964
|
if (!entry.path.startsWith(canonicalAgentPath(join20(home, ".codex", "skills", ".system"), aliases) + sep4))
|
|
51961
51965
|
return false;
|
|
51962
51966
|
return Array.isArray(binding.disabledBuiltins) && binding.disabledBuiltins.some((item) => item.path === entry.path && item.hash === entry.hash);
|
|
@@ -55360,6 +55364,7 @@ function rebindAgentDiscovery(binding, changes) {
|
|
|
55360
55364
|
}) };
|
|
55361
55365
|
}
|
|
55362
55366
|
function assertProjectDiscovery(agent, directories, home, canonical4 = resolve15, reviewed) {
|
|
55367
|
+
const homeConfigPath = canonical4(agentDiscoveryConfigPath(home, agent));
|
|
55363
55368
|
for (const directory of directories) {
|
|
55364
55369
|
const isHome = resolve15(directory) === resolve15(home);
|
|
55365
55370
|
if (agent === "hermes") {
|
|
@@ -55373,7 +55378,8 @@ function assertProjectDiscovery(agent, directories, home, canonical4 = resolve15
|
|
|
55373
55378
|
const path = canonical4(join31(directory, suffix)), raw = read2(path);
|
|
55374
55379
|
if (raw === null)
|
|
55375
55380
|
continue;
|
|
55376
|
-
|
|
55381
|
+
const isRootAliasedHomeConfig = agent === "claude" && suffix === ".claude/settings.json" || agent === "codex" && suffix === ".codex/config.toml";
|
|
55382
|
+
if (isRootAliasedHomeConfig && path === homeConfigPath)
|
|
55377
55383
|
continue;
|
|
55378
55384
|
if (suffix.endsWith(".jsonc"))
|
|
55379
55385
|
throw new Error(`NATIVE_SKILL_DRIFT: project JSONC discovery configuration requires review: ${path}`);
|
|
@@ -109698,7 +109704,7 @@ async function connectCodexHookRpc(options) {
|
|
|
109698
109704
|
}
|
|
109699
109705
|
var SUPPORTED_CODEX_HOOK_VERSIONS;
|
|
109700
109706
|
var init_codex_hook_rpc = __esm(() => {
|
|
109701
|
-
SUPPORTED_CODEX_HOOK_VERSIONS = ["codex-cli 0.153.0", "codex-cli 0.154.0", "codex-cli 0.155.0", "codex-cli 0.155.1", "codex-cli 0.156.1"];
|
|
109707
|
+
SUPPORTED_CODEX_HOOK_VERSIONS = ["codex-cli 0.153.0", "codex-cli 0.154.0", "codex-cli 0.155.0", "codex-cli 0.155.1", "codex-cli 0.156.1", "codex-cli 0.157.0", "codex-cli 0.157.1"];
|
|
109702
109708
|
});
|
|
109703
109709
|
|
|
109704
109710
|
// src/lib/codex-hook-trust-identity.ts
|
package/bin/mcp.js
CHANGED
|
@@ -20019,7 +20019,7 @@ var package_default;
|
|
|
20019
20019
|
var init_package = __esm(() => {
|
|
20020
20020
|
package_default = {
|
|
20021
20021
|
name: "@hasna/skills",
|
|
20022
|
-
version: "0.10.
|
|
20022
|
+
version: "0.10.8",
|
|
20023
20023
|
description: "Skills library for AI coding agents",
|
|
20024
20024
|
type: "module",
|
|
20025
20025
|
bin: {
|
|
@@ -20081,6 +20081,7 @@ var init_package = __esm(() => {
|
|
|
20081
20081
|
migrate: "bun run ./src/server/migrate.ts",
|
|
20082
20082
|
typecheck: "tsc --noEmit",
|
|
20083
20083
|
"verify:release": "bun run scripts/release-guard.ts",
|
|
20084
|
+
"verify:release-review": "bun run scripts/verify-release-review.ts",
|
|
20084
20085
|
"verify:consumer-types": "bun run scripts/consumer-types.ts",
|
|
20085
20086
|
prepack: "bun run verify:generated && bun run verify:release && bun run verify:consumer-types",
|
|
20086
20087
|
prepublishOnly: "bun run verify:producer && bun run typecheck && bun run test",
|
package/bin/migrate.js
CHANGED
|
@@ -7,7 +7,7 @@ import { join as join5 } from "path";
|
|
|
7
7
|
// package.json
|
|
8
8
|
var package_default = {
|
|
9
9
|
name: "@hasna/skills",
|
|
10
|
-
version: "0.10.
|
|
10
|
+
version: "0.10.8",
|
|
11
11
|
description: "Skills library for AI coding agents",
|
|
12
12
|
type: "module",
|
|
13
13
|
bin: {
|
|
@@ -69,6 +69,7 @@ var package_default = {
|
|
|
69
69
|
migrate: "bun run ./src/server/migrate.ts",
|
|
70
70
|
typecheck: "tsc --noEmit",
|
|
71
71
|
"verify:release": "bun run scripts/release-guard.ts",
|
|
72
|
+
"verify:release-review": "bun run scripts/verify-release-review.ts",
|
|
72
73
|
"verify:consumer-types": "bun run scripts/consumer-types.ts",
|
|
73
74
|
prepack: "bun run verify:generated && bun run verify:release && bun run verify:consumer-types",
|
|
74
75
|
prepublishOnly: "bun run verify:producer && bun run typecheck && bun run test",
|
package/bin/server.js
CHANGED
|
@@ -24122,7 +24122,7 @@ var init_dist_es9 = __esm(() => {
|
|
|
24122
24122
|
// package.json
|
|
24123
24123
|
var package_default = {
|
|
24124
24124
|
name: "@hasna/skills",
|
|
24125
|
-
version: "0.10.
|
|
24125
|
+
version: "0.10.8",
|
|
24126
24126
|
description: "Skills library for AI coding agents",
|
|
24127
24127
|
type: "module",
|
|
24128
24128
|
bin: {
|
|
@@ -24184,6 +24184,7 @@ var package_default = {
|
|
|
24184
24184
|
migrate: "bun run ./src/server/migrate.ts",
|
|
24185
24185
|
typecheck: "tsc --noEmit",
|
|
24186
24186
|
"verify:release": "bun run scripts/release-guard.ts",
|
|
24187
|
+
"verify:release-review": "bun run scripts/verify-release-review.ts",
|
|
24187
24188
|
"verify:consumer-types": "bun run scripts/consumer-types.ts",
|
|
24188
24189
|
prepack: "bun run verify:generated && bun run verify:release && bun run verify:consumer-types",
|
|
24189
24190
|
prepublishOnly: "bun run verify:producer && bun run typecheck && bun run test",
|
package/bin/worker.js
CHANGED
|
@@ -24125,7 +24125,7 @@ import { randomUUID as randomUUID6 } from "crypto";
|
|
|
24125
24125
|
// package.json
|
|
24126
24126
|
var package_default = {
|
|
24127
24127
|
name: "@hasna/skills",
|
|
24128
|
-
version: "0.10.
|
|
24128
|
+
version: "0.10.8",
|
|
24129
24129
|
description: "Skills library for AI coding agents",
|
|
24130
24130
|
type: "module",
|
|
24131
24131
|
bin: {
|
|
@@ -24187,6 +24187,7 @@ var package_default = {
|
|
|
24187
24187
|
migrate: "bun run ./src/server/migrate.ts",
|
|
24188
24188
|
typecheck: "tsc --noEmit",
|
|
24189
24189
|
"verify:release": "bun run scripts/release-guard.ts",
|
|
24190
|
+
"verify:release-review": "bun run scripts/verify-release-review.ts",
|
|
24190
24191
|
"verify:consumer-types": "bun run scripts/consumer-types.ts",
|
|
24191
24192
|
prepack: "bun run verify:generated && bun run verify:release && bun run verify:consumer-types",
|
|
24192
24193
|
prepublishOnly: "bun run verify:producer && bun run typecheck && bun run test",
|
package/dist/index.js
CHANGED
|
@@ -9611,7 +9611,7 @@ import { isAbsolute as isAbsolute11, join as join23, resolve as resolve11 } from
|
|
|
9611
9611
|
// package.json
|
|
9612
9612
|
var package_default = {
|
|
9613
9613
|
name: "@hasna/skills",
|
|
9614
|
-
version: "0.10.
|
|
9614
|
+
version: "0.10.8",
|
|
9615
9615
|
description: "Skills library for AI coding agents",
|
|
9616
9616
|
type: "module",
|
|
9617
9617
|
bin: {
|
|
@@ -9673,6 +9673,7 @@ var package_default = {
|
|
|
9673
9673
|
migrate: "bun run ./src/server/migrate.ts",
|
|
9674
9674
|
typecheck: "tsc --noEmit",
|
|
9675
9675
|
"verify:release": "bun run scripts/release-guard.ts",
|
|
9676
|
+
"verify:release-review": "bun run scripts/verify-release-review.ts",
|
|
9676
9677
|
"verify:consumer-types": "bun run scripts/consumer-types.ts",
|
|
9677
9678
|
prepack: "bun run verify:generated && bun run verify:release && bun run verify:consumer-types",
|
|
9678
9679
|
prepublishOnly: "bun run verify:producer && bun run typecheck && bun run test",
|
|
@@ -14136,6 +14137,9 @@ function assertManagedAgentBridge(agent, options = {}) {
|
|
|
14136
14137
|
const runtimeCache = canonicalAgentPath(join16(home, ".cache", "codex-runtimes"), aliases);
|
|
14137
14138
|
if (entry.path.startsWith(runtimeCache + sep4) && discovery?.method === "automatic" && discovery.roots.some((root) => entry.path.startsWith(root + sep4)))
|
|
14138
14139
|
return true;
|
|
14140
|
+
const bundledMarketplaces = canonicalAgentPath(join16(home, ".codex", ".tmp", "bundled-marketplaces"), aliases);
|
|
14141
|
+
if (entry.path.startsWith(bundledMarketplaces + sep4) && discovery?.method === "automatic" && discovery.roots.some((root) => entry.path.startsWith(root + sep4)))
|
|
14142
|
+
return true;
|
|
14139
14143
|
if (!entry.path.startsWith(canonicalAgentPath(join16(home, ".codex", "skills", ".system"), aliases) + sep4))
|
|
14140
14144
|
return false;
|
|
14141
14145
|
return Array.isArray(binding.disabledBuiltins) && binding.disabledBuiltins.some((item) => item.path === entry.path && item.hash === entry.hash);
|
|
@@ -16867,6 +16871,7 @@ function captureDiscoveryPathSources(paths) {
|
|
|
16867
16871
|
return paths.map((path) => ({ path, hashMode: "path-bytes", sha256: hashDiscoveryPathFile(path, budget) }));
|
|
16868
16872
|
}
|
|
16869
16873
|
function assertProjectDiscovery(agent, directories, home, canonical4 = resolve14, reviewed) {
|
|
16874
|
+
const homeConfigPath = canonical4(agentDiscoveryConfigPath(home, agent));
|
|
16870
16875
|
for (const directory of directories) {
|
|
16871
16876
|
const isHome = resolve14(directory) === resolve14(home);
|
|
16872
16877
|
if (agent === "hermes") {
|
|
@@ -16880,7 +16885,8 @@ function assertProjectDiscovery(agent, directories, home, canonical4 = resolve14
|
|
|
16880
16885
|
const path = canonical4(join26(directory, suffix)), raw = read2(path);
|
|
16881
16886
|
if (raw === null)
|
|
16882
16887
|
continue;
|
|
16883
|
-
|
|
16888
|
+
const isRootAliasedHomeConfig = agent === "claude" && suffix === ".claude/settings.json" || agent === "codex" && suffix === ".codex/config.toml";
|
|
16889
|
+
if (isRootAliasedHomeConfig && path === homeConfigPath)
|
|
16884
16890
|
continue;
|
|
16885
16891
|
if (suffix.endsWith(".jsonc"))
|
|
16886
16892
|
throw new Error(`NATIVE_SKILL_DRIFT: project JSONC discovery configuration requires review: ${path}`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const SUPPORTED_CODEX_HOOK_VERSIONS: readonly ["codex-cli 0.153.0", "codex-cli 0.154.0", "codex-cli 0.155.0", "codex-cli 0.155.1", "codex-cli 0.156.1"];
|
|
1
|
+
export declare const SUPPORTED_CODEX_HOOK_VERSIONS: readonly ["codex-cli 0.153.0", "codex-cli 0.154.0", "codex-cli 0.155.0", "codex-cli 0.155.1", "codex-cli 0.156.1", "codex-cli 0.157.0", "codex-cli 0.157.1"];
|
|
2
2
|
export interface CodexHookRpc {
|
|
3
3
|
version: string;
|
|
4
4
|
processId?: number;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Release review linkage for @hasna/skills npm releases.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
*
|
|
6
|
+
* @hasna/skills 0.10.5 and 0.10.6 reached npm without the release authority's
|
|
7
|
+
* required pre-upload linkage: an independent reviewer's GO in git-prs and the
|
|
8
|
+
* git-publishing intent thread, bound to the exact candidate AND to the packed
|
|
9
|
+
* tarball that was uploaded. A published version cannot be unpublished, so the only
|
|
10
|
+
* place a release can refuse is BEFORE the upload.
|
|
11
|
+
*
|
|
12
|
+
* The binding lives in the annotated release tag message, which is created
|
|
13
|
+
* before the tag is pushed and is covered by the same protected-main ancestry
|
|
14
|
+
* the release workflow already requires:
|
|
15
|
+
*
|
|
16
|
+
* @hasna/skills 0.10.7
|
|
17
|
+
*
|
|
18
|
+
* <release notes>
|
|
19
|
+
*
|
|
20
|
+
* Release-Review-Agent: <registered reviewer coding-agent identity>
|
|
21
|
+
* Git-Publishing-Thread: <release intent thread id>
|
|
22
|
+
* Git-Prs-GO: <message id of the independent GO in git-prs for this candidate>
|
|
23
|
+
* Packed-SHA256: <64 lowercase hex>
|
|
24
|
+
*
|
|
25
|
+
* "EXACTLY" is enforced, not implied: each of the four linkage keys must appear
|
|
26
|
+
* exactly once, the linkage namespace is closed (a fifth Release-Review-* /
|
|
27
|
+
* Git-Publishing-* / Git-Prs-* / Packed-* key is a failure, so a field can never be silently
|
|
28
|
+
* swapped for a look-alike), values are strictly shaped, and the recorded
|
|
29
|
+
* Packed-SHA256 must equal the SHA-256 of the tarball this checkout actually
|
|
30
|
+
* packs. There is no fallback: a missing, duplicated, malformed or mismatched
|
|
31
|
+
* field refuses the release.
|
|
32
|
+
*
|
|
33
|
+
* The reviewer's digest must be produced with the release toolchain at the exact
|
|
34
|
+
* commit (see scripts/RELEASE.md): `npm pack --ignore-scripts` in apps/skills
|
|
35
|
+
* after `bun run build`, hashed with SHA-256. A digest taken from a different
|
|
36
|
+
* toolchain, a different commit or a differently-built tree does not match by
|
|
37
|
+
* design, and the mismatch is the gate doing its job.
|
|
38
|
+
*
|
|
39
|
+
* This module is pure: git and npm I/O stay in scripts/verify-release-review.ts,
|
|
40
|
+
* and the release workflow runs `bun run verify:release-review` before it is
|
|
41
|
+
* allowed to publish.
|
|
42
|
+
*/
|
|
43
|
+
export declare const SKILLS_RELEASE_REPOSITORY = "hasna/apps";
|
|
44
|
+
export declare const SKILLS_RELEASE_REPOSITORY_URL = "https://github.com/hasna/apps.git";
|
|
45
|
+
export declare const SKILLS_RELEASE_PACKAGE_PATH = "apps/skills";
|
|
46
|
+
export declare const SKILLS_RELEASE_MANIFEST_PATH = "apps/skills/package.json";
|
|
47
|
+
export declare const SKILLS_RELEASE_PACKAGE_NAME = "@hasna/skills";
|
|
48
|
+
export declare const SKILLS_RELEASE_REGISTRY = "https://registry.npmjs.org";
|
|
49
|
+
export declare const SKILLS_RELEASE_TAG_PREFIX = "npm/skills/v";
|
|
50
|
+
/** Field names carried by the annotated release tag message, in required order. */
|
|
51
|
+
export declare const RELEASE_REVIEW_LINKAGE_FIELDS: {
|
|
52
|
+
readonly reviewerAgent: "Release-Review-Agent";
|
|
53
|
+
readonly goThreadId: "Git-Publishing-Thread";
|
|
54
|
+
readonly goMessageId: "Git-Prs-GO";
|
|
55
|
+
readonly packedSha256: "Packed-SHA256";
|
|
56
|
+
};
|
|
57
|
+
export type ReleaseReviewLinkageFailure = {
|
|
58
|
+
check: string;
|
|
59
|
+
message: string;
|
|
60
|
+
};
|
|
61
|
+
export type ReleaseReviewLinkage = {
|
|
62
|
+
/** The registered coding-agent identity that performed the independent review. */
|
|
63
|
+
reviewerAgent: string;
|
|
64
|
+
/** Release intent thread in the git-publishing lane. */
|
|
65
|
+
goThreadId: string;
|
|
66
|
+
/** Message id of the independent GO in git-prs bound to this exact candidate. */
|
|
67
|
+
goMessageId: string;
|
|
68
|
+
/** SHA-256 of the packed release tarball, lowercase hex. */
|
|
69
|
+
packedSha256: string;
|
|
70
|
+
};
|
|
71
|
+
export type ReleaseReviewLinkageInput = {
|
|
72
|
+
tagMessage: string;
|
|
73
|
+
tag: string;
|
|
74
|
+
/** `git cat-file -t refs/tags/<tag>`; must be `tag` for an annotated tag. */
|
|
75
|
+
tagType: string;
|
|
76
|
+
/** `git rev-parse refs/tags/<tag>^{commit}`. */
|
|
77
|
+
tagCommit: string;
|
|
78
|
+
/** The exact checkout being released. */
|
|
79
|
+
releaseCommit: string;
|
|
80
|
+
packageName: string;
|
|
81
|
+
packageVersion: string;
|
|
82
|
+
repositoryUrl: string | undefined;
|
|
83
|
+
repositoryDirectory: string | undefined;
|
|
84
|
+
registry: string | undefined;
|
|
85
|
+
access: string | undefined;
|
|
86
|
+
/** SHA-256 computed from the tarball this checkout packs, when packing ran. */
|
|
87
|
+
packedSha256: string | undefined;
|
|
88
|
+
};
|
|
89
|
+
/** Resolve the semver a release tag carries, or undefined for any other tag. */
|
|
90
|
+
export declare function parseSkillsReleaseTagVersion(tag: string): string | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Parse the four linkage fields out of the annotated release tag message.
|
|
93
|
+
* Prose (subject and release notes) is allowed; the linkage namespace is not.
|
|
94
|
+
*/
|
|
95
|
+
export declare function parseReleaseReviewLinkage(tagMessage: string): {
|
|
96
|
+
linkage: Partial<ReleaseReviewLinkage>;
|
|
97
|
+
failures: ReleaseReviewLinkageFailure[];
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* The complete preflight: tagged candidate identity, package binding and the
|
|
101
|
+
* packed digest recorded in the tag. Returns every failure it finds so one run
|
|
102
|
+
* names all of them; any failure refuses the release.
|
|
103
|
+
*/
|
|
104
|
+
export declare function validateReleaseReviewLinkage(input: ReleaseReviewLinkageInput): ReleaseReviewLinkageFailure[];
|
package/dist/sdk/index.js
CHANGED
|
@@ -32373,7 +32373,7 @@ var init_event_sink = __esm(() => {
|
|
|
32373
32373
|
// package.json
|
|
32374
32374
|
var package_default = {
|
|
32375
32375
|
name: "@hasna/skills",
|
|
32376
|
-
version: "0.10.
|
|
32376
|
+
version: "0.10.8",
|
|
32377
32377
|
description: "Skills library for AI coding agents",
|
|
32378
32378
|
type: "module",
|
|
32379
32379
|
bin: {
|
|
@@ -32435,6 +32435,7 @@ var package_default = {
|
|
|
32435
32435
|
migrate: "bun run ./src/server/migrate.ts",
|
|
32436
32436
|
typecheck: "tsc --noEmit",
|
|
32437
32437
|
"verify:release": "bun run scripts/release-guard.ts",
|
|
32438
|
+
"verify:release-review": "bun run scripts/verify-release-review.ts",
|
|
32438
32439
|
"verify:consumer-types": "bun run scripts/consumer-types.ts",
|
|
32439
32440
|
prepack: "bun run verify:generated && bun run verify:release && bun run verify:consumer-types",
|
|
32440
32441
|
prepublishOnly: "bun run verify:producer && bun run typecheck && bun run test",
|
|
@@ -40665,6 +40666,7 @@ function captureDiscoveryPathSources(paths) {
|
|
|
40665
40666
|
return paths.map((path) => ({ path, hashMode: "path-bytes", sha256: hashDiscoveryPathFile(path, budget) }));
|
|
40666
40667
|
}
|
|
40667
40668
|
function assertProjectDiscovery(agent, directories, home, canonical4 = resolve13, reviewed) {
|
|
40669
|
+
const homeConfigPath = canonical4(agentDiscoveryConfigPath(home, agent));
|
|
40668
40670
|
for (const directory of directories) {
|
|
40669
40671
|
const isHome = resolve13(directory) === resolve13(home);
|
|
40670
40672
|
if (agent === "hermes") {
|
|
@@ -40678,7 +40680,8 @@ function assertProjectDiscovery(agent, directories, home, canonical4 = resolve13
|
|
|
40678
40680
|
const path = canonical4(join20(directory, suffix)), raw = read2(path);
|
|
40679
40681
|
if (raw === null)
|
|
40680
40682
|
continue;
|
|
40681
|
-
|
|
40683
|
+
const isRootAliasedHomeConfig = agent === "claude" && suffix === ".claude/settings.json" || agent === "codex" && suffix === ".codex/config.toml";
|
|
40684
|
+
if (isRootAliasedHomeConfig && path === homeConfigPath)
|
|
40682
40685
|
continue;
|
|
40683
40686
|
if (suffix.endsWith(".jsonc"))
|
|
40684
40687
|
throw new Error(`NATIVE_SKILL_DRIFT: project JSONC discovery configuration requires review: ${path}`);
|
|
@@ -42007,6 +42010,9 @@ function assertManagedAgentBridge(agent, options = {}) {
|
|
|
42007
42010
|
const runtimeCache = canonicalAgentPath(join21(home, ".cache", "codex-runtimes"), aliases);
|
|
42008
42011
|
if (entry.path.startsWith(runtimeCache + sep4) && discovery?.method === "automatic" && discovery.roots.some((root2) => entry.path.startsWith(root2 + sep4)))
|
|
42009
42012
|
return true;
|
|
42013
|
+
const bundledMarketplaces = canonicalAgentPath(join21(home, ".codex", ".tmp", "bundled-marketplaces"), aliases);
|
|
42014
|
+
if (entry.path.startsWith(bundledMarketplaces + sep4) && discovery?.method === "automatic" && discovery.roots.some((root2) => entry.path.startsWith(root2 + sep4)))
|
|
42015
|
+
return true;
|
|
42010
42016
|
if (!entry.path.startsWith(canonicalAgentPath(join21(home, ".codex", "skills", ".system"), aliases) + sep4))
|
|
42011
42017
|
return false;
|
|
42012
42018
|
return Array.isArray(binding.disabledBuiltins) && binding.disabledBuiltins.some((item) => item.path === entry.path && item.hash === entry.hash);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/skills",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.8",
|
|
4
4
|
"description": "Skills library for AI coding agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
"migrate": "bun run ./src/server/migrate.ts",
|
|
63
63
|
"typecheck": "tsc --noEmit",
|
|
64
64
|
"verify:release": "bun run scripts/release-guard.ts",
|
|
65
|
+
"verify:release-review": "bun run scripts/verify-release-review.ts",
|
|
65
66
|
"verify:consumer-types": "bun run scripts/consumer-types.ts",
|
|
66
67
|
"prepack": "bun run verify:generated && bun run verify:release && bun run verify:consumer-types",
|
|
67
68
|
"prepublishOnly": "bun run verify:producer && bun run typecheck && bun run test",
|