oh-my-claudecode 0.2.8 → 0.2.9
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/README.md +170 -68
- package/commands/cthulhu.md +9 -1
- package/commands/invoke-shub.md +8 -2
- package/commands/shoggoth.md +15 -25
- package/commands/yog-sothoth.md +18 -25
- package/dist/agents/render.d.ts +11 -0
- package/dist/agents/render.d.ts.map +1 -0
- package/dist/agents/render.js +69 -0
- package/dist/agents/render.js.map +1 -0
- package/dist/cli/dashboard.d.ts +12 -0
- package/dist/cli/dashboard.d.ts.map +1 -0
- package/dist/cli/dashboard.js +58 -0
- package/dist/cli/dashboard.js.map +1 -0
- package/dist/cli/doctor.d.ts +11 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +163 -9
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.js +72 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/install.d.ts +6 -0
- package/dist/cli/install.d.ts.map +1 -1
- package/dist/cli/install.js +211 -44
- package/dist/cli/install.js.map +1 -1
- package/dist/cli/lint.d.ts +26 -0
- package/dist/cli/lint.d.ts.map +1 -0
- package/dist/cli/lint.js +86 -0
- package/dist/cli/lint.js.map +1 -0
- package/dist/cli/stats.d.ts +56 -0
- package/dist/cli/stats.d.ts.map +1 -0
- package/dist/cli/stats.js +197 -0
- package/dist/cli/stats.js.map +1 -0
- package/dist/cli/sync.d.ts +44 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +154 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/config/schema.d.ts +337 -331
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +14 -10
- package/dist/config/schema.js.map +1 -1
- package/dist/features/block-summarizer/index.js +1 -0
- package/dist/features/block-summarizer/index.js.map +1 -1
- package/dist/features/yith-archive/config.d.ts.map +1 -1
- package/dist/features/yith-archive/config.js +11 -15
- package/dist/features/yith-archive/config.js.map +1 -1
- package/dist/features/yith-archive/eval/schemas.d.ts +2 -2
- package/dist/features/yith-archive/functions/migrate.d.ts.map +1 -1
- package/dist/features/yith-archive/functions/migrate.js +7 -3
- package/dist/features/yith-archive/functions/migrate.js.map +1 -1
- package/dist/features/yith-archive/functions/opencode-import.d.ts.map +1 -1
- package/dist/features/yith-archive/functions/opencode-import.js +54 -27
- package/dist/features/yith-archive/functions/opencode-import.js.map +1 -1
- package/dist/features/yith-archive/functions/smart-search.js.map +1 -1
- package/dist/features/yith-archive/functions/temporal-graph.d.ts.map +1 -1
- package/dist/features/yith-archive/functions/temporal-graph.js +1 -0
- package/dist/features/yith-archive/functions/temporal-graph.js.map +1 -1
- package/dist/features/yith-archive/providers/embedding/local.d.ts +16 -5
- package/dist/features/yith-archive/providers/embedding/local.d.ts.map +1 -1
- package/dist/features/yith-archive/providers/embedding/local.js +29 -11
- package/dist/features/yith-archive/providers/embedding/local.js.map +1 -1
- package/dist/features/yith-archive/state/fake-sdk.d.ts.map +1 -1
- package/dist/features/yith-archive/state/fake-sdk.js.map +1 -1
- package/dist/features/yith-archive/state/reranker.d.ts.map +1 -1
- package/dist/features/yith-archive/state/reranker.js +9 -2
- package/dist/features/yith-archive/state/reranker.js.map +1 -1
- package/dist/features/yith-archive/state/vector-index.d.ts.map +1 -1
- package/dist/features/yith-archive/state/vector-index.js +1 -0
- package/dist/features/yith-archive/state/vector-index.js.map +1 -1
- package/dist/hooks/agent-sync.d.ts +16 -0
- package/dist/hooks/agent-sync.d.ts.map +1 -0
- package/dist/hooks/agent-sync.js +42 -0
- package/dist/hooks/agent-sync.js.map +1 -0
- package/dist/hooks/comment-checker.d.ts +1 -1
- package/dist/hooks/comment-checker.d.ts.map +1 -1
- package/dist/hooks/comment-checker.js +10 -0
- package/dist/hooks/comment-checker.js.map +1 -1
- package/dist/hooks/cthulhu-auto.d.ts +1 -1
- package/dist/hooks/cthulhu-auto.d.ts.map +1 -1
- package/dist/hooks/cthulhu-auto.js +77 -8
- package/dist/hooks/cthulhu-auto.js.map +1 -1
- package/dist/hooks/cthulhu-preflight.d.ts.map +1 -1
- package/dist/hooks/cthulhu-preflight.js +6 -5
- package/dist/hooks/cthulhu-preflight.js.map +1 -1
- package/dist/hooks/design-detector-hook.d.ts +6 -5
- package/dist/hooks/design-detector-hook.d.ts.map +1 -1
- package/dist/hooks/design-detector-hook.js +27 -8
- package/dist/hooks/design-detector-hook.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +43 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/web-research-hook.d.ts +6 -5
- package/dist/hooks/web-research-hook.d.ts.map +1 -1
- package/dist/hooks/web-research-hook.js +30 -9
- package/dist/hooks/web-research-hook.js.map +1 -1
- package/dist/hooks/write-guard.d.ts +1 -1
- package/dist/hooks/write-guard.d.ts.map +1 -1
- package/dist/hooks/write-guard.js +10 -0
- package/dist/hooks/write-guard.js.map +1 -1
- package/dist/hooks/yith-capture.d.ts +9 -3
- package/dist/hooks/yith-capture.d.ts.map +1 -1
- package/dist/hooks/yith-capture.js +43 -14
- package/dist/hooks/yith-capture.js.map +1 -1
- package/dist/index.d.ts +12 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -5
- package/dist/index.js.map +1 -1
- package/dist/linters/type-safety-ast.d.ts.map +1 -1
- package/dist/linters/type-safety-ast.js +42 -24
- package/dist/linters/type-safety-ast.js.map +1 -1
- package/dist/shared/ascii-logo.d.ts +24 -0
- package/dist/shared/ascii-logo.d.ts.map +1 -0
- package/dist/shared/ascii-logo.js +77 -0
- package/dist/shared/ascii-logo.js.map +1 -0
- package/dist/shared/model-resolution.d.ts +19 -6
- package/dist/shared/model-resolution.d.ts.map +1 -1
- package/dist/shared/model-resolution.js +25 -12
- package/dist/shared/model-resolution.js.map +1 -1
- package/package.json +9 -6
- package/tui/dashboard.tsx +504 -0
- package/tui/data.ts +178 -0
- package/tui/theme.ts +51 -0
- package/tui/tsconfig.json +15 -0
- package/tui/wizard.tsx +219 -0
- package/dist/plugin-handlers/config-handler.d.ts +0 -21
- package/dist/plugin-handlers/config-handler.d.ts.map +0 -1
- package/dist/plugin-handlers/config-handler.js +0 -33
- package/dist/plugin-handlers/config-handler.js.map +0 -1
- package/dist/plugin-handlers/index.d.ts +0 -2
- package/dist/plugin-handlers/index.d.ts.map +0 -1
- package/dist/plugin-handlers/index.js +0 -2
- package/dist/plugin-handlers/index.js.map +0 -1
|
@@ -20,11 +20,17 @@
|
|
|
20
20
|
* every 5 seconds would burn credits; firing it every 5 minutes
|
|
21
21
|
* catches the queue opportunistically without being invasive.
|
|
22
22
|
*
|
|
23
|
-
* - Compression threshold (
|
|
23
|
+
* - Compression threshold (20 pending observations): below this, we
|
|
24
24
|
* let the user's manual `/necronomicon-bind` ritual handle
|
|
25
25
|
* compression. Above it, we assume the queue is growing faster
|
|
26
26
|
* than the user is running the ritual and nudge the cron-style
|
|
27
|
-
* spawn path into action automatically.
|
|
27
|
+
* spawn path into action automatically. A 24-hour age trigger
|
|
28
|
+
* drains even a small queue, so observations never sit raw
|
|
29
|
+
* (and poorly searchable) indefinitely.
|
|
30
|
+
*
|
|
31
|
+
* - Fires on Stop AND SessionStart (registered for both events in
|
|
32
|
+
* hooks/index.ts) so a machine that was closed for weeks ingests
|
|
33
|
+
* the backlog the moment Claude Code opens.
|
|
28
34
|
*
|
|
29
35
|
* - Fail-safe: the hook exits 0 on every branch. A broken Yith
|
|
30
36
|
* install can never block the user's Claude Code session — the
|
|
@@ -43,7 +49,8 @@ CAPTURE_SENTINEL="\${YITH_DIR}/.last-captured"
|
|
|
43
49
|
COMPRESS_SENTINEL="\${YITH_DIR}/.last-compressed"
|
|
44
50
|
DEBOUNCE_CAPTURE_SEC=5
|
|
45
51
|
DEBOUNCE_COMPRESS_SEC=300
|
|
46
|
-
COMPRESS_THRESHOLD=
|
|
52
|
+
COMPRESS_THRESHOLD=20
|
|
53
|
+
COMPRESS_MAX_AGE_SEC=86400
|
|
47
54
|
|
|
48
55
|
# Bail early if Yith isn't installed yet (fresh machine, user hasn't
|
|
49
56
|
# run \\\`oh-my-claudecode bind\\\` yet). The hook is strictly additive;
|
|
@@ -57,6 +64,22 @@ if ! command -v oh-my-claudecode >/dev/null 2>&1; then
|
|
|
57
64
|
exit 0
|
|
58
65
|
fi
|
|
59
66
|
|
|
67
|
+
# Which lifecycle event invoked us? Claude Code passes JSON on stdin.
|
|
68
|
+
# PreCompact and SessionEnd are capture-critical boundaries (context is
|
|
69
|
+
# about to be summarized away / the session is going away) — they bypass
|
|
70
|
+
# the debounce so the very last turns always reach the archive.
|
|
71
|
+
HOOK_EVENT=""
|
|
72
|
+
if [ ! -t 0 ]; then
|
|
73
|
+
HOOK_INPUT=\$(cat 2>/dev/null || true)
|
|
74
|
+
HOOK_EVENT=\$(printf '%s' "\$HOOK_INPUT" \\
|
|
75
|
+
| grep -o '"hook_event_name"[[:space:]]*:[[:space:]]*"[^"]*"' \\
|
|
76
|
+
| head -1 | sed 's/.*"\\([^"]*\\)"\$/\\1/')
|
|
77
|
+
fi
|
|
78
|
+
FORCE_CAPTURE=0
|
|
79
|
+
case "\$HOOK_EVENT" in
|
|
80
|
+
PreCompact|SessionEnd) FORCE_CAPTURE=1 ;;
|
|
81
|
+
esac
|
|
82
|
+
|
|
60
83
|
now=\$(date +%s)
|
|
61
84
|
|
|
62
85
|
# ── Capture tick (always tries to run) ────────────────────────────────
|
|
@@ -65,7 +88,7 @@ if [ -f "\$CAPTURE_SENTINEL" ]; then
|
|
|
65
88
|
last_capture=\$(cat "\$CAPTURE_SENTINEL" 2>/dev/null || echo 0)
|
|
66
89
|
fi
|
|
67
90
|
|
|
68
|
-
if [ \$((now - last_capture)) -ge \$DEBOUNCE_CAPTURE_SEC ]; then
|
|
91
|
+
if [ "\$FORCE_CAPTURE" = "1" ] || [ \$((now - last_capture)) -ge \$DEBOUNCE_CAPTURE_SEC ]; then
|
|
69
92
|
echo "\$now" > "\$CAPTURE_SENTINEL"
|
|
70
93
|
# Scope the scan to the current project when CLAUDE_PROJECT_DIR is
|
|
71
94
|
# set by Claude Code — otherwise let bind scan everything.
|
|
@@ -80,20 +103,26 @@ if [ \$((now - last_capture)) -ge \$DEBOUNCE_CAPTURE_SEC ]; then
|
|
|
80
103
|
>/dev/null 2>&1 || true
|
|
81
104
|
fi
|
|
82
105
|
|
|
83
|
-
# ── Compression tick (threshold-gated, less frequent)
|
|
106
|
+
# ── Compression tick (threshold- or age-gated, less frequent) ─────────
|
|
84
107
|
NECRONOMICON="\${YITH_DIR}/necronomicon.json"
|
|
85
108
|
if [ -f "\$NECRONOMICON" ] && command -v jq >/dev/null 2>&1; then
|
|
86
109
|
PENDING=\$(jq -r '."mem:pending-compression".state.count // 0' "\$NECRONOMICON" 2>/dev/null || echo 0)
|
|
110
|
+
last_compress=0
|
|
111
|
+
if [ -f "\$COMPRESS_SENTINEL" ]; then
|
|
112
|
+
last_compress=\$(cat "\$COMPRESS_SENTINEL" 2>/dev/null || echo 0)
|
|
113
|
+
fi
|
|
114
|
+
# Fire when the queue is big, OR when ANY observations have sat raw
|
|
115
|
+
# for more than COMPRESS_MAX_AGE_SEC since the last compression tick.
|
|
116
|
+
should_compress=0
|
|
87
117
|
if [ "\$PENDING" -ge "\$COMPRESS_THRESHOLD" ]; then
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
fi
|
|
118
|
+
should_compress=1
|
|
119
|
+
elif [ "\$PENDING" -gt 0 ] && [ \$((now - last_compress)) -ge \$COMPRESS_MAX_AGE_SEC ]; then
|
|
120
|
+
should_compress=1
|
|
121
|
+
fi
|
|
122
|
+
if [ "\$should_compress" = "1" ] && [ \$((now - last_compress)) -ge \$DEBOUNCE_COMPRESS_SEC ]; then
|
|
123
|
+
echo "\$now" > "\$COMPRESS_SENTINEL"
|
|
124
|
+
oh-my-claudecode bind --resume --compress-only --background \\
|
|
125
|
+
>/dev/null 2>&1 || true
|
|
97
126
|
fi
|
|
98
127
|
fi
|
|
99
128
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yith-capture.js","sourceRoot":"","sources":["../../src/hooks/yith-capture.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"yith-capture.js","sourceRoot":"","sources":["../../src/hooks/yith-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FvC,CAAA;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,OAAO,EAAE,EAAE;QACX,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,iCAAiC;aAC3C;SACF;KACF,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn.
|
|
5
5
|
*
|
|
6
|
-
* This is the main
|
|
7
|
-
* - Agent configs for all
|
|
6
|
+
* This is the main library entry point. It exports:
|
|
7
|
+
* - Agent configs for all 12 Elder God agents + the markdown renderer
|
|
8
|
+
* that `oh-my-claudecode sync` uses to install them into
|
|
9
|
+
* ~/.claude/agents/
|
|
8
10
|
* - Hook definitions for lifecycle behaviors
|
|
9
11
|
* - Config loading and merging utilities
|
|
10
|
-
* - The ClaudeCodePlugin descriptor used by the installer
|
|
11
12
|
*
|
|
12
|
-
* The
|
|
13
|
+
* The 12 Elder God agents:
|
|
13
14
|
*
|
|
14
15
|
* | Elder God | Model | Role |
|
|
15
16
|
* |-----------------|--------|-------------------------|
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
* | Azathoth | Opus | First-message planner |
|
|
19
20
|
* | Shub-Niggurath | Opus | Strategic planner |
|
|
20
21
|
* | Yog-Sothoth | Opus | Architecture advisor |
|
|
22
|
+
* | Nodens | Opus | Frontend design |
|
|
21
23
|
* | Hastur | Sonnet | Lightweight orchestrator|
|
|
22
24
|
* | Ithaqua | Sonnet | Pre-planning consultant |
|
|
23
25
|
* | Tsathoggua | Sonnet | Quality reviewer |
|
|
@@ -27,14 +29,19 @@
|
|
|
27
29
|
*/
|
|
28
30
|
export { loadPluginConfig, mergeConfigs, loadConfigFromPath } from "./plugin-config.js";
|
|
29
31
|
export { buildBuiltinAgents, AGENT_METADATA_MAP } from "./agents/builtin-agents.js";
|
|
32
|
+
export { renderAgentMarkdown, frontmatterTools, GENERATED_MARKER } from "./agents/render.js";
|
|
30
33
|
export { getEnabledHooks, buildHooksConfig, ALL_HOOK_DEFINITIONS } from "./hooks/index.js";
|
|
31
|
-
export { applyConfig } from "./plugin-handlers/config-handler.js";
|
|
32
34
|
export type { OhMyClaudeCodeConfig, AgentOverrides, HookName, BuiltinAgentName, BuiltinCommandName, BuiltinSkillName, McpName, ClaudeModel, } from "./config/index.js";
|
|
33
35
|
export type { AgentConfig, AgentMode, AgentPromptMetadata, AvailableAgent, AvailableSkill, AvailableCategory, } from "./agents/types.js";
|
|
34
36
|
export { createCthulhuAgent, createYogSothothAgent, createShoggothAgent, createDagonAgent, createTsathoggua, createIthaquaAgent, createHasturAgent, createNyarlathotepAgent, createAzathothAgent, createShubNiggurathAgent, createDeepOneAgent, } from "./agents/index.js";
|
|
35
37
|
export { MODELS, resolveModel, resolveAgentModel } from "./shared/model-resolution.js";
|
|
36
38
|
export { summarizeBlock } from "./features/block-summarizer/index.js";
|
|
37
39
|
export type { SummarizeBlockOptions, BlockSummary, } from "./features/block-summarizer/index.js";
|
|
40
|
+
export { BackgroundManager } from "./features/background-agent/index.js";
|
|
41
|
+
export type { BackgroundAgentConfig, BackgroundTask, } from "./features/background-agent/index.js";
|
|
42
|
+
export { spawnBackgroundResearch, getBackgroundResearchStatus, collectResearchTriggers, } from "./features/web-research-background/index.js";
|
|
43
|
+
export { lintFileAST, fixIssuesInFile, generateTypeMetrics, exportMetrics, } from "./linters/type-safety-ast.js";
|
|
44
|
+
export type { ASTTypeSafetyIssue, TypeSafetyMetrics } from "./linters/type-safety-ast.js";
|
|
38
45
|
export { createYithArchive, YithKV, VERSION as YITH_ARCHIVE_VERSION, } from "./features/yith-archive/index.js";
|
|
39
46
|
export type { YithArchiveOptions, YithArchiveHandle, RememberArgs, SearchArgs, ContextArgs, ObserveArgs, FakeSdk as YithFakeSdk, } from "./features/yith-archive/index.js";
|
|
40
47
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACnF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAE1F,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,OAAO,EACP,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAE1B,YAAY,EACV,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGtF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AACrE,YAAY,EACV,qBAAqB,EACrB,YAAY,GACb,MAAM,sCAAsC,CAAA;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AACxE,YAAY,EACV,qBAAqB,EACrB,cAAc,GACf,MAAM,sCAAsC,CAAA;AAG7C,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,6CAA6C,CAAA;AAGpD,OAAO,EACL,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,aAAa,GACd,MAAM,8BAA8B,CAAA;AACrC,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGzF,OAAO,EACL,iBAAiB,EACjB,MAAM,EACN,OAAO,IAAI,oBAAoB,GAChC,MAAM,kCAAkC,CAAA;AACzC,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,OAAO,IAAI,WAAW,GACvB,MAAM,kCAAkC,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn.
|
|
5
5
|
*
|
|
6
|
-
* This is the main
|
|
7
|
-
* - Agent configs for all
|
|
6
|
+
* This is the main library entry point. It exports:
|
|
7
|
+
* - Agent configs for all 12 Elder God agents + the markdown renderer
|
|
8
|
+
* that `oh-my-claudecode sync` uses to install them into
|
|
9
|
+
* ~/.claude/agents/
|
|
8
10
|
* - Hook definitions for lifecycle behaviors
|
|
9
11
|
* - Config loading and merging utilities
|
|
10
|
-
* - The ClaudeCodePlugin descriptor used by the installer
|
|
11
12
|
*
|
|
12
|
-
* The
|
|
13
|
+
* The 12 Elder God agents:
|
|
13
14
|
*
|
|
14
15
|
* | Elder God | Model | Role |
|
|
15
16
|
* |-----------------|--------|-------------------------|
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
* | Azathoth | Opus | First-message planner |
|
|
19
20
|
* | Shub-Niggurath | Opus | Strategic planner |
|
|
20
21
|
* | Yog-Sothoth | Opus | Architecture advisor |
|
|
22
|
+
* | Nodens | Opus | Frontend design |
|
|
21
23
|
* | Hastur | Sonnet | Lightweight orchestrator|
|
|
22
24
|
* | Ithaqua | Sonnet | Pre-planning consultant |
|
|
23
25
|
* | Tsathoggua | Sonnet | Quality reviewer |
|
|
@@ -27,13 +29,19 @@
|
|
|
27
29
|
*/
|
|
28
30
|
export { loadPluginConfig, mergeConfigs, loadConfigFromPath } from "./plugin-config.js";
|
|
29
31
|
export { buildBuiltinAgents, AGENT_METADATA_MAP } from "./agents/builtin-agents.js";
|
|
32
|
+
export { renderAgentMarkdown, frontmatterTools, GENERATED_MARKER } from "./agents/render.js";
|
|
30
33
|
export { getEnabledHooks, buildHooksConfig, ALL_HOOK_DEFINITIONS } from "./hooks/index.js";
|
|
31
|
-
export { applyConfig } from "./plugin-handlers/config-handler.js";
|
|
32
34
|
// Individual agent creators
|
|
33
35
|
export { createCthulhuAgent, createYogSothothAgent, createShoggothAgent, createDagonAgent, createTsathoggua, createIthaquaAgent, createHasturAgent, createNyarlathotepAgent, createAzathothAgent, createShubNiggurathAgent, createDeepOneAgent, } from "./agents/index.js";
|
|
34
36
|
export { MODELS, resolveModel, resolveAgentModel } from "./shared/model-resolution.js";
|
|
35
37
|
// Block Summarizer — in-session context trimming via delegation-as-block
|
|
36
38
|
export { summarizeBlock } from "./features/block-summarizer/index.js";
|
|
39
|
+
// Background agent manager — circuit breaker, concurrency limits, task lifecycle
|
|
40
|
+
export { BackgroundManager } from "./features/background-agent/index.js";
|
|
41
|
+
// Background web research — detection + dispatch helpers
|
|
42
|
+
export { spawnBackgroundResearch, getBackgroundResearchStatus, collectResearchTriggers, } from "./features/web-research-background/index.js";
|
|
43
|
+
// Type-safety linter — programmatic access to the `lint` CLI's engine
|
|
44
|
+
export { lintFileAST, fixIssuesInFile, generateTypeMetrics, exportMetrics, } from "./linters/type-safety-ast.js";
|
|
37
45
|
// Yith Archive — persistent cross-session memory subsystem
|
|
38
46
|
export { createYithArchive, YithKV, VERSION as YITH_ARCHIVE_VERSION, } from "./features/yith-archive/index.js";
|
|
39
47
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACnF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAsB1F,4BAA4B;AAC5B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEtF,yEAAyE;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAMrE,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAMxE,yDAAyD;AACzD,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,6CAA6C,CAAA;AAEpD,sEAAsE;AACtE,OAAO,EACL,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,aAAa,GACd,MAAM,8BAA8B,CAAA;AAGrC,2DAA2D;AAC3D,OAAO,EACL,iBAAiB,EACjB,MAAM,EACN,OAAO,IAAI,oBAAoB,GAChC,MAAM,kCAAkC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-safety-ast.d.ts","sourceRoot":"","sources":["../../src/linters/type-safety-ast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IACnC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"type-safety-ast.d.ts","sourceRoot":"","sources":["../../src/linters/type-safety-ast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IACnC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,kBAAkB,EAAE,CAkJ5F;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,EAAE,EAC5B,MAAM,CAAC,EAAE,eAAe,GACvB,aAAa,CA6Df;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,CAAC,EAAE,eAAe,GACvB,iBAAiB,CAkCnB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAYrF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAoB7E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG;IACnE,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB,CAkBA"}
|
|
@@ -27,41 +27,59 @@ export function lintFileAST(filePath, config) {
|
|
|
27
27
|
const sourceFile = ts.createSourceFile(filePath, sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
28
28
|
const issues = [];
|
|
29
29
|
const lines = sourceCode.split("\n");
|
|
30
|
+
/**
|
|
31
|
+
* Explicit escape hatch: a `@ts-safety:` annotation (e.g.
|
|
32
|
+
* `@ts-safety:allow-any — interop with untyped lib`) on the same or
|
|
33
|
+
* previous line acknowledges the violation with a reason and
|
|
34
|
+
* suppresses the error-severity rules for that line.
|
|
35
|
+
*/
|
|
36
|
+
const hasSafetyAllow = (zeroBasedLine) => {
|
|
37
|
+
const current = lines[zeroBasedLine] ?? "";
|
|
38
|
+
const previous = lines[zeroBasedLine - 1] ?? "";
|
|
39
|
+
return current.includes("@ts-safety:") || previous.includes("@ts-safety:");
|
|
40
|
+
};
|
|
30
41
|
// Walk the AST and collect issues
|
|
31
42
|
const visit = (node) => {
|
|
32
|
-
// Check for 'any' type usage
|
|
33
|
-
|
|
43
|
+
// Check for 'any' type usage. The `as any` form is reported by
|
|
44
|
+
// TS_UNSAFE_CAST instead, so skip the keyword when it is the type of
|
|
45
|
+
// an as-expression to avoid double-reporting one violation.
|
|
46
|
+
if (ts.isTypeNode(node) &&
|
|
47
|
+
node.kind === ts.SyntaxKind.AnyKeyword &&
|
|
48
|
+
!(node.parent && ts.isAsExpression(node.parent) && node.parent.type === node)) {
|
|
34
49
|
const pos = sourceFile.getLineAndCharacterOfPosition(node.getStart());
|
|
35
|
-
|
|
36
|
-
ruleId: "TS_ANY_TYPE",
|
|
37
|
-
message: "Use of 'any' type is not allowed",
|
|
38
|
-
line: pos.line + 1,
|
|
39
|
-
column: pos.character + 1,
|
|
40
|
-
severity: "error",
|
|
41
|
-
fix: "Replace 'any' with specific type",
|
|
42
|
-
fixable: true,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
// Check for unsafe type assertions
|
|
46
|
-
if (ts.isAsExpression(node)) {
|
|
47
|
-
const typeNode = node.type;
|
|
48
|
-
const typeText = typeNode.getText(sourceFile);
|
|
49
|
-
if (typeText === "any" ||
|
|
50
|
-
typeText === "unknown" ||
|
|
51
|
-
typeText.startsWith("Record<") ||
|
|
52
|
-
typeText === "{}") {
|
|
53
|
-
const pos = sourceFile.getLineAndCharacterOfPosition(node.getStart());
|
|
50
|
+
if (!hasSafetyAllow(pos.line)) {
|
|
54
51
|
issues.push({
|
|
55
|
-
ruleId: "
|
|
56
|
-
message:
|
|
52
|
+
ruleId: "TS_ANY_TYPE",
|
|
53
|
+
message: "Use of 'any' type is not allowed",
|
|
57
54
|
line: pos.line + 1,
|
|
58
55
|
column: pos.character + 1,
|
|
59
56
|
severity: "error",
|
|
60
|
-
fix:
|
|
57
|
+
fix: "Replace 'any' with specific type",
|
|
61
58
|
fixable: true,
|
|
62
59
|
});
|
|
63
60
|
}
|
|
64
61
|
}
|
|
62
|
+
// Check for unsafe type assertions: `as any` and `as unknown` erase
|
|
63
|
+
// type information entirely. Narrowing casts to structured types are
|
|
64
|
+
// allowed — they assert a shape the compiler can keep checking.
|
|
65
|
+
if (ts.isAsExpression(node)) {
|
|
66
|
+
const typeNode = node.type;
|
|
67
|
+
const typeText = typeNode.getText(sourceFile);
|
|
68
|
+
if (typeText === "any" || typeText === "unknown") {
|
|
69
|
+
const pos = sourceFile.getLineAndCharacterOfPosition(node.getStart());
|
|
70
|
+
if (!hasSafetyAllow(pos.line)) {
|
|
71
|
+
issues.push({
|
|
72
|
+
ruleId: "TS_UNSAFE_CAST",
|
|
73
|
+
message: `Unsafe cast to '${typeText}'`,
|
|
74
|
+
line: pos.line + 1,
|
|
75
|
+
column: pos.character + 1,
|
|
76
|
+
severity: "error",
|
|
77
|
+
fix: `Use type guard or specific type instead of '${typeText}'`,
|
|
78
|
+
fixable: true,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
65
83
|
// Check for missing return type annotations on functions
|
|
66
84
|
if ((ts.isFunctionDeclaration(node) || ts.isMethodDeclaration(node)) &&
|
|
67
85
|
!node.type &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-safety-ast.js","sourceRoot":"","sources":["../../src/linters/type-safety-ast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAmDhC;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,MAAwB;IACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACrD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,UAAU,EACV,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAA;IAED,MAAM,MAAM,GAAyB,EAAE,CAAA;IACvC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAEpC,kCAAkC;IAClC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,
|
|
1
|
+
{"version":3,"file":"type-safety-ast.js","sourceRoot":"","sources":["../../src/linters/type-safety-ast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The oh-my-claudecode wordmark — a hand-built 3-row half-block letterform,
|
|
3
|
+
* rendered identically by the node CLI (ANSI) and the OpenTUI dashboard
|
|
4
|
+
* (per-segment spans). Gruvbox-soft warm gradient: ember orange for "oh",
|
|
5
|
+
* harvest yellow for "my", parchment cream for "claudecode", hyphens in
|
|
6
|
+
* stone gray.
|
|
7
|
+
*/
|
|
8
|
+
/** Render one word as its three letterform rows. */
|
|
9
|
+
export declare function renderWordRows(word: string): [string, string, string];
|
|
10
|
+
/** The wordmark's color segments, in order. Hex values are gruvbox-soft. */
|
|
11
|
+
export declare const LOGO_SEGMENTS: Array<{
|
|
12
|
+
text: string;
|
|
13
|
+
color: string;
|
|
14
|
+
}>;
|
|
15
|
+
export declare const LOGO_TAGLINE = "the agentic operations system for claude code";
|
|
16
|
+
/**
|
|
17
|
+
* Full ANSI banner for the node CLI (installer, etc.). Colorized when the
|
|
18
|
+
* stream is a TTY; plain text otherwise so logs stay clean.
|
|
19
|
+
*/
|
|
20
|
+
export declare function renderLogoAnsi(opts?: {
|
|
21
|
+
version?: string;
|
|
22
|
+
color?: boolean;
|
|
23
|
+
}): string;
|
|
24
|
+
//# sourceMappingURL=ascii-logo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ascii-logo.d.ts","sourceRoot":"","sources":["../../src/shared/ascii-logo.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAUrE;AAED,4EAA4E;AAC5E,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAMhE,CAAA;AAED,eAAO,MAAM,YAAY,kDAAkD,CAAA;AAW3E;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAyBnF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The oh-my-claudecode wordmark — a hand-built 3-row half-block letterform,
|
|
3
|
+
* rendered identically by the node CLI (ANSI) and the OpenTUI dashboard
|
|
4
|
+
* (per-segment spans). Gruvbox-soft warm gradient: ember orange for "oh",
|
|
5
|
+
* harvest yellow for "my", parchment cream for "claudecode", hyphens in
|
|
6
|
+
* stone gray.
|
|
7
|
+
*/
|
|
8
|
+
const GLYPHS = {
|
|
9
|
+
o: ["▄▀▄", "█ █", "▀▄▀"],
|
|
10
|
+
h: ["█ ▄", "█▀█", "█ █"],
|
|
11
|
+
m: ["▄▄▄", "█▀█", "█ █"],
|
|
12
|
+
y: ["█ █", "▀▄▀", "▄▀ "],
|
|
13
|
+
c: ["▄▀▀", "█ ", "▀▄▄"],
|
|
14
|
+
l: ["█ ", "█ ", "█▄▄"],
|
|
15
|
+
a: ["▄▀▄", "█▀█", "█ █"],
|
|
16
|
+
u: ["█ █", "█ █", "▀▄▀"],
|
|
17
|
+
d: ["█▀▄", "█ █", "█▄▀"],
|
|
18
|
+
e: ["█▀▀", "█▀ ", "█▄▄"],
|
|
19
|
+
"-": [" ", "▄▄", " "],
|
|
20
|
+
};
|
|
21
|
+
/** Render one word as its three letterform rows. */
|
|
22
|
+
export function renderWordRows(word) {
|
|
23
|
+
const rows = ["", "", ""];
|
|
24
|
+
for (const char of word) {
|
|
25
|
+
const glyph = GLYPHS[char.toLowerCase()];
|
|
26
|
+
if (!glyph)
|
|
27
|
+
continue;
|
|
28
|
+
for (let i = 0; i < 3; i++) {
|
|
29
|
+
rows[i] += (rows[i] ? " " : "") + glyph[i];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return rows;
|
|
33
|
+
}
|
|
34
|
+
/** The wordmark's color segments, in order. Hex values are gruvbox-soft. */
|
|
35
|
+
export const LOGO_SEGMENTS = [
|
|
36
|
+
{ text: "oh", color: "#fe8019" },
|
|
37
|
+
{ text: "-", color: "#928374" },
|
|
38
|
+
{ text: "my", color: "#fabd2f" },
|
|
39
|
+
{ text: "-", color: "#928374" },
|
|
40
|
+
{ text: "claudecode", color: "#ebdbb2" },
|
|
41
|
+
];
|
|
42
|
+
export const LOGO_TAGLINE = "the agentic operations system for claude code";
|
|
43
|
+
function hexToAnsi(hex) {
|
|
44
|
+
const r = parseInt(hex.slice(1, 3), 16);
|
|
45
|
+
const g = parseInt(hex.slice(3, 5), 16);
|
|
46
|
+
const b = parseInt(hex.slice(5, 7), 16);
|
|
47
|
+
return `\x1b[38;2;${r};${g};${b}m`;
|
|
48
|
+
}
|
|
49
|
+
const RESET = "\x1b[0m";
|
|
50
|
+
/**
|
|
51
|
+
* Full ANSI banner for the node CLI (installer, etc.). Colorized when the
|
|
52
|
+
* stream is a TTY; plain text otherwise so logs stay clean.
|
|
53
|
+
*/
|
|
54
|
+
export function renderLogoAnsi(opts) {
|
|
55
|
+
const color = opts?.color ?? (process.stdout.isTTY ?? false);
|
|
56
|
+
const rowsPerSegment = LOGO_SEGMENTS.map((segment) => ({
|
|
57
|
+
rows: renderWordRows(segment.text),
|
|
58
|
+
ansi: hexToAnsi(segment.color),
|
|
59
|
+
}));
|
|
60
|
+
const lines = [""];
|
|
61
|
+
for (let row = 0; row < 3; row++) {
|
|
62
|
+
let line = " ";
|
|
63
|
+
for (const segment of rowsPerSegment) {
|
|
64
|
+
line += color
|
|
65
|
+
? `${segment.ansi}${segment.rows[row]}${RESET} `
|
|
66
|
+
: `${segment.rows[row]} `;
|
|
67
|
+
}
|
|
68
|
+
lines.push(line.trimEnd());
|
|
69
|
+
}
|
|
70
|
+
const dim = color ? hexToAnsi("#928374") : "";
|
|
71
|
+
const reset = color ? RESET : "";
|
|
72
|
+
lines.push("");
|
|
73
|
+
lines.push(` ${dim}${LOGO_TAGLINE}${opts?.version ? ` · v${opts.version}` : ""}${reset}`);
|
|
74
|
+
lines.push("");
|
|
75
|
+
return lines.join("\n");
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=ascii-logo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ascii-logo.js","sourceRoot":"","sources":["../../src/shared/ascii-logo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
import type { ClaudeModel } from "../config/schema.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Canonical model identifiers for agent definitions.
|
|
4
|
+
*
|
|
5
|
+
* Claude Code resolves the short aliases "opus" / "sonnet" / "haiku" to the
|
|
6
|
+
* current model of each tier at runtime, so agent files written with aliases
|
|
7
|
+
* never go stale when a new model ships. The alias IS the canonical form
|
|
8
|
+
* here — full `claude-*` IDs only appear when a user explicitly pins one in
|
|
9
|
+
* `~/.claude/oh-my-claudecode.jsonc`, and they pass through untouched.
|
|
10
|
+
*/
|
|
3
11
|
export declare const MODELS: {
|
|
4
|
-
readonly OPUS: "
|
|
5
|
-
readonly SONNET: "
|
|
6
|
-
readonly HAIKU: "
|
|
12
|
+
readonly OPUS: "opus";
|
|
13
|
+
readonly SONNET: "sonnet";
|
|
14
|
+
readonly HAIKU: "haiku";
|
|
7
15
|
};
|
|
8
|
-
|
|
16
|
+
export type ModelAlias = (typeof MODELS)[keyof typeof MODELS];
|
|
17
|
+
/**
|
|
18
|
+
* Resolve a configured model string to the form agent definitions use.
|
|
19
|
+
* Aliases normalize to lowercase; full model IDs pass through untouched
|
|
20
|
+
* so users can pin a specific snapshot when they need to.
|
|
21
|
+
*/
|
|
9
22
|
export declare function resolveModel(model: string | undefined): string;
|
|
10
|
-
/** Default model for each agent
|
|
23
|
+
/** Default model tier for each agent */
|
|
11
24
|
export declare const DEFAULT_AGENT_MODELS: Record<string, string>;
|
|
12
25
|
/** Fallback chain for each tier if primary model fails */
|
|
13
26
|
export declare const MODEL_FALLBACK_CHAINS: Record<string, string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolution.d.ts","sourceRoot":"","sources":["../../src/shared/model-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD
|
|
1
|
+
{"version":3,"file":"model-resolution.d.ts","sourceRoot":"","sources":["../../src/shared/model-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM;;;;CAIT,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,CAAA;AAI7D;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAK9D;AAED,wCAAwC;AACxC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiBvD,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAI1D,CAAA;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,WAAW,GAAG,SAAS,EACtC,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,MAAM,CAGR"}
|
|
@@ -1,21 +1,32 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Canonical model identifiers for agent definitions.
|
|
3
|
+
*
|
|
4
|
+
* Claude Code resolves the short aliases "opus" / "sonnet" / "haiku" to the
|
|
5
|
+
* current model of each tier at runtime, so agent files written with aliases
|
|
6
|
+
* never go stale when a new model ships. The alias IS the canonical form
|
|
7
|
+
* here — full `claude-*` IDs only appear when a user explicitly pins one in
|
|
8
|
+
* `~/.claude/oh-my-claudecode.jsonc`, and they pass through untouched.
|
|
9
|
+
*/
|
|
2
10
|
export const MODELS = {
|
|
3
|
-
OPUS: "
|
|
4
|
-
SONNET: "
|
|
5
|
-
HAIKU: "
|
|
11
|
+
OPUS: "opus",
|
|
12
|
+
SONNET: "sonnet",
|
|
13
|
+
HAIKU: "haiku",
|
|
6
14
|
};
|
|
7
|
-
|
|
15
|
+
const ALIASES = new Set(["opus", "sonnet", "haiku", "inherit"]);
|
|
16
|
+
/**
|
|
17
|
+
* Resolve a configured model string to the form agent definitions use.
|
|
18
|
+
* Aliases normalize to lowercase; full model IDs pass through untouched
|
|
19
|
+
* so users can pin a specific snapshot when they need to.
|
|
20
|
+
*/
|
|
8
21
|
export function resolveModel(model) {
|
|
9
22
|
if (!model)
|
|
10
23
|
return MODELS.SONNET;
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
};
|
|
16
|
-
return aliases[model] ?? model;
|
|
24
|
+
const lower = model.toLowerCase();
|
|
25
|
+
if (ALIASES.has(lower))
|
|
26
|
+
return lower;
|
|
27
|
+
return model;
|
|
17
28
|
}
|
|
18
|
-
/** Default model for each agent
|
|
29
|
+
/** Default model tier for each agent */
|
|
19
30
|
export const DEFAULT_AGENT_MODELS = {
|
|
20
31
|
// Opus-tier: primary orchestrators and deep reasoners
|
|
21
32
|
cthulhu: MODELS.OPUS,
|
|
@@ -23,6 +34,8 @@ export const DEFAULT_AGENT_MODELS = {
|
|
|
23
34
|
azathoth: MODELS.OPUS,
|
|
24
35
|
"shub-niggurath": MODELS.OPUS,
|
|
25
36
|
"yog-sothoth": MODELS.OPUS,
|
|
37
|
+
// Opus-tier: vision-grade design work
|
|
38
|
+
nodens: MODELS.OPUS,
|
|
26
39
|
// Sonnet-tier: mid-complexity specialists
|
|
27
40
|
hastur: MODELS.SONNET,
|
|
28
41
|
ithaqua: MODELS.SONNET,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolution.js","sourceRoot":"","sources":["../../src/shared/model-resolution.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"model-resolution.js","sourceRoot":"","sources":["../../src/shared/model-resolution.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;CACN,CAAA;AAIV,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;AAEvE;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAyB;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC,MAAM,CAAA;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACpC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC,IAAI;IACpB,YAAY,EAAE,MAAM,CAAC,IAAI;IACzB,QAAQ,EAAE,MAAM,CAAC,IAAI;IACrB,gBAAgB,EAAE,MAAM,CAAC,IAAI;IAC7B,aAAa,EAAE,MAAM,CAAC,IAAI;IAC1B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC,IAAI;IACnB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,cAAc,EAAE,MAAM,CAAC,MAAM;IAC7B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC,KAAK;CACvB,CAAA;AAED,0DAA0D;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAA6B;IAC7D,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;IAC5C,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;IAC/B,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;CACnB,CAAA;AAED,MAAM,UAAU,iBAAiB,CAC/B,SAAiB,EACjB,aAAsC,EACtC,kBAAsC;IAEtC,IAAI,aAAa;QAAE,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACrD,OAAO,oBAAoB,CAAC,SAAS,CAAC,IAAI,kBAAkB,IAAI,MAAM,CAAC,MAAM,CAAA;AAC/E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-claudecode",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "Cthulhu-themed agentic harness for Claude Code —
|
|
3
|
+
"version": "0.2.9",
|
|
4
|
+
"description": "Cthulhu-themed agentic harness for Claude Code — 12 Elder God agents installed as native subagents, persistent cross-session memory, lifecycle hooks, and multi-tier orchestration.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
13
|
"bin",
|
|
14
|
-
"commands"
|
|
14
|
+
"commands",
|
|
15
|
+
"tui"
|
|
15
16
|
],
|
|
16
17
|
"bin": {
|
|
17
18
|
"oh-my-claudecode": "bin/oh-my-claudecode.js",
|
|
@@ -42,16 +43,18 @@
|
|
|
42
43
|
"license": "MIT",
|
|
43
44
|
"dependencies": {
|
|
44
45
|
"@anthropic-ai/sdk": "^0.39.0",
|
|
46
|
+
"@huggingface/transformers": "^4.2.0",
|
|
45
47
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
48
|
+
"@opentui/core": "^0.4.0",
|
|
49
|
+
"@opentui/react": "^0.4.0",
|
|
46
50
|
"commander": "^12.0.0",
|
|
47
51
|
"dotenv": "^16.4.7",
|
|
52
|
+
"react": "^19.2.7",
|
|
48
53
|
"zod": "^3.24.0"
|
|
49
54
|
},
|
|
50
|
-
"optionalDependencies": {
|
|
51
|
-
"@xenova/transformers": "^2.17.2"
|
|
52
|
-
},
|
|
53
55
|
"devDependencies": {
|
|
54
56
|
"@types/node": "^22.0.0",
|
|
57
|
+
"@types/react": "^19.2.17",
|
|
55
58
|
"tsx": "^4.21.0",
|
|
56
59
|
"typescript": "^5.5.0"
|
|
57
60
|
},
|