oh-my-claude-sisyphus 3.8.13 → 3.8.14
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/.claude-plugin/marketplace.json +1 -1
- package/commands/omc-setup.md +45 -9
- package/dist/__tests__/mnemosyne/finder.test.js +44 -0
- package/dist/__tests__/mnemosyne/finder.test.js.map +1 -1
- package/dist/__tests__/omc-tools-server.test.js +15 -6
- package/dist/__tests__/omc-tools-server.test.js.map +1 -1
- package/dist/__tests__/tools/skills-tools.test.d.ts +2 -0
- package/dist/__tests__/tools/skills-tools.test.d.ts.map +1 -0
- package/dist/__tests__/tools/skills-tools.test.js +63 -0
- package/dist/__tests__/tools/skills-tools.test.js.map +1 -0
- package/dist/hooks/learner/bridge.d.ts +7 -2
- package/dist/hooks/learner/bridge.d.ts.map +1 -1
- package/dist/hooks/learner/bridge.js +59 -30
- package/dist/hooks/learner/bridge.js.map +1 -1
- package/dist/hooks/learner/constants.d.ts +3 -1
- package/dist/hooks/learner/constants.d.ts.map +1 -1
- package/dist/hooks/learner/constants.js +3 -1
- package/dist/hooks/learner/constants.js.map +1 -1
- package/dist/hooks/learner/finder.d.ts +4 -2
- package/dist/hooks/learner/finder.d.ts.map +1 -1
- package/dist/hooks/learner/finder.js +58 -23
- package/dist/hooks/learner/finder.js.map +1 -1
- package/dist/hooks/learner/loader.d.ts.map +1 -1
- package/dist/hooks/learner/loader.js +3 -4
- package/dist/hooks/learner/loader.js.map +1 -1
- package/dist/hooks/learner/types.d.ts +3 -1
- package/dist/hooks/learner/types.d.ts.map +1 -1
- package/dist/hooks/skill-bridge.cjs +50 -27
- package/dist/hud/usage-api.d.ts.map +1 -1
- package/dist/hud/usage-api.js +148 -3
- package/dist/hud/usage-api.js.map +1 -1
- package/dist/mcp/omc-tools-server.d.ts +2 -1
- package/dist/mcp/omc-tools-server.d.ts.map +1 -1
- package/dist/mcp/omc-tools-server.js +7 -3
- package/dist/mcp/omc-tools-server.js.map +1 -1
- package/dist/tools/skills-tools.d.ts +75 -0
- package/dist/tools/skills-tools.d.ts.map +1 -0
- package/dist/tools/skills-tools.js +151 -0
- package/dist/tools/skills-tools.js.map +1 -0
- package/package.json +1 -1
- package/scripts/skill-injector.mjs +21 -17
|
@@ -5,20 +5,22 @@
|
|
|
5
5
|
* Project skills override user skills with same ID.
|
|
6
6
|
*/
|
|
7
7
|
import { existsSync, readdirSync, realpathSync, mkdirSync } from 'fs';
|
|
8
|
-
import { join } from 'path';
|
|
9
|
-
import { USER_SKILLS_DIR, PROJECT_SKILLS_SUBDIR, SKILL_EXTENSION, DEBUG_ENABLED } from './constants.js';
|
|
8
|
+
import { join, normalize, sep } from 'path';
|
|
9
|
+
import { USER_SKILLS_DIR, PROJECT_SKILLS_SUBDIR, SKILL_EXTENSION, DEBUG_ENABLED, GLOBAL_SKILLS_DIR, MAX_RECURSION_DEPTH } from './constants.js';
|
|
10
10
|
/**
|
|
11
11
|
* Recursively find all skill files in a directory.
|
|
12
12
|
*/
|
|
13
|
-
function findSkillFilesRecursive(dir, results) {
|
|
13
|
+
function findSkillFilesRecursive(dir, results, depth = 0) {
|
|
14
14
|
if (!existsSync(dir))
|
|
15
15
|
return;
|
|
16
|
+
if (depth > MAX_RECURSION_DEPTH)
|
|
17
|
+
return;
|
|
16
18
|
try {
|
|
17
19
|
const entries = readdirSync(dir, { withFileTypes: true });
|
|
18
20
|
for (const entry of entries) {
|
|
19
21
|
const fullPath = join(dir, entry.name);
|
|
20
22
|
if (entry.isDirectory()) {
|
|
21
|
-
findSkillFilesRecursive(fullPath, results);
|
|
23
|
+
findSkillFilesRecursive(fullPath, results, depth + 1);
|
|
22
24
|
}
|
|
23
25
|
else if (entry.isFile() && entry.name.endsWith(SKILL_EXTENSION)) {
|
|
24
26
|
results.push(fullPath);
|
|
@@ -26,7 +28,6 @@ function findSkillFilesRecursive(dir, results) {
|
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
30
|
catch (error) {
|
|
29
|
-
// Permission denied or other errors - silently skip
|
|
30
31
|
if (DEBUG_ENABLED) {
|
|
31
32
|
console.error('[learner] Error scanning directory:', error);
|
|
32
33
|
}
|
|
@@ -43,15 +44,26 @@ function safeRealpathSync(filePath) {
|
|
|
43
44
|
return filePath;
|
|
44
45
|
}
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if a resolved path is within a boundary directory.
|
|
49
|
+
* Used to prevent symlink escapes.
|
|
50
|
+
*/
|
|
51
|
+
function isWithinBoundary(realPath, boundary) {
|
|
52
|
+
const normalizedReal = normalize(realPath);
|
|
53
|
+
const normalizedBoundary = normalize(boundary);
|
|
54
|
+
return normalizedReal === normalizedBoundary ||
|
|
55
|
+
normalizedReal.startsWith(normalizedBoundary + sep);
|
|
56
|
+
}
|
|
46
57
|
/**
|
|
47
58
|
* Find all skill files for a given project.
|
|
48
59
|
* Returns project skills first (higher priority), then user skills.
|
|
49
60
|
*/
|
|
50
|
-
export function findSkillFiles(projectRoot) {
|
|
61
|
+
export function findSkillFiles(projectRoot, options) {
|
|
51
62
|
const candidates = [];
|
|
52
63
|
const seenRealPaths = new Set();
|
|
53
|
-
|
|
54
|
-
if
|
|
64
|
+
const scope = options?.scope ?? 'all';
|
|
65
|
+
// 1. Search project-level skills (if scope allows)
|
|
66
|
+
if (projectRoot && (scope === 'project' || scope === 'all')) {
|
|
55
67
|
const projectSkillsDir = join(projectRoot, PROJECT_SKILLS_SUBDIR);
|
|
56
68
|
const projectFiles = [];
|
|
57
69
|
findSkillFilesRecursive(projectSkillsDir, projectFiles);
|
|
@@ -59,39 +71,62 @@ export function findSkillFiles(projectRoot) {
|
|
|
59
71
|
const realPath = safeRealpathSync(filePath);
|
|
60
72
|
if (seenRealPaths.has(realPath))
|
|
61
73
|
continue;
|
|
74
|
+
// Symlink boundary check
|
|
75
|
+
if (!isWithinBoundary(realPath, projectSkillsDir)) {
|
|
76
|
+
if (DEBUG_ENABLED) {
|
|
77
|
+
console.warn('[learner] Symlink escape blocked:', filePath);
|
|
78
|
+
}
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
62
81
|
seenRealPaths.add(realPath);
|
|
63
82
|
candidates.push({
|
|
64
83
|
path: filePath,
|
|
65
84
|
realPath,
|
|
66
85
|
scope: 'project',
|
|
86
|
+
sourceDir: projectSkillsDir,
|
|
67
87
|
});
|
|
68
88
|
}
|
|
69
89
|
}
|
|
70
|
-
// 2. Search user-level skills (
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
90
|
+
// 2. Search user-level skills from both directories (if scope allows)
|
|
91
|
+
if (scope === 'user' || scope === 'all') {
|
|
92
|
+
const userDirs = [GLOBAL_SKILLS_DIR, USER_SKILLS_DIR];
|
|
93
|
+
for (const userDir of userDirs) {
|
|
94
|
+
const userFiles = [];
|
|
95
|
+
findSkillFilesRecursive(userDir, userFiles);
|
|
96
|
+
for (const filePath of userFiles) {
|
|
97
|
+
const realPath = safeRealpathSync(filePath);
|
|
98
|
+
if (seenRealPaths.has(realPath))
|
|
99
|
+
continue;
|
|
100
|
+
// Symlink boundary check
|
|
101
|
+
if (!isWithinBoundary(realPath, userDir)) {
|
|
102
|
+
if (DEBUG_ENABLED) {
|
|
103
|
+
console.warn('[learner] Symlink escape blocked:', filePath);
|
|
104
|
+
}
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
seenRealPaths.add(realPath);
|
|
108
|
+
candidates.push({
|
|
109
|
+
path: filePath,
|
|
110
|
+
realPath,
|
|
111
|
+
scope: 'user',
|
|
112
|
+
sourceDir: userDir,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
83
116
|
}
|
|
84
117
|
return candidates;
|
|
85
118
|
}
|
|
86
119
|
/**
|
|
87
120
|
* Get skills directory path for a scope.
|
|
88
121
|
*/
|
|
89
|
-
export function getSkillsDir(scope, projectRoot) {
|
|
122
|
+
export function getSkillsDir(scope, projectRoot, sourceDir) {
|
|
123
|
+
if (sourceDir)
|
|
124
|
+
return sourceDir;
|
|
90
125
|
if (scope === 'user') {
|
|
91
126
|
return USER_SKILLS_DIR;
|
|
92
127
|
}
|
|
93
128
|
if (!projectRoot) {
|
|
94
|
-
throw new Error('Project root required for project
|
|
129
|
+
throw new Error('Project root is required for project-scoped skills');
|
|
95
130
|
}
|
|
96
131
|
return join(projectRoot, PROJECT_SKILLS_SUBDIR);
|
|
97
132
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finder.js","sourceRoot":"","sources":["../../../src/hooks/learner/finder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"finder.js","sourceRoot":"","sources":["../../../src/hooks/learner/finder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/hooks/learner/loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,YAAY,CAAC;AAS9D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/hooks/learner/loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,YAAY,CAAC;AAS9D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,EAAE,CA2CxE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI,CAG9F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,KAAK,GAAE,MAAU,GAChB,YAAY,EAAE,CA+ChB"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { readFileSync } from 'fs';
|
|
7
7
|
import { createHash } from 'crypto';
|
|
8
|
-
import { relative } from 'path';
|
|
9
|
-
import { findSkillFiles
|
|
8
|
+
import { relative, normalize } from 'path';
|
|
9
|
+
import { findSkillFiles } from './finder.js';
|
|
10
10
|
import { parseSkillFile } from './parser.js';
|
|
11
11
|
import { DEBUG_ENABLED } from './constants.js';
|
|
12
12
|
/**
|
|
@@ -33,8 +33,7 @@ export function loadAllSkills(projectRoot) {
|
|
|
33
33
|
continue;
|
|
34
34
|
}
|
|
35
35
|
const skillId = metadata.id;
|
|
36
|
-
const
|
|
37
|
-
const relativePath = relative(skillsDir, candidate.path);
|
|
36
|
+
const relativePath = normalize(relative(candidate.sourceDir, candidate.path));
|
|
38
37
|
const skill = {
|
|
39
38
|
path: candidate.path,
|
|
40
39
|
relativePath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/hooks/learner/loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/hooks/learner/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ export interface LearnedSkill {
|
|
|
37
37
|
path: string;
|
|
38
38
|
/** Path relative to skills directory */
|
|
39
39
|
relativePath: string;
|
|
40
|
-
/** Whether from user (~/.claude) or project (.omc) */
|
|
40
|
+
/** Whether from user directories (~/.omc/skills or ~/.claude/skills/omc-learned) or project (.omc/skills) */
|
|
41
41
|
scope: 'user' | 'project';
|
|
42
42
|
/** Parsed frontmatter metadata */
|
|
43
43
|
metadata: SkillMetadata;
|
|
@@ -58,6 +58,8 @@ export interface SkillFileCandidate {
|
|
|
58
58
|
realPath: string;
|
|
59
59
|
/** Scope: user or project */
|
|
60
60
|
scope: 'user' | 'project';
|
|
61
|
+
/** The root directory this skill was found in (for accurate relative path computation) */
|
|
62
|
+
sourceDir: string;
|
|
61
63
|
}
|
|
62
64
|
/**
|
|
63
65
|
* Quality gate validation result.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/learner/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC5C,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/learner/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC5C,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,6GAA6G;IAC7G,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,EAAE,aAAa,CAAC;IACxB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,0FAA0F;IAC1F,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,oCAAoC;IACpC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/hooks/learner/bridge.ts
|
|
21
21
|
var bridge_exports = {};
|
|
22
22
|
__export(bridge_exports, {
|
|
23
|
+
GLOBAL_SKILLS_DIR: () => GLOBAL_SKILLS_DIR,
|
|
23
24
|
PROJECT_SKILLS_SUBDIR: () => PROJECT_SKILLS_SUBDIR,
|
|
24
25
|
SKILL_EXTENSION: () => SKILL_EXTENSION,
|
|
25
26
|
USER_SKILLS_DIR: () => USER_SKILLS_DIR,
|
|
@@ -34,9 +35,11 @@ var import_fs = require("fs");
|
|
|
34
35
|
var import_path = require("path");
|
|
35
36
|
var import_os = require("os");
|
|
36
37
|
var USER_SKILLS_DIR = (0, import_path.join)((0, import_os.homedir)(), ".claude", "skills", "omc-learned");
|
|
37
|
-
var
|
|
38
|
+
var GLOBAL_SKILLS_DIR = (0, import_path.join)((0, import_os.homedir)(), ".omc", "skills");
|
|
39
|
+
var PROJECT_SKILLS_SUBDIR = (0, import_path.join)(".omc", "skills");
|
|
38
40
|
var SKILL_EXTENSION = ".md";
|
|
39
41
|
var SESSION_TTL_MS = 60 * 60 * 1e3;
|
|
42
|
+
var MAX_RECURSION_DEPTH = 10;
|
|
40
43
|
var STATE_FILE = ".omc/state/skill-sessions.json";
|
|
41
44
|
function getStateFilePath(projectRoot) {
|
|
42
45
|
return (0, import_path.join)(projectRoot, STATE_FILE);
|
|
@@ -84,14 +87,15 @@ function markSkillsInjected(sessionId, paths, projectRoot) {
|
|
|
84
87
|
};
|
|
85
88
|
writeSessionState(projectRoot, state);
|
|
86
89
|
}
|
|
87
|
-
function findSkillFilesRecursive(dir, results) {
|
|
90
|
+
function findSkillFilesRecursive(dir, results, depth = 0) {
|
|
88
91
|
if (!(0, import_fs.existsSync)(dir)) return;
|
|
92
|
+
if (depth > MAX_RECURSION_DEPTH) return;
|
|
89
93
|
try {
|
|
90
94
|
const entries = (0, import_fs.readdirSync)(dir, { withFileTypes: true });
|
|
91
95
|
for (const entry of entries) {
|
|
92
96
|
const fullPath = (0, import_path.join)(dir, entry.name);
|
|
93
97
|
if (entry.isDirectory()) {
|
|
94
|
-
findSkillFilesRecursive(fullPath, results);
|
|
98
|
+
findSkillFilesRecursive(fullPath, results, depth + 1);
|
|
95
99
|
} else if (entry.isFile() && entry.name.endsWith(SKILL_EXTENSION)) {
|
|
96
100
|
results.push(fullPath);
|
|
97
101
|
}
|
|
@@ -106,33 +110,51 @@ function safeRealpathSync(filePath) {
|
|
|
106
110
|
return filePath;
|
|
107
111
|
}
|
|
108
112
|
}
|
|
109
|
-
function
|
|
113
|
+
function isWithinBoundary(realPath, boundary) {
|
|
114
|
+
const sep = process.platform === "win32" ? "\\" : "/";
|
|
115
|
+
const normalizedReal = realPath.replace(/\\/g, "/").replace(/\/+/g, "/");
|
|
116
|
+
const normalizedBoundary = boundary.replace(/\\/g, "/").replace(/\/+/g, "/");
|
|
117
|
+
return normalizedReal === normalizedBoundary || normalizedReal.startsWith(normalizedBoundary + "/");
|
|
118
|
+
}
|
|
119
|
+
function findSkillFiles(projectRoot, options) {
|
|
110
120
|
const candidates = [];
|
|
111
121
|
const seenRealPaths = /* @__PURE__ */ new Set();
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
realPath
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
const scope = options?.scope ?? "all";
|
|
123
|
+
if (scope === "project" || scope === "all") {
|
|
124
|
+
const projectSkillsDir = (0, import_path.join)(projectRoot, PROJECT_SKILLS_SUBDIR);
|
|
125
|
+
const projectFiles = [];
|
|
126
|
+
findSkillFilesRecursive(projectSkillsDir, projectFiles);
|
|
127
|
+
for (const filePath of projectFiles) {
|
|
128
|
+
const realPath = safeRealpathSync(filePath);
|
|
129
|
+
if (seenRealPaths.has(realPath)) continue;
|
|
130
|
+
if (!isWithinBoundary(realPath, projectSkillsDir)) continue;
|
|
131
|
+
seenRealPaths.add(realPath);
|
|
132
|
+
candidates.push({
|
|
133
|
+
path: filePath,
|
|
134
|
+
realPath,
|
|
135
|
+
scope: "project",
|
|
136
|
+
sourceDir: projectSkillsDir
|
|
137
|
+
});
|
|
138
|
+
}
|
|
124
139
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
140
|
+
if (scope === "user" || scope === "all") {
|
|
141
|
+
const userDirs = [GLOBAL_SKILLS_DIR, USER_SKILLS_DIR];
|
|
142
|
+
for (const userDir of userDirs) {
|
|
143
|
+
const userFiles = [];
|
|
144
|
+
findSkillFilesRecursive(userDir, userFiles);
|
|
145
|
+
for (const filePath of userFiles) {
|
|
146
|
+
const realPath = safeRealpathSync(filePath);
|
|
147
|
+
if (seenRealPaths.has(realPath)) continue;
|
|
148
|
+
if (!isWithinBoundary(realPath, userDir)) continue;
|
|
149
|
+
seenRealPaths.add(realPath);
|
|
150
|
+
candidates.push({
|
|
151
|
+
path: filePath,
|
|
152
|
+
realPath,
|
|
153
|
+
scope: "user",
|
|
154
|
+
sourceDir: userDir
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
136
158
|
}
|
|
137
159
|
return candidates;
|
|
138
160
|
}
|
|
@@ -338,6 +360,7 @@ function matchSkillsForInjection(prompt, projectRoot, sessionId, options = {}) {
|
|
|
338
360
|
}
|
|
339
361
|
// Annotate the CommonJS export names for ESM import in node:
|
|
340
362
|
0 && (module.exports = {
|
|
363
|
+
GLOBAL_SKILLS_DIR,
|
|
341
364
|
PROJECT_SKILLS_SUBDIR,
|
|
342
365
|
SKILL_EXTENSION,
|
|
343
366
|
USER_SKILLS_DIR,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-api.d.ts","sourceRoot":"","sources":["../../src/hud/usage-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"usage-api.d.ts","sourceRoot":"","sources":["../../src/hud/usage-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAsZ7C;;;;;;;GAOG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA+C3D"}
|
package/dist/hud/usage-api.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* API: api.anthropic.com/api/oauth/usage
|
|
12
12
|
* Response: { five_hour: { utilization }, seven_day: { utilization } }
|
|
13
13
|
*/
|
|
14
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
14
|
+
import { existsSync, readFileSync, writeFileSync, renameSync, unlinkSync, mkdirSync } from 'fs';
|
|
15
15
|
import { homedir } from 'os';
|
|
16
16
|
import { join, dirname } from 'path';
|
|
17
17
|
import { execSync } from 'child_process';
|
|
@@ -20,6 +20,13 @@ import https from 'https';
|
|
|
20
20
|
const CACHE_TTL_SUCCESS_MS = 30 * 1000; // 30 seconds for successful responses
|
|
21
21
|
const CACHE_TTL_FAILURE_MS = 15 * 1000; // 15 seconds for failures
|
|
22
22
|
const API_TIMEOUT_MS = 10000;
|
|
23
|
+
const TOKEN_REFRESH_URL_HOSTNAME = 'platform.claude.com';
|
|
24
|
+
const TOKEN_REFRESH_URL_PATH = '/v1/oauth/token';
|
|
25
|
+
/**
|
|
26
|
+
* OAuth client_id for Claude Code (public client).
|
|
27
|
+
* This is the production value; can be overridden via CLAUDE_CODE_OAUTH_CLIENT_ID env var.
|
|
28
|
+
*/
|
|
29
|
+
const DEFAULT_OAUTH_CLIENT_ID = '9d1c250a-e61b-44d9-88ed-5944d1962f5e';
|
|
23
30
|
/**
|
|
24
31
|
* Get the cache file path
|
|
25
32
|
*/
|
|
@@ -96,6 +103,8 @@ function readKeychainCredentials() {
|
|
|
96
103
|
return {
|
|
97
104
|
accessToken: creds.accessToken,
|
|
98
105
|
expiresAt: creds.expiresAt,
|
|
106
|
+
refreshToken: creds.refreshToken,
|
|
107
|
+
source: 'keychain',
|
|
99
108
|
};
|
|
100
109
|
}
|
|
101
110
|
}
|
|
@@ -120,6 +129,8 @@ function readFileCredentials() {
|
|
|
120
129
|
return {
|
|
121
130
|
accessToken: creds.accessToken,
|
|
122
131
|
expiresAt: creds.expiresAt,
|
|
132
|
+
refreshToken: creds.refreshToken,
|
|
133
|
+
source: 'file',
|
|
123
134
|
};
|
|
124
135
|
}
|
|
125
136
|
}
|
|
@@ -152,6 +163,60 @@ function validateCredentials(creds) {
|
|
|
152
163
|
}
|
|
153
164
|
return true;
|
|
154
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Attempt to refresh an expired OAuth access token using the refresh token.
|
|
168
|
+
* Returns updated credentials on success, null on failure.
|
|
169
|
+
*/
|
|
170
|
+
function refreshAccessToken(refreshToken) {
|
|
171
|
+
return new Promise((resolve) => {
|
|
172
|
+
const clientId = process.env.CLAUDE_CODE_OAUTH_CLIENT_ID || DEFAULT_OAUTH_CLIENT_ID;
|
|
173
|
+
const body = new URLSearchParams({
|
|
174
|
+
grant_type: 'refresh_token',
|
|
175
|
+
refresh_token: refreshToken,
|
|
176
|
+
client_id: clientId,
|
|
177
|
+
}).toString();
|
|
178
|
+
const req = https.request({
|
|
179
|
+
hostname: TOKEN_REFRESH_URL_HOSTNAME,
|
|
180
|
+
path: TOKEN_REFRESH_URL_PATH,
|
|
181
|
+
method: 'POST',
|
|
182
|
+
headers: {
|
|
183
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
184
|
+
'Content-Length': Buffer.byteLength(body),
|
|
185
|
+
},
|
|
186
|
+
timeout: API_TIMEOUT_MS,
|
|
187
|
+
}, (res) => {
|
|
188
|
+
let data = '';
|
|
189
|
+
res.on('data', (chunk) => { data += chunk; });
|
|
190
|
+
res.on('end', () => {
|
|
191
|
+
if (res.statusCode === 200) {
|
|
192
|
+
try {
|
|
193
|
+
const parsed = JSON.parse(data);
|
|
194
|
+
if (parsed.access_token) {
|
|
195
|
+
resolve({
|
|
196
|
+
accessToken: parsed.access_token,
|
|
197
|
+
refreshToken: parsed.refresh_token || refreshToken,
|
|
198
|
+
expiresAt: parsed.expires_in
|
|
199
|
+
? Date.now() + parsed.expires_in * 1000
|
|
200
|
+
: parsed.expires_at,
|
|
201
|
+
});
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
// JSON parse failed
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (process.env.OMC_DEBUG) {
|
|
210
|
+
console.error(`[usage-api] Token refresh failed: HTTP ${res.statusCode}`);
|
|
211
|
+
}
|
|
212
|
+
resolve(null);
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
req.on('error', () => resolve(null));
|
|
216
|
+
req.on('timeout', () => { req.destroy(); resolve(null); });
|
|
217
|
+
req.end(body);
|
|
218
|
+
});
|
|
219
|
+
}
|
|
155
220
|
/**
|
|
156
221
|
* Fetch usage from Anthropic API
|
|
157
222
|
*/
|
|
@@ -194,6 +259,64 @@ function fetchUsageFromApi(accessToken) {
|
|
|
194
259
|
req.end();
|
|
195
260
|
});
|
|
196
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Persist refreshed credentials back to the file-based credential store.
|
|
264
|
+
* Keychain write-back is not supported (read-only for HUD).
|
|
265
|
+
* Updates only the claudeAiOauth fields, preserving other data.
|
|
266
|
+
*/
|
|
267
|
+
function writeBackCredentials(creds) {
|
|
268
|
+
try {
|
|
269
|
+
const credPath = join(homedir(), '.claude/.credentials.json');
|
|
270
|
+
if (!existsSync(credPath))
|
|
271
|
+
return;
|
|
272
|
+
const content = readFileSync(credPath, 'utf-8');
|
|
273
|
+
const parsed = JSON.parse(content);
|
|
274
|
+
// Update the nested structure
|
|
275
|
+
if (parsed.claudeAiOauth) {
|
|
276
|
+
parsed.claudeAiOauth.accessToken = creds.accessToken;
|
|
277
|
+
if (creds.expiresAt != null) {
|
|
278
|
+
parsed.claudeAiOauth.expiresAt = creds.expiresAt;
|
|
279
|
+
}
|
|
280
|
+
if (creds.refreshToken) {
|
|
281
|
+
parsed.claudeAiOauth.refreshToken = creds.refreshToken;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
// Flat structure
|
|
286
|
+
parsed.accessToken = creds.accessToken;
|
|
287
|
+
if (creds.expiresAt != null) {
|
|
288
|
+
parsed.expiresAt = creds.expiresAt;
|
|
289
|
+
}
|
|
290
|
+
if (creds.refreshToken) {
|
|
291
|
+
parsed.refreshToken = creds.refreshToken;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
// Atomic write: write to tmp file, then rename (atomic on POSIX, best-effort on Windows)
|
|
295
|
+
const tmpPath = `${credPath}.tmp.${process.pid}`;
|
|
296
|
+
try {
|
|
297
|
+
writeFileSync(tmpPath, JSON.stringify(parsed, null, 2), { mode: 0o600 });
|
|
298
|
+
renameSync(tmpPath, credPath);
|
|
299
|
+
}
|
|
300
|
+
catch (writeErr) {
|
|
301
|
+
// Clean up orphaned tmp file on failure
|
|
302
|
+
try {
|
|
303
|
+
if (existsSync(tmpPath)) {
|
|
304
|
+
unlinkSync(tmpPath);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
// Ignore cleanup errors
|
|
309
|
+
}
|
|
310
|
+
throw writeErr;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
// Silent failure - credential write-back is best-effort
|
|
315
|
+
if (process.env.OMC_DEBUG) {
|
|
316
|
+
console.error('[usage-api] Failed to write back refreshed credentials');
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
197
320
|
/**
|
|
198
321
|
* Parse API response into RateLimits
|
|
199
322
|
*/
|
|
@@ -255,11 +378,33 @@ export async function getUsage() {
|
|
|
255
378
|
return cache.data;
|
|
256
379
|
}
|
|
257
380
|
// Get credentials
|
|
258
|
-
|
|
259
|
-
if (!creds
|
|
381
|
+
let creds = getCredentials();
|
|
382
|
+
if (!creds) {
|
|
260
383
|
writeCache(null, true);
|
|
261
384
|
return null;
|
|
262
385
|
}
|
|
386
|
+
// If credentials are expired, attempt token refresh
|
|
387
|
+
if (!validateCredentials(creds)) {
|
|
388
|
+
if (creds.refreshToken) {
|
|
389
|
+
const refreshed = await refreshAccessToken(creds.refreshToken);
|
|
390
|
+
if (refreshed) {
|
|
391
|
+
// Update in-memory credentials
|
|
392
|
+
creds = { ...creds, ...refreshed };
|
|
393
|
+
// Persist refreshed credentials back to store
|
|
394
|
+
writeBackCredentials(creds);
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
// Refresh failed - fall through to return null
|
|
398
|
+
writeCache(null, true);
|
|
399
|
+
return null;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
// No refresh token available
|
|
404
|
+
writeCache(null, true);
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
263
408
|
// Fetch from API
|
|
264
409
|
const response = await fetchUsageFromApi(creds.accessToken);
|
|
265
410
|
if (!response) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-api.js","sourceRoot":"","sources":["../../src/hud/usage-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usage-api.js","sourceRoot":"","sources":["../../src/hud/usage-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OMC Tools Server - In-process MCP server for custom tools
|
|
3
3
|
*
|
|
4
|
-
* Exposes
|
|
4
|
+
* Exposes 18 custom tools (12 LSP, 2 AST, 1 python_repl, 3 skills) via the Claude Agent SDK's
|
|
5
5
|
* createSdkMcpServer helper for use by subagents.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
@@ -21,5 +21,6 @@ export declare function getOmcToolNames(options?: {
|
|
|
21
21
|
includeLsp?: boolean;
|
|
22
22
|
includeAst?: boolean;
|
|
23
23
|
includePython?: boolean;
|
|
24
|
+
includeSkills?: boolean;
|
|
24
25
|
}): string[];
|
|
25
26
|
//# sourceMappingURL=omc-tools-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omc-tools-server.d.ts","sourceRoot":"","sources":["../../src/mcp/omc-tools-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"omc-tools-server.d.ts","sourceRoot":"","sources":["../../src/mcp/omc-tools-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmCH;;;;GAIG;AACH,eAAO,MAAM,cAAc,yEAIzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY,UAAiD,CAAC;AAE3E;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,MAAM,EAAE,CAUX"}
|