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.
Files changed (131) hide show
  1. package/README.md +170 -68
  2. package/commands/cthulhu.md +9 -1
  3. package/commands/invoke-shub.md +8 -2
  4. package/commands/shoggoth.md +15 -25
  5. package/commands/yog-sothoth.md +18 -25
  6. package/dist/agents/render.d.ts +11 -0
  7. package/dist/agents/render.d.ts.map +1 -0
  8. package/dist/agents/render.js +69 -0
  9. package/dist/agents/render.js.map +1 -0
  10. package/dist/cli/dashboard.d.ts +12 -0
  11. package/dist/cli/dashboard.d.ts.map +1 -0
  12. package/dist/cli/dashboard.js +58 -0
  13. package/dist/cli/dashboard.js.map +1 -0
  14. package/dist/cli/doctor.d.ts +11 -0
  15. package/dist/cli/doctor.d.ts.map +1 -1
  16. package/dist/cli/doctor.js +163 -9
  17. package/dist/cli/doctor.js.map +1 -1
  18. package/dist/cli/index.js +72 -3
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/cli/install.d.ts +6 -0
  21. package/dist/cli/install.d.ts.map +1 -1
  22. package/dist/cli/install.js +211 -44
  23. package/dist/cli/install.js.map +1 -1
  24. package/dist/cli/lint.d.ts +26 -0
  25. package/dist/cli/lint.d.ts.map +1 -0
  26. package/dist/cli/lint.js +86 -0
  27. package/dist/cli/lint.js.map +1 -0
  28. package/dist/cli/stats.d.ts +56 -0
  29. package/dist/cli/stats.d.ts.map +1 -0
  30. package/dist/cli/stats.js +197 -0
  31. package/dist/cli/stats.js.map +1 -0
  32. package/dist/cli/sync.d.ts +44 -0
  33. package/dist/cli/sync.d.ts.map +1 -0
  34. package/dist/cli/sync.js +154 -0
  35. package/dist/cli/sync.js.map +1 -0
  36. package/dist/config/schema.d.ts +337 -331
  37. package/dist/config/schema.d.ts.map +1 -1
  38. package/dist/config/schema.js +14 -10
  39. package/dist/config/schema.js.map +1 -1
  40. package/dist/features/block-summarizer/index.js +1 -0
  41. package/dist/features/block-summarizer/index.js.map +1 -1
  42. package/dist/features/yith-archive/config.d.ts.map +1 -1
  43. package/dist/features/yith-archive/config.js +11 -15
  44. package/dist/features/yith-archive/config.js.map +1 -1
  45. package/dist/features/yith-archive/eval/schemas.d.ts +2 -2
  46. package/dist/features/yith-archive/functions/migrate.d.ts.map +1 -1
  47. package/dist/features/yith-archive/functions/migrate.js +7 -3
  48. package/dist/features/yith-archive/functions/migrate.js.map +1 -1
  49. package/dist/features/yith-archive/functions/opencode-import.d.ts.map +1 -1
  50. package/dist/features/yith-archive/functions/opencode-import.js +54 -27
  51. package/dist/features/yith-archive/functions/opencode-import.js.map +1 -1
  52. package/dist/features/yith-archive/functions/smart-search.js.map +1 -1
  53. package/dist/features/yith-archive/functions/temporal-graph.d.ts.map +1 -1
  54. package/dist/features/yith-archive/functions/temporal-graph.js +1 -0
  55. package/dist/features/yith-archive/functions/temporal-graph.js.map +1 -1
  56. package/dist/features/yith-archive/providers/embedding/local.d.ts +16 -5
  57. package/dist/features/yith-archive/providers/embedding/local.d.ts.map +1 -1
  58. package/dist/features/yith-archive/providers/embedding/local.js +29 -11
  59. package/dist/features/yith-archive/providers/embedding/local.js.map +1 -1
  60. package/dist/features/yith-archive/state/fake-sdk.d.ts.map +1 -1
  61. package/dist/features/yith-archive/state/fake-sdk.js.map +1 -1
  62. package/dist/features/yith-archive/state/reranker.d.ts.map +1 -1
  63. package/dist/features/yith-archive/state/reranker.js +9 -2
  64. package/dist/features/yith-archive/state/reranker.js.map +1 -1
  65. package/dist/features/yith-archive/state/vector-index.d.ts.map +1 -1
  66. package/dist/features/yith-archive/state/vector-index.js +1 -0
  67. package/dist/features/yith-archive/state/vector-index.js.map +1 -1
  68. package/dist/hooks/agent-sync.d.ts +16 -0
  69. package/dist/hooks/agent-sync.d.ts.map +1 -0
  70. package/dist/hooks/agent-sync.js +42 -0
  71. package/dist/hooks/agent-sync.js.map +1 -0
  72. package/dist/hooks/comment-checker.d.ts +1 -1
  73. package/dist/hooks/comment-checker.d.ts.map +1 -1
  74. package/dist/hooks/comment-checker.js +10 -0
  75. package/dist/hooks/comment-checker.js.map +1 -1
  76. package/dist/hooks/cthulhu-auto.d.ts +1 -1
  77. package/dist/hooks/cthulhu-auto.d.ts.map +1 -1
  78. package/dist/hooks/cthulhu-auto.js +77 -8
  79. package/dist/hooks/cthulhu-auto.js.map +1 -1
  80. package/dist/hooks/cthulhu-preflight.d.ts.map +1 -1
  81. package/dist/hooks/cthulhu-preflight.js +6 -5
  82. package/dist/hooks/cthulhu-preflight.js.map +1 -1
  83. package/dist/hooks/design-detector-hook.d.ts +6 -5
  84. package/dist/hooks/design-detector-hook.d.ts.map +1 -1
  85. package/dist/hooks/design-detector-hook.js +27 -8
  86. package/dist/hooks/design-detector-hook.js.map +1 -1
  87. package/dist/hooks/index.d.ts +2 -1
  88. package/dist/hooks/index.d.ts.map +1 -1
  89. package/dist/hooks/index.js +43 -0
  90. package/dist/hooks/index.js.map +1 -1
  91. package/dist/hooks/web-research-hook.d.ts +6 -5
  92. package/dist/hooks/web-research-hook.d.ts.map +1 -1
  93. package/dist/hooks/web-research-hook.js +30 -9
  94. package/dist/hooks/web-research-hook.js.map +1 -1
  95. package/dist/hooks/write-guard.d.ts +1 -1
  96. package/dist/hooks/write-guard.d.ts.map +1 -1
  97. package/dist/hooks/write-guard.js +10 -0
  98. package/dist/hooks/write-guard.js.map +1 -1
  99. package/dist/hooks/yith-capture.d.ts +9 -3
  100. package/dist/hooks/yith-capture.d.ts.map +1 -1
  101. package/dist/hooks/yith-capture.js +43 -14
  102. package/dist/hooks/yith-capture.js.map +1 -1
  103. package/dist/index.d.ts +12 -5
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +13 -5
  106. package/dist/index.js.map +1 -1
  107. package/dist/linters/type-safety-ast.d.ts.map +1 -1
  108. package/dist/linters/type-safety-ast.js +42 -24
  109. package/dist/linters/type-safety-ast.js.map +1 -1
  110. package/dist/shared/ascii-logo.d.ts +24 -0
  111. package/dist/shared/ascii-logo.d.ts.map +1 -0
  112. package/dist/shared/ascii-logo.js +77 -0
  113. package/dist/shared/ascii-logo.js.map +1 -0
  114. package/dist/shared/model-resolution.d.ts +19 -6
  115. package/dist/shared/model-resolution.d.ts.map +1 -1
  116. package/dist/shared/model-resolution.js +25 -12
  117. package/dist/shared/model-resolution.js.map +1 -1
  118. package/package.json +9 -6
  119. package/tui/dashboard.tsx +504 -0
  120. package/tui/data.ts +178 -0
  121. package/tui/theme.ts +51 -0
  122. package/tui/tsconfig.json +15 -0
  123. package/tui/wizard.tsx +219 -0
  124. package/dist/plugin-handlers/config-handler.d.ts +0 -21
  125. package/dist/plugin-handlers/config-handler.d.ts.map +0 -1
  126. package/dist/plugin-handlers/config-handler.js +0 -33
  127. package/dist/plugin-handlers/config-handler.js.map +0 -1
  128. package/dist/plugin-handlers/index.d.ts +0 -2
  129. package/dist/plugin-handlers/index.d.ts.map +0 -1
  130. package/dist/plugin-handlers/index.js +0 -2
  131. 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 (50 pending observations): below this, we
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=50
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
- last_compress=0
89
- if [ -f "\$COMPRESS_SENTINEL" ]; then
90
- last_compress=\$(cat "\$COMPRESS_SENTINEL" 2>/dev/null || echo 0)
91
- fi
92
- if [ \$((now - last_compress)) -ge \$DEBOUNCE_COMPRESS_SEC ]; then
93
- echo "\$now" > "\$COMPRESS_SENTINEL"
94
- oh-my-claudecode bind --resume --compress-only --background \\
95
- >/dev/null 2>&1 || true
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoEvC,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"}
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 plugin entry point. It exports:
7
- * - Agent configs for all 11 Elder God agents
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 11 Elder God agents:
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;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,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AAEjE,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,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"}
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 plugin entry point. It exports:
7
- * - Agent configs for all 11 Elder God agents
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 11 Elder God agents:
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;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;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,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AAsBjE,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,2DAA2D;AAC3D,OAAO,EACL,iBAAiB,EACjB,MAAM,EACN,OAAO,IAAI,oBAAoB,GAChC,MAAM,kCAAkC,CAAA"}
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,CA+H5F;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"}
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
- if (ts.isTypeNode(node) && node.kind === ts.SyntaxKind.AnyKeyword) {
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
- issues.push({
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: "TS_UNSAFE_CAST",
56
- message: `Unsafe cast to '${typeText}'`,
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: `Use type guard or specific type instead of '${typeText}'`,
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":"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"}
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
- /** Canonical model IDs for Claude Code */
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: "claude-opus-4-6";
5
- readonly SONNET: "claude-sonnet-4-6";
6
- readonly HAIKU: "claude-haiku-4-5";
12
+ readonly OPUS: "opus";
13
+ readonly SONNET: "sonnet";
14
+ readonly HAIKU: "haiku";
7
15
  };
8
- /** Resolve a short alias or canonical ID to a full model string */
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 tier */
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,0CAA0C;AAC1C,eAAO,MAAM,MAAM;;;;CAIT,CAAA;AAEV,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAQ9D;AAED,wCAAwC;AACxC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAevD,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
+ {"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
- /** Canonical model IDs for Claude Code */
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: "claude-opus-4-6",
4
- SONNET: "claude-sonnet-4-6",
5
- HAIKU: "claude-haiku-4-5",
11
+ OPUS: "opus",
12
+ SONNET: "sonnet",
13
+ HAIKU: "haiku",
6
14
  };
7
- /** Resolve a short alias or canonical ID to a full model string */
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 aliases = {
12
- opus: MODELS.OPUS,
13
- sonnet: MODELS.SONNET,
14
- haiku: MODELS.HAIKU,
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 tier */
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,0CAA0C;AAC1C,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,kBAAkB;CACjB,CAAA;AAEV,mEAAmE;AACnE,MAAM,UAAU,YAAY,CAAC,KAAyB;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC,MAAM,CAAA;IAChC,MAAM,OAAO,GAA2B;QACtC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAA;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAA;AAChC,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,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"}
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.8",
4
- "description": "Cthulhu-themed agentic harness for Claude Code — 11 Elder God agents, lifecycle hooks, skill system, and multi-tier orchestration.",
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
  },