@zhijiewang/openharness 0.2.1 → 0.3.1

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 (195) hide show
  1. package/README.md +65 -5
  2. package/dist/Tool.d.ts +10 -0
  3. package/dist/Tool.d.ts.map +1 -1
  4. package/dist/Tool.js.map +1 -1
  5. package/dist/commands/cybergotchi.d.ts +3 -0
  6. package/dist/commands/cybergotchi.d.ts.map +1 -0
  7. package/dist/commands/cybergotchi.js +75 -0
  8. package/dist/commands/cybergotchi.js.map +1 -0
  9. package/dist/commands/index.d.ts +6 -0
  10. package/dist/commands/index.d.ts.map +1 -1
  11. package/dist/commands/index.js +153 -29
  12. package/dist/commands/index.js.map +1 -1
  13. package/dist/components/App.d.ts +2 -1
  14. package/dist/components/App.d.ts.map +1 -1
  15. package/dist/components/App.js +2 -2
  16. package/dist/components/App.js.map +1 -1
  17. package/dist/components/CybergotchiBubble.d.ts +7 -0
  18. package/dist/components/CybergotchiBubble.d.ts.map +1 -0
  19. package/dist/components/CybergotchiBubble.js +27 -0
  20. package/dist/components/CybergotchiBubble.js.map +1 -0
  21. package/dist/components/CybergotchiPanel.d.ts +8 -0
  22. package/dist/components/CybergotchiPanel.d.ts.map +1 -0
  23. package/dist/components/CybergotchiPanel.js +15 -0
  24. package/dist/components/CybergotchiPanel.js.map +1 -0
  25. package/dist/components/CybergotchiSetup.d.ts +7 -0
  26. package/dist/components/CybergotchiSetup.d.ts.map +1 -0
  27. package/dist/components/CybergotchiSetup.js +88 -0
  28. package/dist/components/CybergotchiSetup.js.map +1 -0
  29. package/dist/components/CybergotchiSprite.d.ts +8 -0
  30. package/dist/components/CybergotchiSprite.d.ts.map +1 -0
  31. package/dist/components/CybergotchiSprite.js +20 -0
  32. package/dist/components/CybergotchiSprite.js.map +1 -0
  33. package/dist/components/InitWizard.d.ts +18 -0
  34. package/dist/components/InitWizard.d.ts.map +1 -0
  35. package/dist/components/InitWizard.js +161 -0
  36. package/dist/components/InitWizard.js.map +1 -0
  37. package/dist/components/Messages.js +4 -1
  38. package/dist/components/Messages.js.map +1 -1
  39. package/dist/components/REPL.d.ts.map +1 -1
  40. package/dist/components/REPL.js +165 -13
  41. package/dist/components/REPL.js.map +1 -1
  42. package/dist/components/ToolCallDisplay.d.ts +2 -0
  43. package/dist/components/ToolCallDisplay.d.ts.map +1 -1
  44. package/dist/components/ToolCallDisplay.js +8 -2
  45. package/dist/components/ToolCallDisplay.js.map +1 -1
  46. package/dist/cybergotchi/config.d.ts +5 -0
  47. package/dist/cybergotchi/config.d.ts.map +1 -0
  48. package/dist/cybergotchi/config.js +48 -0
  49. package/dist/cybergotchi/config.js.map +1 -0
  50. package/dist/cybergotchi/events.d.ts +15 -0
  51. package/dist/cybergotchi/events.d.ts.map +1 -0
  52. package/dist/cybergotchi/events.js +14 -0
  53. package/dist/cybergotchi/events.js.map +1 -0
  54. package/dist/cybergotchi/needs.d.ts +10 -0
  55. package/dist/cybergotchi/needs.d.ts.map +1 -0
  56. package/dist/cybergotchi/needs.js +83 -0
  57. package/dist/cybergotchi/needs.js.map +1 -0
  58. package/dist/cybergotchi/needs.test.d.ts +2 -0
  59. package/dist/cybergotchi/needs.test.d.ts.map +1 -0
  60. package/dist/cybergotchi/needs.test.js +150 -0
  61. package/dist/cybergotchi/needs.test.js.map +1 -0
  62. package/dist/cybergotchi/species.d.ts +11 -0
  63. package/dist/cybergotchi/species.d.ts.map +1 -0
  64. package/dist/cybergotchi/species.js +356 -0
  65. package/dist/cybergotchi/species.js.map +1 -0
  66. package/dist/cybergotchi/speech.d.ts +4 -0
  67. package/dist/cybergotchi/speech.d.ts.map +1 -0
  68. package/dist/cybergotchi/speech.js +80 -0
  69. package/dist/cybergotchi/speech.js.map +1 -0
  70. package/dist/cybergotchi/types.d.ts +39 -0
  71. package/dist/cybergotchi/types.d.ts.map +1 -0
  72. package/dist/cybergotchi/types.js +29 -0
  73. package/dist/cybergotchi/types.js.map +1 -0
  74. package/dist/cybergotchi/useCybergotchi.d.ts +10 -0
  75. package/dist/cybergotchi/useCybergotchi.d.ts.map +1 -0
  76. package/dist/cybergotchi/useCybergotchi.js +107 -0
  77. package/dist/cybergotchi/useCybergotchi.js.map +1 -0
  78. package/dist/git/git.test.d.ts +2 -0
  79. package/dist/git/git.test.d.ts.map +1 -0
  80. package/dist/git/git.test.js +109 -0
  81. package/dist/git/git.test.js.map +1 -0
  82. package/dist/git/index.d.ts.map +1 -1
  83. package/dist/git/index.js +21 -9
  84. package/dist/git/index.js.map +1 -1
  85. package/dist/harness/config.d.ts +21 -0
  86. package/dist/harness/config.d.ts.map +1 -0
  87. package/dist/harness/config.js +26 -0
  88. package/dist/harness/config.js.map +1 -0
  89. package/dist/harness/config.test.d.ts +2 -0
  90. package/dist/harness/config.test.d.ts.map +1 -0
  91. package/dist/harness/config.test.js +58 -0
  92. package/dist/harness/config.test.js.map +1 -0
  93. package/dist/harness/cost.d.ts +4 -0
  94. package/dist/harness/cost.d.ts.map +1 -1
  95. package/dist/harness/cost.js +20 -0
  96. package/dist/harness/cost.js.map +1 -1
  97. package/dist/main.js +110 -21
  98. package/dist/main.js.map +1 -1
  99. package/dist/mcp/McpTool.d.ts +19 -0
  100. package/dist/mcp/McpTool.d.ts.map +1 -0
  101. package/dist/mcp/McpTool.js +40 -0
  102. package/dist/mcp/McpTool.js.map +1 -0
  103. package/dist/mcp/client.d.ts +16 -0
  104. package/dist/mcp/client.d.ts.map +1 -0
  105. package/dist/mcp/client.js +78 -0
  106. package/dist/mcp/client.js.map +1 -0
  107. package/dist/mcp/loader.d.ts +8 -0
  108. package/dist/mcp/loader.d.ts.map +1 -0
  109. package/dist/mcp/loader.js +41 -0
  110. package/dist/mcp/loader.js.map +1 -0
  111. package/dist/mcp/types.d.ts +29 -0
  112. package/dist/mcp/types.d.ts.map +1 -0
  113. package/dist/mcp/types.js +3 -0
  114. package/dist/mcp/types.js.map +1 -0
  115. package/dist/providers/anthropic.d.ts.map +1 -1
  116. package/dist/providers/anthropic.js +17 -6
  117. package/dist/providers/anthropic.js.map +1 -1
  118. package/dist/providers/index.d.ts +4 -2
  119. package/dist/providers/index.d.ts.map +1 -1
  120. package/dist/providers/index.js +4 -2
  121. package/dist/providers/index.js.map +1 -1
  122. package/dist/providers/ollama.d.ts +1 -0
  123. package/dist/providers/ollama.d.ts.map +1 -1
  124. package/dist/providers/ollama.js +21 -31
  125. package/dist/providers/ollama.js.map +1 -1
  126. package/dist/providers/openai.d.ts.map +1 -1
  127. package/dist/providers/openai.js +16 -5
  128. package/dist/providers/openai.js.map +1 -1
  129. package/dist/query.d.ts +1 -0
  130. package/dist/query.d.ts.map +1 -1
  131. package/dist/query.js +59 -12
  132. package/dist/query.js.map +1 -1
  133. package/dist/services/StreamingToolExecutor.d.ts +4 -0
  134. package/dist/services/StreamingToolExecutor.d.ts.map +1 -1
  135. package/dist/services/StreamingToolExecutor.js +10 -3
  136. package/dist/services/StreamingToolExecutor.js.map +1 -1
  137. package/dist/tools/AgentTool/index.d.ts.map +1 -1
  138. package/dist/tools/AgentTool/index.js +51 -9
  139. package/dist/tools/AgentTool/index.js.map +1 -1
  140. package/dist/tools/AskUserTool/index.d.ts.map +1 -1
  141. package/dist/tools/AskUserTool/index.js +11 -5
  142. package/dist/tools/AskUserTool/index.js.map +1 -1
  143. package/dist/tools/BashTool/index.d.ts.map +1 -1
  144. package/dist/tools/BashTool/index.js +10 -2
  145. package/dist/tools/BashTool/index.js.map +1 -1
  146. package/dist/tools/GrepTool/index.d.ts.map +1 -1
  147. package/dist/tools/GrepTool/index.js +34 -15
  148. package/dist/tools/GrepTool/index.js.map +1 -1
  149. package/dist/tools/ImageReadTool/index.d.ts +13 -0
  150. package/dist/tools/ImageReadTool/index.d.ts.map +1 -0
  151. package/dist/tools/ImageReadTool/index.js +59 -0
  152. package/dist/tools/ImageReadTool/index.js.map +1 -0
  153. package/dist/tools/LSTool/index.d.ts +12 -0
  154. package/dist/tools/LSTool/index.d.ts.map +1 -0
  155. package/dist/tools/LSTool/index.js +70 -0
  156. package/dist/tools/LSTool/index.js.map +1 -0
  157. package/dist/tools.d.ts.map +1 -1
  158. package/dist/tools.js +4 -0
  159. package/dist/tools.js.map +1 -1
  160. package/dist/types/events.d.ts +12 -1
  161. package/dist/types/events.d.ts.map +1 -1
  162. package/dist/types/message.d.ts +6 -1
  163. package/dist/types/message.d.ts.map +1 -1
  164. package/dist/types/message.js +3 -0
  165. package/dist/types/message.js.map +1 -1
  166. package/dist/types/permissions.d.ts +1 -1
  167. package/dist/types/permissions.d.ts.map +1 -1
  168. package/dist/types/permissions.js.map +1 -1
  169. package/package.json +7 -1
  170. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -27
  171. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -17
  172. package/.github/pull_request_template.md +0 -24
  173. package/.github/workflows/ci.yml +0 -31
  174. package/CHANGELOG.md +0 -18
  175. package/CODE_OF_CONDUCT.md +0 -43
  176. package/CONTRIBUTING.md +0 -55
  177. package/SECURITY.md +0 -21
  178. package/data/models.json +0 -74
  179. package/data/prompts/system.md +0 -25
  180. package/data/skills/code-review.md +0 -19
  181. package/data/skills/commit.md +0 -17
  182. package/data/skills/debug.md +0 -24
  183. package/data/skills/tdd.md +0 -22
  184. package/dist/components/StatusBar.d.ts +0 -7
  185. package/dist/components/StatusBar.d.ts.map +0 -1
  186. package/dist/components/StatusBar.js +0 -6
  187. package/dist/components/StatusBar.js.map +0 -1
  188. package/dist/utils/retry.d.ts +0 -10
  189. package/dist/utils/retry.d.ts.map +0 -1
  190. package/dist/utils/retry.js +0 -23
  191. package/dist/utils/retry.js.map +0 -1
  192. package/dist/utils/tokens.d.ts +0 -18
  193. package/dist/utils/tokens.d.ts.map +0 -1
  194. package/dist/utils/tokens.js +0 -57
  195. package/dist/utils/tokens.js.map +0 -1
