superskill 0.2.7 → 0.3.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/CHANGELOG.md +19 -0
- package/LICENSE +0 -4
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/skill/activate.d.ts +6 -1
- package/dist/commands/skill/activate.js +52 -15
- package/dist/commands/skill/activate.js.map +1 -1
- package/dist/commands/skill/catalog.d.ts +38 -3
- package/dist/commands/skill/catalog.js +125 -178
- package/dist/commands/skill/catalog.js.map +1 -1
- package/dist/commands/skill/generate.js +4 -4
- package/dist/commands/skill/generate.js.map +1 -1
- package/dist/commands/skill/helpers.js +4 -4
- package/dist/commands/skill/helpers.js.map +1 -1
- package/dist/commands/skill/install.js +1 -1
- package/dist/commands/skill/install.js.map +1 -1
- package/dist/commands/skill/manifest.js +5 -5
- package/dist/commands/skill/manifest.js.map +1 -1
- package/dist/commands/skill/marketplace.js +1 -1
- package/dist/commands/skill/marketplace.js.map +1 -1
- package/dist/commands/skill/resolve.js +5 -5
- package/dist/commands/skill/resolve.js.map +1 -1
- package/dist/commands/skill/validate.js +1 -1
- package/dist/commands/skill/validate.js.map +1 -1
- package/dist/commands/skill/web-discovery.d.ts +3 -19
- package/dist/commands/skill/web-discovery.js +15 -172
- package/dist/commands/skill/web-discovery.js.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/core/registry.js +3 -5
- package/dist/core/registry.js.map +1 -1
- package/dist/lib/analytics.js +1 -1
- package/dist/lib/analytics.js.map +1 -1
- package/dist/lib/auto-profile.js +1 -1
- package/dist/lib/auto-profile.js.map +1 -1
- package/dist/lib/escape-regex.js +1 -1
- package/dist/lib/escape-regex.js.map +1 -1
- package/dist/lib/frontmatter.js +1 -1
- package/dist/lib/frontmatter.js.map +1 -1
- package/dist/lib/github-client.d.ts +19 -0
- package/dist/lib/github-client.js +68 -0
- package/dist/lib/github-client.js.map +1 -0
- package/dist/lib/project-detector.js +1 -1
- package/dist/lib/project-detector.js.map +1 -1
- package/dist/lib/registry-loader.d.ts +64 -0
- package/dist/lib/registry-loader.js +115 -0
- package/dist/lib/registry-loader.js.map +1 -0
- package/dist/lib/safe-external-path.js +1 -1
- package/dist/lib/safe-external-path.js.map +1 -1
- package/dist/lib/search-engine.js +1 -1
- package/dist/lib/search-engine.js.map +1 -1
- package/dist/lib/security-scanner.d.ts +16 -0
- package/dist/lib/security-scanner.js +44 -0
- package/dist/lib/security-scanner.js.map +1 -0
- package/dist/lib/session-registry.js +1 -1
- package/dist/lib/session-registry.js.map +1 -1
- package/dist/lib/skill-cache.js +3 -3
- package/dist/lib/skill-cache.js.map +1 -1
- package/dist/lib/skill-registry.js +1 -1
- package/dist/lib/skill-registry.js.map +1 -1
- package/dist/lib/skill-session.d.ts +37 -0
- package/dist/lib/skill-session.js +62 -0
- package/dist/lib/skill-session.js.map +1 -0
- package/dist/lib/stack-detector.js +1 -1
- package/dist/lib/stack-detector.js.map +1 -1
- package/dist/lib/text-utils.d.ts +14 -0
- package/dist/lib/text-utils.js +45 -0
- package/dist/lib/text-utils.js.map +1 -0
- package/dist/lib/token-estimator.js +1 -1
- package/dist/lib/token-estimator.js.map +1 -1
- package/dist/lib/trigger-matcher.d.ts +45 -0
- package/dist/lib/trigger-matcher.js +129 -0
- package/dist/lib/trigger-matcher.js.map +1 -0
- package/dist/lib/url-utils.d.ts +17 -0
- package/dist/lib/url-utils.js +45 -0
- package/dist/lib/url-utils.js.map +1 -0
- package/dist/lib/vault-fs.js +1 -1
- package/dist/lib/vault-fs.js.map +1 -1
- package/dist/mcp-server.js +11 -1
- package/dist/mcp-server.js.map +1 -1
- package/dist/setup/configure.js +1 -1
- package/dist/setup/configure.js.map +1 -1
- package/dist/setup/detect.js +1 -1
- package/dist/setup/detect.js.map +1 -1
- package/dist/setup/instructions.js +1 -1
- package/dist/setup/instructions.js.map +1 -1
- package/dist/setup/json-config.js +1 -1
- package/dist/setup/json-config.js.map +1 -1
- package/dist/setup/postinstall.js +1 -1
- package/dist/setup/postinstall.js.map +1 -1
- package/dist/setup/preuninstall.js +1 -1
- package/dist/setup/preuninstall.js.map +1 -1
- package/dist/setup/teardown.js +1 -1
- package/dist/setup/teardown.js.map +1 -1
- package/dist/setup/toml-config.js +1 -1
- package/dist/setup/toml-config.js.map +1 -1
- package/dist/setup/types.js +1 -1
- package/dist/setup/types.js.map +1 -1
- package/dist/test-helpers.js +1 -1
- package/dist/test-helpers.js.map +1 -1
- package/package.json +3 -3
- package/registry/index.json +1162 -0
- package/LICENSE-COMMERCIAL.md +0 -46
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-scanner.js","sourceRoot":"","sources":["../../src/lib/security-scanner.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAc7C;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,0DAA0D;IAC1D,MAAM,eAAe,GAA+C;QAClE,EAAE,OAAO,EAAE,2EAA2E,EAAE,MAAM,EAAE,yBAAyB,EAAE;QAC3H,EAAE,OAAO,EAAE,gDAAgD,EAAE,MAAM,EAAE,qBAAqB,EAAE;QAC5F,EAAE,OAAO,EAAE,6DAA6D,EAAE,MAAM,EAAE,oDAAoD,EAAE;QACxI,EAAE,OAAO,EAAE,kDAAkD,EAAE,MAAM,EAAE,2BAA2B,EAAE;QACpG,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,yCAAyC,EAAE;QAClF,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,gCAAgC,EAAE;QAC1E,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,2CAA2C,EAAE;QACrF,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,EAAE;KAC5D,CAAC;IAEF,KAAK,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QAClD,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5F,QAAQ,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxE,QAAQ,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;IAChG,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../../src/lib/session-registry.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../../src/lib/session-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/skill-cache.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
2
|
/**
|
|
3
3
|
* Skill cache — local disk cache for fetched skill content.
|
|
4
4
|
* Skills are cached at ~/.superskill/cache/{source}/{name}@{version}.md
|
|
@@ -8,7 +8,7 @@ import { readFile, writeFile, mkdir, rename, readdir } from "fs/promises";
|
|
|
8
8
|
import { resolve, dirname, join } from "path";
|
|
9
9
|
import { homedir, tmpdir } from "os";
|
|
10
10
|
import { randomBytes } from "crypto";
|
|
11
|
-
import {
|
|
11
|
+
import { getCatalog } from "../commands/skill/catalog.js";
|
|
12
12
|
// ── Configuration ────────────────────────────────────
|
|
13
13
|
const CACHE_DIR = resolve(homedir(), ".superskill", "cache");
|
|
14
14
|
/** The 8 core skills that are prefetched on install */
|
|
@@ -77,7 +77,7 @@ export async function prefetchCoreSkills(options) {
|
|
|
77
77
|
const results = { fetched: 0, cached: 0, failed: 0, errors: [] };
|
|
78
78
|
// Resolve skill IDs to catalog entries
|
|
79
79
|
const skills = PREFETCH_SKILL_IDS
|
|
80
|
-
.map((id) =>
|
|
80
|
+
.map((id) => getCatalog().find((s) => s.id === id))
|
|
81
81
|
.filter((s) => s !== undefined);
|
|
82
82
|
// Process in batches for bounded concurrency
|
|
83
83
|
for (let i = 0; i < skills.length; i += concurrency) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-cache.js","sourceRoot":"","sources":["../../src/lib/skill-cache.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"skill-cache.js","sourceRoot":"","sources":["../../src/lib/skill-cache.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG1D,wDAAwD;AAExD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAE7D,uDAAuD;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,2BAA2B;IAC3B,UAAU;IACV,kBAAkB;IAClB,eAAe;IACf,kCAAkC;IAClC,qBAAqB;IACrB,uBAAuB;IACvB,yBAAyB;CAC1B,CAAC;AAEF,wCAAwC;AACxC,IAAI,QAAQ,GAAG,SAAS,CAAC;AACzB,MAAM,UAAU,WAAW,CAAC,GAAW,IAAU,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;AAClE,MAAM,UAAU,WAAW,KAAa,OAAO,QAAQ,CAAC,CAAC,CAAC;AAE1D,wDAAwD;AAExD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,OAAe;IAC/D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjF,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe;IACjD,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAGxC;IACC,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IAEvC,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAc,EAAE,CAAC;IAE7E,uCAAuC;IACvC,MAAM,MAAM,GAAG,kBAAkB;SAC9B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;SAClD,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAErD,6CAA6C;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,UAAU,CAC3C,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxB,0BAA0B;YAC1B,IAAI,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBAClC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACjC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;YAED,oBAAoB;YACpB,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzD,MAAM,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACpC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAClC,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CACH,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC7F,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;gBAC5C,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAc,CAAC,CAAC;QAClE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAc,CAAC,CAAC;YACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,wDAAwD;AAExD,SAAS,cAAc,CAAC,OAAe;IACrC,+DAA+D;IAC/D,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,MAAc;IAChD,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-registry.js","sourceRoot":"","sources":["../../src/lib/skill-registry.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"skill-registry.js","sourceRoot":"","sources":["../../src/lib/skill-registry.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGxC,MAAM,OAAO,oBAAoB;IACd,YAAY,CAAS;IACrB,YAAY,CAAS;IAEtC,YAAY,SAAiB;QAC3B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE/B,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACxB,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CACtC,CAAC,CAAU,EAAuB,EAAE;gBAClC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;oBAAE,OAAO,KAAK,CAAC;gBACtD,MAAM,GAAG,GAAG,CAA4B,CAAC;gBACzC,OAAO,CACL,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;oBAC5B,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;oBAC9B,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;oBAC/B,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;oBACpC,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;oBAClC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;oBAC9B,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,CAAC;oBACxD,OAAO,GAAG,CAAC,WAAW,KAAK,SAAS,CACrC,CAAC;YACJ,CAAC,CACF,CAAC;YAEF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnD,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAuB;QACjC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAqB;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QAE5E,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAE9D,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;IAED,gBAAgB,CAAC,SAAiB;QAChC,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;CACF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface SessionEntry {
|
|
2
|
+
task: string;
|
|
3
|
+
domains: string[];
|
|
4
|
+
skill_ids: string[];
|
|
5
|
+
timestamp: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* In-process skill session memory.
|
|
9
|
+
* Tracks activated skills by normalized task key so repeat calls
|
|
10
|
+
* with the same intent return cached results.
|
|
11
|
+
*/
|
|
12
|
+
export declare class SkillSession {
|
|
13
|
+
private entries;
|
|
14
|
+
/**
|
|
15
|
+
* Remember a skill activation result.
|
|
16
|
+
*/
|
|
17
|
+
remember(task: string, domains: string[], skillIds: string[]): void;
|
|
18
|
+
/**
|
|
19
|
+
* Recall a previous activation for a similar task.
|
|
20
|
+
* Returns null if no matching entry exists.
|
|
21
|
+
*/
|
|
22
|
+
recall(task: string): SessionEntry | null;
|
|
23
|
+
/**
|
|
24
|
+
* Check if a task has been activated before.
|
|
25
|
+
*/
|
|
26
|
+
has(task: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Clear all session memory.
|
|
29
|
+
*/
|
|
30
|
+
clear(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Get the number of remembered activations.
|
|
33
|
+
*/
|
|
34
|
+
get size(): number;
|
|
35
|
+
}
|
|
36
|
+
/** Global session instance — persists for the process lifetime. */
|
|
37
|
+
export declare const globalSkillSession: SkillSession;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
/**
|
|
3
|
+
* Session-aware skill memory — remembers activated skills within a session
|
|
4
|
+
* to avoid redundant fetches for the same or similar tasks.
|
|
5
|
+
*/
|
|
6
|
+
import { normalizeCacheKey } from "./text-utils.js";
|
|
7
|
+
/**
|
|
8
|
+
* In-process skill session memory.
|
|
9
|
+
* Tracks activated skills by normalized task key so repeat calls
|
|
10
|
+
* with the same intent return cached results.
|
|
11
|
+
*/
|
|
12
|
+
export class SkillSession {
|
|
13
|
+
entries = new Map();
|
|
14
|
+
/**
|
|
15
|
+
* Remember a skill activation result.
|
|
16
|
+
*/
|
|
17
|
+
remember(task, domains, skillIds) {
|
|
18
|
+
const key = normalizeCacheKey(task);
|
|
19
|
+
if (!key)
|
|
20
|
+
return;
|
|
21
|
+
this.entries.set(key, {
|
|
22
|
+
task,
|
|
23
|
+
domains,
|
|
24
|
+
skill_ids: skillIds,
|
|
25
|
+
timestamp: Date.now(),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Recall a previous activation for a similar task.
|
|
30
|
+
* Returns null if no matching entry exists.
|
|
31
|
+
*/
|
|
32
|
+
recall(task) {
|
|
33
|
+
const key = normalizeCacheKey(task);
|
|
34
|
+
if (!key)
|
|
35
|
+
return null;
|
|
36
|
+
return this.entries.get(key) ?? null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if a task has been activated before.
|
|
40
|
+
*/
|
|
41
|
+
has(task) {
|
|
42
|
+
const key = normalizeCacheKey(task);
|
|
43
|
+
if (!key)
|
|
44
|
+
return false;
|
|
45
|
+
return this.entries.has(key);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Clear all session memory.
|
|
49
|
+
*/
|
|
50
|
+
clear() {
|
|
51
|
+
this.entries.clear();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get the number of remembered activations.
|
|
55
|
+
*/
|
|
56
|
+
get size() {
|
|
57
|
+
return this.entries.size;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** Global session instance — persists for the process lifetime. */
|
|
61
|
+
export const globalSkillSession = new SkillSession();
|
|
62
|
+
//# sourceMappingURL=skill-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-session.js","sourceRoot":"","sources":["../../src/lib/skill-session.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AASpD;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACf,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAElD;;OAEG;IACH,QAAQ,CAAC,IAAY,EAAE,OAAiB,EAAE,QAAkB;QAC1D,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;YACpB,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAY;QACjB,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-detector.js","sourceRoot":"","sources":["../../src/lib/stack-detector.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"stack-detector.js","sourceRoot":"","sources":["../../src/lib/stack-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract meaningful keywords from a task description.
|
|
3
|
+
* Strips stopwords and short tokens.
|
|
4
|
+
*/
|
|
5
|
+
export declare function extractKeywords(task: string): string[];
|
|
6
|
+
/**
|
|
7
|
+
* Build a GitHub code search query from keywords.
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildSearchQuery(keywords: string[]): string;
|
|
10
|
+
/**
|
|
11
|
+
* Normalize a task string into a stable cache key.
|
|
12
|
+
* Lowercase, extract keywords, sort alphabetically, join with "+".
|
|
13
|
+
*/
|
|
14
|
+
export declare function normalizeCacheKey(task: string): string;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
/**
|
|
3
|
+
* Text processing utilities for keyword extraction and query building.
|
|
4
|
+
* Extracted from web-discovery.ts for reuse in trigger matching.
|
|
5
|
+
*/
|
|
6
|
+
const STOPWORDS = new Set([
|
|
7
|
+
"a", "an", "the", "is", "are", "was", "were", "be", "been", "being",
|
|
8
|
+
"have", "has", "had", "do", "does", "did", "will", "would", "could",
|
|
9
|
+
"should", "may", "might", "shall", "can", "need", "dare", "ought",
|
|
10
|
+
"used", "to", "of", "in", "for", "on", "with", "at", "by", "from",
|
|
11
|
+
"as", "into", "through", "during", "before", "after", "above", "below",
|
|
12
|
+
"between", "out", "off", "over", "under", "again", "further", "then",
|
|
13
|
+
"once", "here", "there", "when", "where", "why", "how", "all", "both",
|
|
14
|
+
"each", "few", "more", "most", "other", "some", "such", "no", "not",
|
|
15
|
+
"only", "own", "same", "so", "than", "too", "very", "just", "because",
|
|
16
|
+
"but", "and", "or", "if", "while", "about", "up", "that", "this",
|
|
17
|
+
"it", "its", "my", "me", "i", "we", "our", "you", "your", "help",
|
|
18
|
+
"get", "give", "make", "use", "want", "let", "try", "find", "show",
|
|
19
|
+
]);
|
|
20
|
+
/**
|
|
21
|
+
* Extract meaningful keywords from a task description.
|
|
22
|
+
* Strips stopwords and short tokens.
|
|
23
|
+
*/
|
|
24
|
+
export function extractKeywords(task) {
|
|
25
|
+
return task
|
|
26
|
+
.toLowerCase()
|
|
27
|
+
.replace(/[^a-z0-9\s-]/g, "")
|
|
28
|
+
.split(/\s+/)
|
|
29
|
+
.filter((w) => w.length > 2 && !STOPWORDS.has(w));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Build a GitHub code search query from keywords.
|
|
33
|
+
*/
|
|
34
|
+
export function buildSearchQuery(keywords) {
|
|
35
|
+
return `${keywords.join(" ")} filename:SKILL`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Normalize a task string into a stable cache key.
|
|
39
|
+
* Lowercase, extract keywords, sort alphabetically, join with "+".
|
|
40
|
+
*/
|
|
41
|
+
export function normalizeCacheKey(task) {
|
|
42
|
+
const kw = extractKeywords(task);
|
|
43
|
+
return kw.sort().join("+");
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=text-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-utils.js","sourceRoot":"","sources":["../../src/lib/text-utils.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C;;;GAGG;AAEH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;IACnE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IACnE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IACjE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;IACjE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IACtE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM;IACpE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;IACrE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;IACnE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IACrE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;IAChE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAChE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;CACnE,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-estimator.js","sourceRoot":"","sources":["../../src/lib/token-estimator.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"token-estimator.js","sourceRoot":"","sources":["../../src/lib/token-estimator.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,SAAiB;IACnE,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC;IAED,yDAAyD;IACzD,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,cAAc,CAAC,CAAC;IAEhE,sDAAsD;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IAEzD,mCAAmC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,WAAW,GAAG,SAAS,GAAG,GAAG,EAAE,CAAC;QAClC,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,8DAA8D;YACtG,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,aAAa,GAAG,SAAS,GAAG,GAAG,EAAE,CAAC;QACpC,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,8DAA8D;YACxG,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,4BAA4B;IAC5B,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,8DAA8D;YACtG,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS,GAAG,8DAA8D;QAChF,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { RegistryData, RegistryDomain, RegistrySkill } from "./registry-loader.js";
|
|
2
|
+
export interface DomainMatch {
|
|
3
|
+
domain: RegistryDomain;
|
|
4
|
+
score: number;
|
|
5
|
+
}
|
|
6
|
+
export interface SkillMatch {
|
|
7
|
+
skill: RegistrySkill;
|
|
8
|
+
domain_id: string;
|
|
9
|
+
score: number;
|
|
10
|
+
}
|
|
11
|
+
export interface MatchResult {
|
|
12
|
+
domains: DomainMatch[];
|
|
13
|
+
skills: SkillMatch[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Lightweight suffix stripping for matching.
|
|
17
|
+
* Handles common English plurals and verb forms.
|
|
18
|
+
* Not a full stemmer — just enough for trigger matching.
|
|
19
|
+
*/
|
|
20
|
+
export declare function simpleStem(word: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Score how well a set of task keywords matches a trigger list.
|
|
23
|
+
*
|
|
24
|
+
* - Exact word match: 1.0
|
|
25
|
+
* - Phrase match (all trigger words appear in task): 2.0
|
|
26
|
+
* - Partial phrase match: 0.5 * (overlap / total trigger words)
|
|
27
|
+
*/
|
|
28
|
+
export declare function scoreTriggers(taskKeywords: string[], triggers: string[]): number;
|
|
29
|
+
/**
|
|
30
|
+
* Score all domains against a task description.
|
|
31
|
+
* Returns domains that meet the threshold, sorted by score descending.
|
|
32
|
+
*/
|
|
33
|
+
export declare function scoreDomains(task: string, registry: RegistryData): DomainMatch[];
|
|
34
|
+
/**
|
|
35
|
+
* Score skills within a specific domain against a task description.
|
|
36
|
+
* Returns skills sorted by score descending.
|
|
37
|
+
*/
|
|
38
|
+
export declare function scoreSkills(task: string, domainId: string, registry: RegistryData): SkillMatch[];
|
|
39
|
+
/**
|
|
40
|
+
* Match a task to domains and skills using trigger-based scoring.
|
|
41
|
+
* This is the main entry point that replaces matchTaskToDomains().
|
|
42
|
+
*
|
|
43
|
+
* Returns matched domain IDs (for backward compatibility with activate.ts).
|
|
44
|
+
*/
|
|
45
|
+
export declare function matchTask(task: string, registry: RegistryData): string[];
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
/**
|
|
3
|
+
* Trigger-based skill matching — scores tasks against registry trigger keywords.
|
|
4
|
+
* Replaces the hardcoded TASK_DOMAIN_MAP regex approach.
|
|
5
|
+
*
|
|
6
|
+
* Scoring algorithm:
|
|
7
|
+
* 1. Tokenize task → keywords
|
|
8
|
+
* 2. Score each domain by trigger keyword overlap
|
|
9
|
+
* 3. Score each skill within qualifying domains
|
|
10
|
+
* 4. Return ranked results
|
|
11
|
+
*/
|
|
12
|
+
import { extractKeywords } from "./text-utils.js";
|
|
13
|
+
// ── Stemming ───────────────────────────────────────
|
|
14
|
+
/**
|
|
15
|
+
* Lightweight suffix stripping for matching.
|
|
16
|
+
* Handles common English plurals and verb forms.
|
|
17
|
+
* Not a full stemmer — just enough for trigger matching.
|
|
18
|
+
*/
|
|
19
|
+
export function simpleStem(word) {
|
|
20
|
+
if (word.length <= 3)
|
|
21
|
+
return word;
|
|
22
|
+
// -ing → remove (e.g. "testing" → "test")
|
|
23
|
+
if (word.endsWith("ing") && word.length > 5)
|
|
24
|
+
return word.slice(0, -3);
|
|
25
|
+
// -tion → remove (e.g. "migration" → "migra") — skip, too lossy
|
|
26
|
+
// -ies → y (e.g. "queries" → "query") — skip, too specific
|
|
27
|
+
// -es → remove (e.g. "fixes" → "fix")
|
|
28
|
+
if (word.endsWith("es") && word.length > 4)
|
|
29
|
+
return word.slice(0, -2);
|
|
30
|
+
// -s → remove (e.g. "tests" → "test")
|
|
31
|
+
if (word.endsWith("s") && !word.endsWith("ss") && word.length > 3)
|
|
32
|
+
return word.slice(0, -1);
|
|
33
|
+
return word;
|
|
34
|
+
}
|
|
35
|
+
// ── Scoring ────────────────────────────────────────
|
|
36
|
+
/**
|
|
37
|
+
* Check if a word matches a trigger word, considering stems.
|
|
38
|
+
*/
|
|
39
|
+
function wordMatches(taskWord, triggerWord) {
|
|
40
|
+
if (taskWord === triggerWord)
|
|
41
|
+
return true;
|
|
42
|
+
// Check stemmed forms
|
|
43
|
+
return simpleStem(taskWord) === simpleStem(triggerWord);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Score how well a set of task keywords matches a trigger list.
|
|
47
|
+
*
|
|
48
|
+
* - Exact word match: 1.0
|
|
49
|
+
* - Phrase match (all trigger words appear in task): 2.0
|
|
50
|
+
* - Partial phrase match: 0.5 * (overlap / total trigger words)
|
|
51
|
+
*/
|
|
52
|
+
export function scoreTriggers(taskKeywords, triggers) {
|
|
53
|
+
if (taskKeywords.length === 0 || triggers.length === 0)
|
|
54
|
+
return 0;
|
|
55
|
+
let score = 0;
|
|
56
|
+
for (const trigger of triggers) {
|
|
57
|
+
const triggerWords = trigger.toLowerCase().split(/\s+/);
|
|
58
|
+
if (triggerWords.length === 1) {
|
|
59
|
+
// Single-word trigger: match against task keywords (with stemming)
|
|
60
|
+
if (taskKeywords.some((kw) => wordMatches(kw, triggerWords[0]))) {
|
|
61
|
+
score += 1.0;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// Multi-word trigger: check how many trigger words appear in task
|
|
66
|
+
const matches = triggerWords.filter((tw) => taskKeywords.some((kw) => wordMatches(kw, tw)));
|
|
67
|
+
if (matches.length === triggerWords.length) {
|
|
68
|
+
// Full phrase match — high confidence
|
|
69
|
+
score += 2.0;
|
|
70
|
+
}
|
|
71
|
+
else if (matches.length > 0) {
|
|
72
|
+
// Partial match — proportional score
|
|
73
|
+
score += 0.5 * (matches.length / triggerWords.length);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return score;
|
|
78
|
+
}
|
|
79
|
+
// ── Domain Matching ────────────────────────────────
|
|
80
|
+
const DOMAIN_THRESHOLD = 0.5;
|
|
81
|
+
/**
|
|
82
|
+
* Score all domains against a task description.
|
|
83
|
+
* Returns domains that meet the threshold, sorted by score descending.
|
|
84
|
+
*/
|
|
85
|
+
export function scoreDomains(task, registry) {
|
|
86
|
+
const keywords = extractKeywords(task);
|
|
87
|
+
if (keywords.length === 0)
|
|
88
|
+
return [];
|
|
89
|
+
const matches = [];
|
|
90
|
+
for (const domain of registry.domains) {
|
|
91
|
+
const score = scoreTriggers(keywords, domain.triggers);
|
|
92
|
+
if (score >= DOMAIN_THRESHOLD) {
|
|
93
|
+
matches.push({ domain, score });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Sort by score descending
|
|
97
|
+
matches.sort((a, b) => b.score - a.score);
|
|
98
|
+
return matches;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Score skills within a specific domain against a task description.
|
|
102
|
+
* Returns skills sorted by score descending.
|
|
103
|
+
*/
|
|
104
|
+
export function scoreSkills(task, domainId, registry) {
|
|
105
|
+
const keywords = extractKeywords(task);
|
|
106
|
+
if (keywords.length === 0)
|
|
107
|
+
return [];
|
|
108
|
+
const matches = [];
|
|
109
|
+
for (const skill of registry.skills) {
|
|
110
|
+
if (!skill.domains.includes(domainId))
|
|
111
|
+
continue;
|
|
112
|
+
const score = scoreTriggers(keywords, skill.triggers);
|
|
113
|
+
matches.push({ skill, domain_id: domainId, score });
|
|
114
|
+
}
|
|
115
|
+
// Sort by score descending
|
|
116
|
+
matches.sort((a, b) => b.score - a.score);
|
|
117
|
+
return matches;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Match a task to domains and skills using trigger-based scoring.
|
|
121
|
+
* This is the main entry point that replaces matchTaskToDomains().
|
|
122
|
+
*
|
|
123
|
+
* Returns matched domain IDs (for backward compatibility with activate.ts).
|
|
124
|
+
*/
|
|
125
|
+
export function matchTask(task, registry) {
|
|
126
|
+
const domainMatches = scoreDomains(task, registry);
|
|
127
|
+
return domainMatches.map((m) => m.domain.id);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=trigger-matcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-matcher.js","sourceRoot":"","sources":["../../src/lib/trigger-matcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL and path utilities for GitHub skill content.
|
|
3
|
+
* Extracted from web-discovery.ts for reuse.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Convert a github.com blob URL to raw.githubusercontent.com.
|
|
7
|
+
*/
|
|
8
|
+
export declare function toRawUrl(htmlUrl: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Extract a human-readable skill name from a GitHub file path.
|
|
11
|
+
* e.g. "skills/user-story/SKILL.md" → "User Story"
|
|
12
|
+
*/
|
|
13
|
+
export declare function inferSkillName(path: string, repo: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Format a date string as a human-readable relative age.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getRelativeAge(dateStr: string): string;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
/**
|
|
3
|
+
* URL and path utilities for GitHub skill content.
|
|
4
|
+
* Extracted from web-discovery.ts for reuse.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Convert a github.com blob URL to raw.githubusercontent.com.
|
|
8
|
+
*/
|
|
9
|
+
export function toRawUrl(htmlUrl) {
|
|
10
|
+
return htmlUrl
|
|
11
|
+
.replace("github.com", "raw.githubusercontent.com")
|
|
12
|
+
.replace("/blob/", "/");
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Extract a human-readable skill name from a GitHub file path.
|
|
16
|
+
* e.g. "skills/user-story/SKILL.md" → "User Story"
|
|
17
|
+
*/
|
|
18
|
+
export function inferSkillName(path, repo) {
|
|
19
|
+
const parts = path.split("/");
|
|
20
|
+
if (parts.length >= 2) {
|
|
21
|
+
const dir = parts[parts.length - 2];
|
|
22
|
+
if (dir !== "skills" && dir !== ".agents") {
|
|
23
|
+
return dir.replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return repo.split("/")[1]?.replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase()) ?? repo;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Format a date string as a human-readable relative age.
|
|
30
|
+
*/
|
|
31
|
+
export function getRelativeAge(dateStr) {
|
|
32
|
+
const now = Date.now();
|
|
33
|
+
const then = new Date(dateStr).getTime();
|
|
34
|
+
const days = Math.floor((now - then) / (1000 * 60 * 60 * 24));
|
|
35
|
+
if (days < 1)
|
|
36
|
+
return "today";
|
|
37
|
+
if (days === 1)
|
|
38
|
+
return "yesterday";
|
|
39
|
+
if (days < 30)
|
|
40
|
+
return `${days} days ago`;
|
|
41
|
+
if (days < 365)
|
|
42
|
+
return `${Math.floor(days / 30)} months ago`;
|
|
43
|
+
return `${Math.floor(days / 365)} years ago`;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=url-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../../src/lib/url-utils.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C;;;GAGG;AAEH;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,OAAO,OAAO;SACX,OAAO,CAAC,YAAY,EAAE,2BAA2B,CAAC;SAClD,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACjG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACnC,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,WAAW,CAAC;IACzC,IAAI,IAAI,GAAG,GAAG;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC;IAC7D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC;AAC/C,CAAC"}
|
package/dist/lib/vault-fs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
2
|
import { readFile, writeFile, appendFile, mkdir, readdir, stat, realpath, unlink, rename } from "fs/promises";
|
|
3
3
|
import { join, resolve, relative, dirname } from "path";
|
|
4
4
|
/**
|