package/README.md CHANGED
@@ -37,6 +37,7 @@ oh
37
37
  That's it. OpenHarness auto-detects Ollama and starts chatting. No API key needed.
38
38
 
39
39
  ```bash
40
+ oh init # interactive setup wizard (provider + cybergotchi)
40
41
  oh # auto-detect local model
41
42
  oh --model ollama/qwen2.5:7b # specific model
42
43
  oh --model gpt-4o # cloud model (needs OPENAI_API_KEY)
@@ -52,7 +53,7 @@ Most AI coding agents are locked to one provider or cost $20+/month. OpenHarness
52
53
  |---|---|---|---|---|
53
54
  | Any LLM | Yes (Ollama, OpenAI, Anthropic, OpenRouter, any OpenAI-compatible) | Anthropic only | Yes | Yes |
54
55
  | Free local models | Ollama native | No | Yes | Yes |
55
- | Tools | 17 with permission gates | 40+ | File-focused | 20+ |
56
+ | Tools | 18 with permission gates | 40+ | File-focused | 20+ |
56
57
  | Git integration | Auto-commit + /undo | Yes | Deep git | Basic |
57
58
  | Slash commands | 16 built-in | 80+ | Some | Some |
58
59
  | Headless/CI mode | `oh run --json` | Yes | Yes | Yes |
@@ -61,16 +62,18 @@ Most AI coding agents are locked to one provider or cost $20+/month. OpenHarness
61
62
  | License | MIT | Proprietary | Apache 2.0 | MIT |
62
63
  | Price | Free (BYOK) | $20+/month | Free (BYOK) | Free (BYOK) |
63
64
 
64
- ## Tools (17)
65
+ ## Tools (18)
65
66
 
66
67
  | Tool | Risk | Description |
67
68
  |------|------|-------------|
68
- | Bash | high | Execute shell commands with timeout |
69
+ | Bash | high | Execute shell commands with live streaming output |
69
70
  | Read | low | Read files with line ranges |
71
+ | ImageRead | low | Read images/PDFs for multimodal analysis |
70
72
  | Write | medium | Create or overwrite files |
71
73
  | Edit | medium | Search-and-replace edits |
72
74
  | Glob | low | Find files by pattern |
73
75
  | Grep | low | Regex content search |
76
+ | LS | low | List directory contents with sizes |
74
77
  | WebFetch | medium | Fetch URL content (SSRF-protected) |
75
78
  | WebSearch | medium | Search the web |
76
79
  | TaskCreate | low | Create structured tasks |
@@ -85,7 +88,7 @@ Most AI coding agents are locked to one provider or cost $20+/month. OpenHarness
85
88
 
86
89
  Low-risk read-only tools auto-approve. Medium and high risk tools require confirmation in `ask` mode. Use `--trust` to skip all prompts.
87
90
 
88
- ## Slash Commands (16)
91
+ ## Slash Commands (18)
89
92
 
90
93
  Type these during a chat session:
91
94
 
@@ -94,11 +97,12 @@ Type these during a chat session:
94
97
  | `/help` | Show all available commands |
95
98
  | `/clear` | Clear conversation history |
96
99
  | `/cost` | Show session cost and token usage |
97
- | `/status` | Show model, mode, git branch, session info |
100
+ | `/status` | Show model, mode, git branch, MCP servers |
98
101
  | `/diff` | Show uncommitted git changes |
99
102
  | `/undo` | Undo last AI commit |
100
103
  | `/commit [msg]` | Create a git commit |
101
104
  | `/log` | Show recent git commits |
105
+ | `/history [n]` | List recent sessions; `/history search <term>` to search |
102
106
  | `/files` | List files in context |
103
107
  | `/model <name>` | Switch model mid-session |
104
108
  | `/compact` | Compress conversation to free context |
@@ -107,6 +111,56 @@ Type these during a chat session:
107
111
  | `/review` | Review recent code changes |
108
112
  | `/config` | Show configuration |
109
113
  | `/memory` | View memories |
114
+ | `/cybergotchi` | Feed, pet, rest, status, rename, or reset your companion |
115
+
116
+ ## Cybergotchi
117
+
118
+ OpenHarness ships with a Tamagotchi-style companion that lives in the side panel. It reacts to your session in real time — celebrating streaks, complaining when tools fail, and getting hungry if you ignore it.
119
+
120
+ **Hatch one:**
121
+ ```
122
+ oh init # wizard includes cybergotchi setup
123
+ /cybergotchi # or hatch mid-session
124
+ ```
125
+
126
+ **Commands:**
127
+ ```
128
+ /cybergotchi feed # +30 hunger
129
+ /cybergotchi pet # +20 happiness
130
+ /cybergotchi rest # +40 energy
131
+ /cybergotchi status # show needs + lifetime stats
132
+ /cybergotchi rename # give it a new name
133
+ /cybergotchi reset # start over with a new species
134
+ ```
135
+
136
+ **Needs** decay over time (hunger fastest, happiness slowest). Feed and pet your gotchi to keep it happy.
137
+
138
+ **Evolution** — your gotchi evolves based on lifetime milestones:
139
+ - Stage 1 (✦ magenta): 10 sessions or 50 commits
140
+ - Stage 2 (★ yellow + crown): 100 tasks completed or a 25-tool streak
141
+
142
+ **18 species** to choose from: duck, cat, owl, penguin, rabbit, turtle, snail, octopus, axolotl, cactus, mushroom, chonk, capybara, goose, and more.
143
+
144
+ ## MCP Servers
145
+
146
+ Connect any MCP (Model Context Protocol) server by editing `.oh/config.yaml`:
147
+
148
+ ```yaml
149
+ provider: anthropic
150
+ model: claude-sonnet-4-6
151
+ permissionMode: ask
152
+ mcpServers:
153
+ - name: filesystem
154
+ command: npx
155
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
156
+ - name: github
157
+ command: npx
158
+ args: ["-y", "@modelcontextprotocol/server-github"]
159
+ env:
160
+ GITHUB_PERSONAL_ACCESS_TOKEN: ghp_...
161
+ ```
162
+
163
+ MCP tools appear alongside built-in tools. `/status` shows connected servers.
110
164
 
111
165
  ## Git Integration
112
166
 
@@ -130,6 +184,12 @@ Run a single prompt without interactive UI — perfect for CI/CD:
130
184
  oh run "fix the failing tests" --model ollama/llama3 --trust
131
185
  oh run "add error handling to api.ts" --json # JSON output
132
186
  oh run "explain this codebase" --model gpt-4o
187
+
188
+ # Pipe stdin — prompt from stdin, or prepend context
189
+ cat error.log | oh run "what's wrong here?"
190
+ git diff | oh run "review these changes"
191
+ oh run - < prompt.txt # read full prompt from file
192
+ oh run "fix this:" < broken.py # prepend arg, append stdin
133
193
  ```
134
194
 
135
195
  Exit code 0 on success, 1 on failure.
package/dist/Tool.d.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import type { z } from "zod";
6
6
  import type { RiskLevel } from "./types/permissions.js";
7
+ import type { Provider } from "./providers/base.js";
7
8
  export type ToolResult = {
8
9
  output: string;
9
10
  isError: boolean;
@@ -11,6 +12,15 @@ export type ToolResult = {
11
12
  export type ToolContext = {
12
13
  workingDir: string;
13
14
  abortSignal?: AbortSignal;
15
+ callId?: string;
16
+ onOutputChunk?: (callId: string, chunk: string) => void;
17
+ /** Available for sub-agent tools (AgentTool) */
18
+ provider?: Provider;
19
+ model?: string;
20
+ tools?: Tool[];
21
+ systemPrompt?: string;
22
+ /** Ask the user a question; resolves with their answer string */
23
+ askUserQuestion?: (question: string, options?: string[]) => Promise<string>;
14
24
  };
15
25
  export type Tool<Input extends z.ZodType = z.ZodType> = {
16
26
  readonly name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../src/Tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B,8DAA8D;IAC9D,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAE3C,8DAA8D;IAC9D,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAElD,wBAAwB;IACxB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvE,mDAAmD;IACnD,MAAM,IAAI,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;AAE3B;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG;IAC3C,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;CACtE,CASA;AA4CD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAE3E"}
1
+ {"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../src/Tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,gDAAgD;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7E,CAAC;AAEF,MAAM,MAAM,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B,8DAA8D;IAC9D,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAE3C,8DAA8D;IAC9D,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAElD,wBAAwB;IACxB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvE,mDAAmD;IACnD,MAAM,IAAI,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;AAE3B;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG;IAC3C,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;CACtE,CASA;AA4CD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAE3E"}
package/dist/Tool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Tool.js","sourceRoot":"","sources":["../src/Tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoCH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAU;IAIxC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;YAC1B,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,MAAiB;IACxC,wDAAwD;IACxD,MAAM,GAAG,GAAI,MAAc,CAAC,IAAI,CAAC;IAEjC,IAAI,GAAG,EAAE,QAAQ,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAI,MAA2B,CAAC,KAAK,CAAC;QACjD,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,KAAkB,CAAC;YACjC,MAAM,QAAQ,GAAI,KAAa,CAAC,IAAI,CAAC;YAErC,IAAI,QAAQ,EAAE,QAAQ,KAAK,aAAa,EAAE,CAAC;gBACzC,UAAU,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBACzC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YAED,6BAA6B;YAC7B,IAAK,KAAa,CAAC,WAAW,EAAE,CAAC;gBAC9B,UAAU,CAAC,GAAG,CAAS,CAAC,WAAW,GAAI,KAAa,CAAC,WAAW,CAAC;YACpE,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,GAAG,EAAE,QAAQ,KAAK,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC7D,IAAI,GAAG,EAAE,QAAQ,KAAK,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC7D,IAAI,GAAG,EAAE,QAAQ,KAAK,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC/D,IAAI,GAAG,EAAE,QAAQ,KAAK,UAAU;QAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAE7D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,WAAW;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,IAAY;IACvD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"Tool.js","sourceRoot":"","sources":["../src/Tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8CH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAU;IAIxC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;YAC1B,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,MAAiB;IACxC,wDAAwD;IACxD,MAAM,GAAG,GAAI,MAAc,CAAC,IAAI,CAAC;IAEjC,IAAI,GAAG,EAAE,QAAQ,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAI,MAA2B,CAAC,KAAK,CAAC;QACjD,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,KAAkB,CAAC;YACjC,MAAM,QAAQ,GAAI,KAAa,CAAC,IAAI,CAAC;YAErC,IAAI,QAAQ,EAAE,QAAQ,KAAK,aAAa,EAAE,CAAC;gBACzC,UAAU,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBACzC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YAED,6BAA6B;YAC7B,IAAK,KAAa,CAAC,WAAW,EAAE,CAAC;gBAC9B,UAAU,CAAC,GAAG,CAAS,CAAC,WAAW,GAAI,KAAa,CAAC,WAAW,CAAC;YACpE,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,GAAG,EAAE,QAAQ,KAAK,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC7D,IAAI,GAAG,EAAE,QAAQ,KAAK,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC7D,IAAI,GAAG,EAAE,QAAQ,KAAK,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC/D,IAAI,GAAG,EAAE,QAAQ,KAAK,UAAU;QAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAE7D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,WAAW;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,IAAY;IACvD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CommandResult } from './index.js';
2
+ export declare function handleCybergotchiCommand(args: string): CommandResult;
3
+ //# sourceMappingURL=cybergotchi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cybergotchi.d.ts","sourceRoot":"","sources":["../../src/commands/cybergotchi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAShD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CA2EpE"}
@@ -0,0 +1,75 @@
1
+ import { loadCybergotchiConfig, saveCybergotchiConfig } from '../cybergotchi/config.js';
2
+ import { adjustNeed } from '../cybergotchi/needs.js';
3
+ function needsBar(value) {
4
+ const filled = Math.round(value / 10);
5
+ return '█'.repeat(filled) + '░'.repeat(10 - filled) + ' ' + String(Math.round(value)).padStart(3);
6
+ }
7
+ export function handleCybergotchiCommand(args) {
8
+ const config = loadCybergotchiConfig();
9
+ if (!config) {
10
+ return { output: '', handled: true, openCybergotchiSetup: true };
11
+ }
12
+ const sub = args.trim().toLowerCase();
13
+ if (sub === 'feed') {
14
+ adjustNeed(config, 'hunger', 30);
15
+ saveCybergotchiConfig(config);
16
+ return { output: `${config.name} munches happily! 🍖 Hunger: ${Math.round(config.needs.hunger)}`, handled: true };
17
+ }
18
+ if (sub === 'pet') {
19
+ adjustNeed(config, 'happiness', 20);
20
+ saveCybergotchiConfig(config);
21
+ return { output: `${config.name} purrs with joy! 💛 Happiness: ${Math.round(config.needs.happiness)}`, handled: true };
22
+ }
23
+ if (sub === 'rest') {
24
+ adjustNeed(config, 'energy', 40);
25
+ saveCybergotchiConfig(config);
26
+ return { output: `${config.name} takes a nap... ⚡ Energy: ${Math.round(config.needs.energy)}`, handled: true };
27
+ }
28
+ if (sub === 'status') {
29
+ const { hunger, energy, happiness } = config.needs;
30
+ const { totalSessions, totalCommits, totalErrors, totalTasksCompleted, longestStreak } = config.lifetime;
31
+ const lines = [
32
+ `${config.name} (${config.species})`,
33
+ '',
34
+ `🍖 Hunger ${needsBar(hunger)}`,
35
+ `⚡ Energy ${needsBar(energy)}`,
36
+ `💛 Happiness ${needsBar(happiness)}`,
37
+ `🔥 Streak ${config.currentStreak} (best: ${longestStreak})`,
38
+ '',
39
+ 'Lifetime:',
40
+ ` Sessions: ${totalSessions}`,
41
+ ` Commits: ${totalCommits}`,
42
+ ` Errors: ${totalErrors}`,
43
+ ` Tasks: ${totalTasksCompleted}`,
44
+ ];
45
+ return { output: lines.join('\n'), handled: true };
46
+ }
47
+ if (sub.startsWith('rename ')) {
48
+ const newName = args.trim().slice(7).trim();
49
+ if (!newName)
50
+ return { output: 'Usage: /cybergotchi rename <name>', handled: true };
51
+ config.name = newName;
52
+ saveCybergotchiConfig(config);
53
+ return { output: `Renamed to ${newName}!`, handled: true };
54
+ }
55
+ if (sub === 'reset') {
56
+ return { output: '', handled: true, openCybergotchiSetup: true };
57
+ }
58
+ // Default: show summary
59
+ const statLines = Object.entries(config.stats)
60
+ .map(([k, v]) => ` ${k.padEnd(12)} ${'█'.repeat(Math.round(v / 10))}${'░'.repeat(10 - Math.round(v / 10))} ${v}`)
61
+ .join('\n');
62
+ return {
63
+ output: [
64
+ `${config.name} (${config.species}) | hat: ${config.hat}`,
65
+ `🍖 ${Math.round(config.needs.hunger)} ⚡ ${Math.round(config.needs.energy)} 💛 ${Math.round(config.needs.happiness)} 🔥 ${config.currentStreak}`,
66
+ '',
67
+ 'Personality stats:',
68
+ statLines,
69
+ '',
70
+ 'Commands: feed · pet · rest · status · rename <name> · reset',
71
+ ].join('\n'),
72
+ handled: true,
73
+ };
74
+ }
75
+ //# sourceMappingURL=cybergotchi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cybergotchi.js","sourceRoot":"","sources":["../../src/commands/cybergotchi.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,12 @@ export type CommandResult = {
16
16
  newModel?: string;
17
17
  /** If set, replace messages with compacted version */
18
18
  compactedMessages?: Message[];
19
+ /** If true, open the cybergotchi setup UI */
20
+ openCybergotchiSetup?: boolean;
21
+ /** If set, resume this session ID */
22
+ resumeSessionId?: string;
23
+ /** If set, prepend this text to the user's prompt before sending to LLM */
24
+ prependToPrompt?: string;
19
25
  };
20
26
  export type CommandContext = {
21
27
  messages: Message[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG;IAC1B,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC;CAC/B,CAAC;AAIF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AA4KF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,GAAG,IAAI,CAiBhG;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQnD,MAAM,MAAM,aAAa,GAAG;IAC1B,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC9B,6CAA6C;IAC7C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAIF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAkSF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,GAAG,IAAI,CAiBhG;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
@@ -4,9 +4,15 @@
4
4
  * Commands are processed in the REPL before being sent to the LLM.
5
5
  * If input starts with /, it's treated as a command.
6
6
  */
7
- import { writeFileSync, mkdirSync } from "node:fs";
7
+ import { writeFileSync, mkdirSync, readFileSync, existsSync, readdirSync } from "node:fs";
8
8
  import { dirname } from "node:path";
9
9
  import { isGitRepo, gitDiff, gitUndo, gitCommit, gitLog, gitBranch } from "../git/index.js";
10
+ import { handleCybergotchiCommand } from "./cybergotchi.js";
11
+ import { connectedMcpServers } from "../mcp/loader.js";
12
+ import { listSessions, loadSession } from "../harness/session.js";
13
+ import { readOhConfig } from "../harness/config.js";
14
+ import { homedir } from "node:os";
15
+ import { join } from "node:path";
10
16
  const commands = new Map();
11
17
  function register(name, description, handler) {
12
18
  commands.set(name, { description, handler });
@@ -42,6 +48,10 @@ register("status", "Show session status", (_args, ctx) => {
42
48
  if (isGitRepo()) {
43
49
  lines.push(`Git branch: ${gitBranch()}`);
44
50
  }
51
+ const mcp = connectedMcpServers();
52
+ if (mcp.length > 0) {
53
+ lines.push(`MCP servers: ${mcp.join(', ')}`);
54
+ }
45
55
  return { output: lines.join("\n"), handled: true };
46
56
  });
47
57
  register("diff", "Show uncommitted git changes", () => {
@@ -75,6 +85,52 @@ register("log", "Show recent git commits", () => {
75
85
  }
76
86
  return { output: gitLog(10) || "No commits yet.", handled: true };
77
87
  });
88
+ register("history", "List recent sessions or search across them", (args) => {
89
+ const parts = args.trim().split(/\s+/);
90
+ const sessionDir = join(homedir(), ".oh", "sessions");
91
+ if (parts[0] === "search" && parts[1]) {
92
+ const term = parts.slice(1).join(" ").toLowerCase();
93
+ const sessions = listSessions(sessionDir);
94
+ const matches = [];
95
+ for (const s of sessions) {
96
+ try {
97
+ const full = loadSession(s.id, sessionDir);
98
+ const hit = full.messages.find(m => typeof m.content === "string" && m.content.toLowerCase().includes(term));
99
+ if (hit) {
100
+ const date = new Date(s.updatedAt).toLocaleDateString();
101
+ matches.push(` ${s.id} ${date} ${s.model || "?"}`);
102
+ }
103
+ }
104
+ catch { /* skip */ }
105
+ }
106
+ if (matches.length === 0)
107
+ return { output: `No sessions matching "${term}".`, handled: true };
108
+ return { output: `Sessions matching "${term}":\n${matches.join("\n")}`, handled: true };
109
+ }
110
+ const n = parseInt(parts[0] ?? "10", 10) || 10;
111
+ const sessions = listSessions(sessionDir).slice(0, n);
112
+ if (sessions.length === 0)
113
+ return { output: "No saved sessions.", handled: true };
114
+ const lines = sessions.map(s => {
115
+ const date = new Date(s.updatedAt).toLocaleDateString();
116
+ const cost = s.cost > 0 ? ` $${s.cost.toFixed(4)}` : "";
117
+ return ` ${s.id} ${date} ${String(s.messages).padStart(3)} msgs ${(s.model || "?").slice(0, 24)}${cost}`;
118
+ });
119
+ return { output: `Recent sessions (use /resume <id> to continue):\n${lines.join("\n")}`, handled: true };
120
+ });
121
+ register("resume", "Resume a saved session by ID", (args) => {
122
+ const id = args.trim();
123
+ if (!id)
124
+ return { output: "Usage: /resume <session-id>", handled: true };
125
+ const sessionDir = join(homedir(), ".oh", "sessions");
126
+ try {
127
+ loadSession(id, sessionDir); // validate it exists
128
+ return { output: `Resuming session ${id}...`, handled: true, resumeSessionId: id };
129
+ }
130
+ catch {
131
+ return { output: `Session not found: ${id}`, handled: true };
132
+ }
133
+ });
78
134
  register("files", "List files in context", (_args, ctx) => {
79
135
  const files = new Set();
80
136
  for (const msg of ctx.messages) {
@@ -99,29 +155,16 @@ register("model", "Switch model (e.g., /model gpt-4o)", (args) => {
99
155
  });
100
156
  register("compact", "Compress conversation history", (_args, ctx) => {
101
157
  const before = ctx.messages.length;
102
- // Keep system messages + last 10 messages, truncate old tool results
103
- const compacted = [];
104
158
  const keepLast = 10;
105
159
  const messages = ctx.messages;
106
- for (let i = 0; i < messages.length; i++) {
107
- const msg = messages[i];
108
- const isRecent = i >= messages.length - keepLast;
109
- if (msg.role === "system") {
110
- compacted.push(msg);
111
- }
112
- else if (isRecent) {
113
- compacted.push(msg);
114
- }
115
- else if (msg.role === "tool") {
116
- // Truncate old tool results
117
- compacted.push({ ...msg, content: "[compacted]" });
118
- }
119
- else {
120
- compacted.push(msg);
121
- }
122
- }
160
+ // Keep system messages + the most recent keepLast non-system messages
161
+ const systemMsgs = messages.filter(m => m.role === "system");
162
+ const nonSystem = messages.filter(m => m.role !== "system");
163
+ const kept = nonSystem.slice(-keepLast);
164
+ const compacted = [...systemMsgs, ...kept];
165
+ const dropped = before - compacted.length;
123
166
  return {
124
- output: `Compacted: ${before} → ${compacted.length} messages. Old tool results truncated.`,
167
+ output: `Compacted: ${before} → ${compacted.length} messages (dropped ${dropped} older turns).`,
125
168
  handled: true,
126
169
  compactedMessages: compacted,
127
170
  };
@@ -141,14 +184,91 @@ register("export", "Export conversation to file", (_args, ctx) => {
141
184
  return { output: `Export failed. Content:\n\n${lines.slice(0, 500)}`, handled: true };
142
185
  }
143
186
  });
144
- register("config", "Show current configuration", () => {
145
- return { output: "Use: oh config show (in a new terminal)", handled: true };
187
+ register("config", "Show current configuration", (_args, ctx) => {
188
+ const saved = readOhConfig();
189
+ const lines = ["Configuration:"];
190
+ if (saved) {
191
+ lines.push(` Provider: ${saved.provider}`);
192
+ lines.push(` Model: ${saved.model}`);
193
+ lines.push(` Permission: ${saved.permissionMode}`);
194
+ if (saved.baseUrl)
195
+ lines.push(` Base URL: ${saved.baseUrl}`);
196
+ if (saved.apiKey)
197
+ lines.push(` API key: ${"*".repeat(8)}...`);
198
+ lines.push(` Source: .oh/config.yaml`);
199
+ }
200
+ else {
201
+ lines.push(` No .oh/config.yaml found — run oh init to create one`);
202
+ }
203
+ lines.push("");
204
+ lines.push(` Active model: ${ctx.model}`);
205
+ lines.push(` Permission mode: ${ctx.permissionMode}`);
206
+ const mcp = connectedMcpServers();
207
+ if (mcp.length > 0)
208
+ lines.push(` MCP servers: ${mcp.join(", ")}`);
209
+ return { output: lines.join("\n"), handled: true };
210
+ });
211
+ register("memory", "View and search memories in .oh/memory/", (args) => {
212
+ const memDir = join(process.cwd(), ".oh", "memory");
213
+ if (!existsSync(memDir)) {
214
+ return { output: "No .oh/memory/ directory found. Memories are stored there by the AI.", handled: true };
215
+ }
216
+ const term = args.trim().toLowerCase();
217
+ let files;
218
+ try {
219
+ files = readdirSync(memDir).filter(f => f.endsWith(".md"));
220
+ }
221
+ catch {
222
+ return { output: "Could not read .oh/memory/", handled: true };
223
+ }
224
+ if (files.length === 0)
225
+ return { output: "No memories stored yet.", handled: true };
226
+ if (term) {
227
+ // Search mode
228
+ const matches = [];
229
+ for (const file of files) {
230
+ try {
231
+ const content = readFileSync(join(memDir, file), "utf-8");
232
+ if (content.toLowerCase().includes(term)) {
233
+ const firstLine = content.split("\n").find(l => l.trim() && !l.startsWith("---")) ?? file;
234
+ matches.push(` ${file.padEnd(30)} ${firstLine.slice(0, 50)}`);
235
+ }
236
+ }
237
+ catch { /* skip */ }
238
+ }
239
+ if (matches.length === 0)
240
+ return { output: `No memories matching "${term}".`, handled: true };
241
+ return { output: `Memories matching "${term}":\n${matches.join("\n")}`, handled: true };
242
+ }
243
+ // List mode
244
+ const lines = [`Memories (${files.length}) — use /memory <term> to search:\n`];
245
+ for (const file of files) {
246
+ try {
247
+ const content = readFileSync(join(memDir, file), "utf-8");
248
+ const nameLine = content.match(/^name:\s*(.+)$/m)?.[1] ?? file.replace(".md", "");
249
+ const typeLine = content.match(/^type:\s*(.+)$/m)?.[1] ?? "?";
250
+ const descLine = content.match(/^description:\s*(.+)$/m)?.[1] ?? "";
251
+ lines.push(` [${typeLine.padEnd(8)}] ${nameLine.padEnd(24)} ${descLine.slice(0, 40)}`);
252
+ }
253
+ catch {
254
+ lines.push(` ${file}`);
255
+ }
256
+ }
257
+ return { output: lines.join("\n"), handled: true };
146
258
  });
147
- register("memory", "View memories", () => {
148
- return { output: "Use: oh memory (in a new terminal)", handled: true };
259
+ register("cybergotchi", "Manage your cybergotchi — feed · pet · rest · status · rename · reset", (args) => {
260
+ return handleCybergotchiCommand(args);
149
261
  });
150
- register("plan", "Enter plan mode", () => {
151
- return { output: "Plan mode: describe what you want to build. I'll create a plan before implementing.", handled: false };
262
+ register("plan", "Enter plan mode", (_args, _ctx) => {
263
+ const task = _args.trim();
264
+ if (!task) {
265
+ return { output: "Usage: /plan <what you want to build>", handled: true };
266
+ }
267
+ return {
268
+ output: `[plan mode] ${task}`,
269
+ handled: false,
270
+ prependToPrompt: `You are in PLAN MODE. Do NOT write any code yet. Instead, produce a detailed implementation plan as a numbered list covering: files to create/modify, key functions/types, data flow, and edge cases. Only after the plan is approved should you implement anything.\n\nTask: ${task}`,
271
+ };
152
272
  });
153
273
  register("review", "Review recent code changes", () => {
154
274
  if (!isGitRepo()) {
@@ -157,8 +277,12 @@ register("review", "Review recent code changes", () => {
157
277
  const diff = gitDiff();
158
278
  if (!diff)
159
279
  return { output: "No changes to review.", handled: true };
160
- // Pass to LLM for review
161
- return { output: "", handled: false };
280
+ const lines = diff.split("\n").length;
281
+ return {
282
+ output: `[review] ${lines} lines of diff`,
283
+ handled: false,
284
+ prependToPrompt: `Review these uncommitted changes and give feedback on correctness, style, and potential issues:\n\n\`\`\`diff\n${diff}\n\`\`\`\n\n`,
285
+ };
162
286
  });
163
287
  // ── Command Parser ──
164
288
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,9 @@ type AppProps = {
9
9
  systemPrompt?: string;
10
10
  model?: string;
11
11
  initialMessages?: Message[];
12
+ resumeSessionId?: string;
12
13
  };
13
14
  declare const DEFAULT_SYSTEM_PROMPT = "You are OpenHarness, an AI coding assistant running in the user's terminal.\nYou have access to tools for reading, writing, and editing files, running shell commands, and searching the codebase.\nBe concise. Use tools proactively to help the user.";
14
- export default function App({ provider, tools, permissionMode, systemPrompt, model, initialMessages, }: AppProps): import("react/jsx-runtime").JSX.Element;
15
+ export default function App({ provider, tools, permissionMode, systemPrompt, model, initialMessages, resumeSessionId, }: AppProps): import("react/jsx-runtime").JSX.Element;
15
16
  export { DEFAULT_SYSTEM_PROMPT };
16
17
  //# sourceMappingURL=App.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/components/App.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAOnD,KAAK,QAAQ,GAAG;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;CAC7B,CAAC;AAEF,QAAA,MAAM,qBAAqB,4PAEyB,CAAC;AAErD,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,cAAc,EACd,YAAY,EACZ,KAAK,EACL,eAAe,GAChB,EAAE,QAAQ,2CA4BV;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/components/App.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAOnD,KAAK,QAAQ,GAAG;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,QAAA,MAAM,qBAAqB,4PAEyB,CAAC;AAErD,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,cAAc,EACd,YAAY,EACZ,KAAK,EACL,eAAe,EACf,eAAe,GAChB,EAAE,QAAQ,2CA6BV;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -8,7 +8,7 @@ import REPL from "./REPL.js";
8
8
  const DEFAULT_SYSTEM_PROMPT = `You are OpenHarness, an AI coding assistant running in the user's terminal.
9
9
  You have access to tools for reading, writing, and editing files, running shell commands, and searching the codebase.
10
10
  Be concise. Use tools proactively to help the user.`;
11
- export default function App({ provider, tools, permissionMode, systemPrompt, model, initialMessages, }) {
11
+ export default function App({ provider, tools, permissionMode, systemPrompt, model, initialMessages, resumeSessionId, }) {
12
12
  const fullSystemPrompt = useMemo(() => {
13
13
  const parts = [systemPrompt || DEFAULT_SYSTEM_PROMPT];
14
14
  const projectCtx = detectProject();
@@ -20,7 +20,7 @@ export default function App({ provider, tools, permissionMode, systemPrompt, mod
20
20
  parts.push(rulesPrompt);
21
21
  return parts.join("\n\n");
22
22
  }, [systemPrompt]);
23
- return (_jsx(ThemeProvider, { value: darkTheme, children: _jsx(ErrorBoundary, { children: _jsx(REPL, { provider: provider, tools: tools, permissionMode: permissionMode, systemPrompt: fullSystemPrompt, model: model, initialMessages: initialMessages }) }) }));
23
+ return (_jsx(ThemeProvider, { value: darkTheme, children: _jsx(ErrorBoundary, { children: _jsx(REPL, { provider: provider, tools: tools, permissionMode: permissionMode, systemPrompt: fullSystemPrompt, model: model, initialMessages: initialMessages, resumeSessionId: resumeSessionId }) }) }));
24
24
  }
25
25
  export { DEFAULT_SYSTEM_PROMPT };
26
26
  //# sourceMappingURL=App.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/components/App.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAW7B,MAAM,qBAAqB,GAAG;;oDAEsB,CAAC;AAErD,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,cAAc,EACd,YAAY,EACZ,KAAK,EACL,eAAe,GACN;IACT,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,MAAM,KAAK,GAAa,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC;QAEhE,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,aAAa;YAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACxC,IAAI,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,CACL,KAAC,aAAa,IAAC,KAAK,EAAE,SAAS,YAC7B,KAAC,aAAa,cACZ,KAAC,IAAI,IACH,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,GAChC,GACY,GACF,CACjB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/components/App.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAY7B,MAAM,qBAAqB,GAAG;;oDAEsB,CAAC;AAErD,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,cAAc,EACd,YAAY,EACZ,KAAK,EACL,eAAe,EACf,eAAe,GACN;IACT,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,MAAM,KAAK,GAAa,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC;QAEhE,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,aAAa;YAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACxC,IAAI,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,CACL,KAAC,aAAa,IAAC,KAAK,EAAE,SAAS,YAC7B,KAAC,aAAa,cACZ,KAAC,IAAI,IACH,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,eAAe,GAChC,GACY,GACF,CACjB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ speech: string;
3
+ name: string;
4
+ }
5
+ export default function CybergotchiBubble({ speech, name }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=CybergotchiBubble.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CybergotchiBubble.d.ts","sourceRoot":"","sources":["../../src/components/CybergotchiBubble.tsx"],"names":[],"mappings":"AAGA,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAoBD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,2CAehE"}