ineedcodes 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +161 -0
  3. package/docs/assets/ineed-logo.svg +161 -0
  4. package/docs/configuration.md +71 -0
  5. package/docs/skills.md +58 -0
  6. package/package.json +41 -0
  7. package/packages/agent/dist/boost.d.ts +34 -0
  8. package/packages/agent/dist/boost.js +138 -0
  9. package/packages/agent/dist/boost.js.map +1 -0
  10. package/packages/agent/dist/events.d.ts +67 -0
  11. package/packages/agent/dist/events.js +16 -0
  12. package/packages/agent/dist/events.js.map +1 -0
  13. package/packages/agent/dist/index.d.ts +6 -0
  14. package/packages/agent/dist/index.js +7 -0
  15. package/packages/agent/dist/index.js.map +1 -0
  16. package/packages/agent/dist/lead-agent.d.ts +85 -0
  17. package/packages/agent/dist/lead-agent.js +235 -0
  18. package/packages/agent/dist/lead-agent.js.map +1 -0
  19. package/packages/agent/dist/orchestrator.d.ts +43 -0
  20. package/packages/agent/dist/orchestrator.js +135 -0
  21. package/packages/agent/dist/orchestrator.js.map +1 -0
  22. package/packages/agent/dist/runtime.d.ts +44 -0
  23. package/packages/agent/dist/runtime.js +265 -0
  24. package/packages/agent/dist/runtime.js.map +1 -0
  25. package/packages/agent/dist/system-prompts.d.ts +24 -0
  26. package/packages/agent/dist/system-prompts.js +91 -0
  27. package/packages/agent/dist/system-prompts.js.map +1 -0
  28. package/packages/agent/package.json +21 -0
  29. package/packages/cli/dist/index.d.ts +3 -0
  30. package/packages/cli/dist/index.js +567 -0
  31. package/packages/cli/dist/index.js.map +1 -0
  32. package/packages/cli/dist/setup.d.ts +37 -0
  33. package/packages/cli/dist/setup.js +240 -0
  34. package/packages/cli/dist/setup.js.map +1 -0
  35. package/packages/cli/dist/tools-setup.d.ts +12 -0
  36. package/packages/cli/dist/tools-setup.js +28 -0
  37. package/packages/cli/dist/tools-setup.js.map +1 -0
  38. package/packages/cli/dist/ui/approval.d.ts +12 -0
  39. package/packages/cli/dist/ui/approval.js +52 -0
  40. package/packages/cli/dist/ui/approval.js.map +1 -0
  41. package/packages/cli/dist/ui/colors.d.ts +14 -0
  42. package/packages/cli/dist/ui/colors.js +21 -0
  43. package/packages/cli/dist/ui/colors.js.map +1 -0
  44. package/packages/cli/dist/ui/prompts.d.ts +46 -0
  45. package/packages/cli/dist/ui/prompts.js +135 -0
  46. package/packages/cli/dist/ui/prompts.js.map +1 -0
  47. package/packages/cli/dist/ui/renderer.d.ts +13 -0
  48. package/packages/cli/dist/ui/renderer.js +95 -0
  49. package/packages/cli/dist/ui/renderer.js.map +1 -0
  50. package/packages/cli/package.json +23 -0
  51. package/packages/core/dist/config/config.d.ts +32 -0
  52. package/packages/core/dist/config/config.js +43 -0
  53. package/packages/core/dist/config/config.js.map +1 -0
  54. package/packages/core/dist/context/engine.d.ts +25 -0
  55. package/packages/core/dist/context/engine.js +98 -0
  56. package/packages/core/dist/context/engine.js.map +1 -0
  57. package/packages/core/dist/index.d.ts +20 -0
  58. package/packages/core/dist/index.js +21 -0
  59. package/packages/core/dist/index.js.map +1 -0
  60. package/packages/core/dist/llm/openai-compatible.d.ts +23 -0
  61. package/packages/core/dist/llm/openai-compatible.js +177 -0
  62. package/packages/core/dist/llm/openai-compatible.js.map +1 -0
  63. package/packages/core/dist/memory/icm-adapter.d.ts +31 -0
  64. package/packages/core/dist/memory/icm-adapter.js +98 -0
  65. package/packages/core/dist/memory/icm-adapter.js.map +1 -0
  66. package/packages/core/dist/permissions/permissions.d.ts +28 -0
  67. package/packages/core/dist/permissions/permissions.js +89 -0
  68. package/packages/core/dist/permissions/permissions.js.map +1 -0
  69. package/packages/core/dist/security/secrets.d.ts +4 -0
  70. package/packages/core/dist/security/secrets.js +43 -0
  71. package/packages/core/dist/security/secrets.js.map +1 -0
  72. package/packages/core/dist/session/store.d.ts +16 -0
  73. package/packages/core/dist/session/store.js +54 -0
  74. package/packages/core/dist/session/store.js.map +1 -0
  75. package/packages/core/dist/shell/process.d.ts +26 -0
  76. package/packages/core/dist/shell/process.js +128 -0
  77. package/packages/core/dist/shell/process.js.map +1 -0
  78. package/packages/core/dist/skills/loader.d.ts +9 -0
  79. package/packages/core/dist/skills/loader.js +163 -0
  80. package/packages/core/dist/skills/loader.js.map +1 -0
  81. package/packages/core/dist/tools/fs.d.ts +10 -0
  82. package/packages/core/dist/tools/fs.js +409 -0
  83. package/packages/core/dist/tools/fs.js.map +1 -0
  84. package/packages/core/dist/tools/git.d.ts +7 -0
  85. package/packages/core/dist/tools/git.js +251 -0
  86. package/packages/core/dist/tools/git.js.map +1 -0
  87. package/packages/core/dist/tools/mcp.d.ts +42 -0
  88. package/packages/core/dist/tools/mcp.js +158 -0
  89. package/packages/core/dist/tools/mcp.js.map +1 -0
  90. package/packages/core/dist/tools/registry.d.ts +21 -0
  91. package/packages/core/dist/tools/registry.js +50 -0
  92. package/packages/core/dist/tools/registry.js.map +1 -0
  93. package/packages/core/dist/tools/search.d.ts +2 -0
  94. package/packages/core/dist/tools/search.js +243 -0
  95. package/packages/core/dist/tools/search.js.map +1 -0
  96. package/packages/core/dist/tools/shell.d.ts +8 -0
  97. package/packages/core/dist/tools/shell.js +164 -0
  98. package/packages/core/dist/tools/shell.js.map +1 -0
  99. package/packages/core/dist/tools/web.d.ts +14 -0
  100. package/packages/core/dist/tools/web.js +125 -0
  101. package/packages/core/dist/tools/web.js.map +1 -0
  102. package/packages/core/dist/types.d.ts +202 -0
  103. package/packages/core/dist/types.js +7 -0
  104. package/packages/core/dist/types.js.map +1 -0
  105. package/packages/core/dist/util/fs.d.ts +5 -0
  106. package/packages/core/dist/util/fs.js +33 -0
  107. package/packages/core/dist/util/fs.js.map +1 -0
  108. package/packages/core/dist/util/shell-quote.d.ts +7 -0
  109. package/packages/core/dist/util/shell-quote.js +20 -0
  110. package/packages/core/dist/util/shell-quote.js.map +1 -0
  111. package/packages/core/dist/workspace/workspace.d.ts +15 -0
  112. package/packages/core/dist/workspace/workspace.js +84 -0
  113. package/packages/core/dist/workspace/workspace.js.map +1 -0
  114. package/packages/core/package.json +21 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 iNeedCodes
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,161 @@
1
+ <div align="center">
2
+
3
+ <img src="docs/assets/ineed-logo.svg" alt="ineed: your terminal, now autonomous" width="640"/>
4
+
5
+ # ineed
6
+
7
+ [![website](https://img.shields.io/badge/web-ineed.codes-4ade80.svg)](https://ineed.codes)
8
+ [![learn](https://img.shields.io/badge/learn-ineed.web.id-e879f9.svg)](https://ineed.web.id)
9
+ [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
10
+ [![node](https://img.shields.io/badge/node-%E2%89%A520-brightgreen.svg)](https://nodejs.org)
11
+ [![platform](https://img.shields.io/badge/platform-linux%20%7C%20macOS%20%7C%20Windows-lightgrey.svg)]()
12
+
13
+ **[ineed.codes](https://ineed.codes)** (product) · **[ineed.web.id](https://ineed.web.id)** (free tutorials & AI resources) · [**Contributing**](CONTRIBUTING.md)
14
+
15
+ </div>
16
+
17
+ ---
18
+
19
+ `ineed` is a CLI-first AI agent. You describe the outcome you want in plain
20
+ language. It figures out how: reading code, running commands, editing files,
21
+ using Git, running tests, and proving the result with real evidence.
22
+
23
+ ```bash
24
+ ineed "fix the build errors in this project"
25
+ ```
26
+
27
+ <a name="why-this-project-exists"></a>
28
+ ## Why this project exists
29
+
30
+ Most AI coding tools are built for people who already know Git, terminals,
31
+ and debugging. **ineed flips that**: it is built so that *beginners can learn
32
+ by watching an agent work*.
33
+
34
+ - Every action is narrated in plain English: what it will do, why, and what
35
+ came out of it.
36
+ - Nothing is hidden. You see the real commands, the real diffs, the real
37
+ test output. Never fabricated.
38
+ - After finishing, the agent explains what happened and one thing worth learning.
39
+ - If something confuses you, just ask: *"explain that more simply."*
40
+
41
+ That is vibecoding: describing what you want, watching how a capable agent
42
+ achieves it, and absorbing the workflow until you can do it yourself.
43
+
44
+ <a name="quick-start"></a>
45
+ ## Quick start
46
+
47
+ Requires Node.js 20+ (Windows, macOS, or Linux).
48
+
49
+ ```bash
50
+ git clone https://github.com/ineedcodes/ineedcodes.git
51
+ cd ineedcodes
52
+ npm install
53
+ npm run build
54
+ npm link
55
+ ```
56
+
57
+ Or, once the repository is on GitHub:
58
+
59
+ ```bash
60
+ npm install -g github:ineedcodes/ineedcodes
61
+ ```
62
+
63
+ `ineed` opens a **setup wizard** on first run: pick a provider, paste an API key,
64
+ choose a model from a live list. Saved once, done forever.
65
+
66
+ Any OpenAI-compatible endpoint works: OpenAI, iNeed API, OmniRoute,
67
+ LM Studio, Ollama, vLLM, …
68
+
69
+ <a name="learn-while-it-works"></a>
70
+ ## Learn while it works
71
+
72
+ The whole product doubles as a teaching tool:
73
+
74
+ | You type | You learn |
75
+ |---|---|
76
+ | `ineed` then a plain-language goal | how agents plan and verify work |
77
+ | `/context` | how token budgets and compaction work |
78
+ | `/plan` before `/build` | why reading before changing matters |
79
+ | `/think high` on a hard bug | how reasoning depth changes results |
80
+ | `/doctor` | what a healthy setup looks like |
81
+ | `/init` | how project instructions (AGENTS.md) shape agent behavior |
82
+ | watching the tool output | real commands, real diffs, real evidence |
83
+
84
+ Explanations default to beginner-friendly. Change anytime:
85
+
86
+ ```bash
87
+ /explain beginner # more plain-English narration
88
+ /explain balanced
89
+ /explain terse # for when you already know what's happening
90
+ ```
91
+
92
+ > 📚 **New to AI coding?** Free tutorials on how to use AI tools, plus a
93
+ > curated list of free AI resources, live at **[ineed.web.id](https://ineed.web.id)**.
94
+ > No signup, no paywall.
95
+
96
+ ## Use it
97
+
98
+ ```bash
99
+ ineed # interactive session here
100
+ ineed "explain this repo" # one-shot
101
+ ineed --resume # continue your last session
102
+ ```
103
+
104
+ Then just talk:
105
+
106
+ - *Fix the authentication bug.*
107
+ - *Install this GitHub project and get it running.*
108
+ - *Why is this API failing? Then fix it and prove it.*
109
+ - *Make this README sound less AI-generated.*
110
+
111
+ Slash commands are optional shortcuts (`/help`, `/model`, `/context`, `/plan`,
112
+ `/build`, `/think`, `/memory`, `/skills`, `/permissions`, `/init`, `/doctor`,
113
+ `/resume`, `/clear`, `/copy`, `/exit`). Plain language always works.
114
+
115
+ ## How it works
116
+
117
+ ```
118
+ Natural language
119
+
120
+ Lead Agent (understands objective, recalls ICM memory, picks skills)
121
+
122
+ Iterative loop: reason → tool call → observe → adapt → verify
123
+
124
+ Real execution: files, shell, git, web, MCP tools
125
+
126
+ Evidence-based result: what changed, what ran, what passed
127
+ ```
128
+
129
+ - **Memory**: [ICM](https://github.com/rtk-ai/icm), permanent per-project memory.
130
+ Conventions, solved errors, and decisions survive across sessions.
131
+ - **Skills**: portable `SKILL.md` files. Built-ins: `boost` (isolated worktree +
132
+ independent verification) and `humanizer` (natural prose rewriting).
133
+ - **Multi-agent**: the Lead Agent can spawn real sub-agents (research,
134
+ implementation, testing, review) in parallel.
135
+ - **Permissions**: `ask` / `workspace` / `autonomous`. Safe in-project work
136
+ flows freely; destructive, remote, and secret operations need approval.
137
+ - **Secrets**: `.env`, SSH keys, tokens are never dumped into model context.
138
+ - **Providers**: any OpenAI-compatible API. No lock-in.
139
+
140
+ ## Layout
141
+
142
+ ```
143
+ packages/
144
+ core/ tools, LLM providers, ICM adapter, permissions, context, sessions, skills
145
+ agent/ agent loop, lead agent, orchestrator, boost integration
146
+ cli/ interactive TUI, setup wizard, slash commands
147
+ ```
148
+
149
+ ## Contributing
150
+
151
+ This project exists to teach, so contributions should keep that spirit.
152
+ See [CONTRIBUTING.md](CONTRIBUTING.md). Good first issues: docs, beginner
153
+ explanations, new built-in skills, provider adapters.
154
+
155
+ <div align="center">
156
+
157
+ **MIT Licensed.** Made for people learning to code with AI.
158
+
159
+ **[ineed.codes](https://ineed.codes)** (the agent) · **[ineed.web.id](https://ineed.web.id)** (learn AI, free)
160
+
161
+ </div>
@@ -0,0 +1,161 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1380" height="406" viewBox="0 0 1380 406">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
4
+ <stop offset="0" stop-color="#161b22"/>
5
+ <stop offset="1" stop-color="#0d1117"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <!-- terminal window -->
9
+ <rect x="2" y="2" width="1376" height="402" rx="18" fill="url(#bg)" stroke="#30363d" stroke-width="2"/>
10
+ <!-- traffic lights -->
11
+ <circle cx="60" cy="28" r="7" fill="#ff5f57"/>
12
+ <circle cx="86" cy="28" r="7" fill="#febc2e"/>
13
+ <circle cx="112" cy="28" r="7" fill="#28c840"/>
14
+ <text x="1320" y="33" text-anchor="end" font-family="ui-monospace, Menlo, monospace" font-size="14" fill="#8b949e">~/project: ineed</text>
15
+
16
+ <!-- INEED block art -->
17
+ <rect x="60" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
18
+ <rect x="90" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
19
+ <rect x="120" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
20
+ <rect x="60" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
21
+ <rect x="90" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
22
+ <rect x="60" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
23
+ <rect x="90" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
24
+ <rect x="60" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
25
+ <rect x="90" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
26
+ <rect x="60" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
27
+ <rect x="90" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
28
+ <rect x="60" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
29
+ <rect x="90" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
30
+ <rect x="120" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
31
+ <rect x="210" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
32
+ <rect x="240" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
33
+ <rect x="270" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
34
+ <rect x="450" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
35
+ <rect x="480" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
36
+ <rect x="210" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
37
+ <rect x="240" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
38
+ <rect x="270" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
39
+ <rect x="300" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
40
+ <rect x="450" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
41
+ <rect x="480" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
42
+ <rect x="210" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
43
+ <rect x="240" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
44
+ <rect x="270" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
45
+ <rect x="300" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
46
+ <rect x="330" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
47
+ <rect x="360" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
48
+ <rect x="450" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
49
+ <rect x="210" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
50
+ <rect x="240" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
51
+ <rect x="270" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
52
+ <rect x="330" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
53
+ <rect x="360" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
54
+ <rect x="390" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
55
+ <rect x="450" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
56
+ <rect x="210" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
57
+ <rect x="240" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
58
+ <rect x="270" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
59
+ <rect x="360" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
60
+ <rect x="390" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
61
+ <rect x="420" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
62
+ <rect x="450" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
63
+ <rect x="210" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
64
+ <rect x="240" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
65
+ <rect x="270" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
66
+ <rect x="360" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
67
+ <rect x="390" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
68
+ <rect x="420" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
69
+ <rect x="450" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
70
+ <rect x="480" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
71
+ <rect x="570" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
72
+ <rect x="600" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
73
+ <rect x="630" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
74
+ <rect x="660" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
75
+ <rect x="690" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
76
+ <rect x="720" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
77
+ <rect x="750" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
78
+ <rect x="570" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
79
+ <rect x="600" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
80
+ <rect x="570" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
81
+ <rect x="600" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
82
+ <rect x="630" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
83
+ <rect x="570" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
84
+ <rect x="600" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
85
+ <rect x="570" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
86
+ <rect x="600" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
87
+ <rect x="630" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
88
+ <rect x="660" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
89
+ <rect x="690" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
90
+ <rect x="570" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
91
+ <rect x="600" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
92
+ <rect x="630" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
93
+ <rect x="660" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
94
+ <rect x="690" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
95
+ <rect x="720" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
96
+ <rect x="840" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
97
+ <rect x="870" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
98
+ <rect x="900" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
99
+ <rect x="930" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
100
+ <rect x="960" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
101
+ <rect x="990" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
102
+ <rect x="1020" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
103
+ <rect x="840" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
104
+ <rect x="870" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
105
+ <rect x="840" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
106
+ <rect x="870" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
107
+ <rect x="900" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
108
+ <rect x="840" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
109
+ <rect x="870" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
110
+ <rect x="840" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
111
+ <rect x="870" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
112
+ <rect x="900" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
113
+ <rect x="930" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
114
+ <rect x="960" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
115
+ <rect x="840" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
116
+ <rect x="870" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
117
+ <rect x="900" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
118
+ <rect x="930" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
119
+ <rect x="960" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
120
+ <rect x="990" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
121
+ <rect x="1110" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
122
+ <rect x="1140" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
123
+ <rect x="1170" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
124
+ <rect x="1200" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
125
+ <rect x="1230" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
126
+ <rect x="1260" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
127
+ <rect x="1290" y="90" width="27" height="27" rx="4" fill="#4ade80"/>
128
+ <rect x="1110" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
129
+ <rect x="1140" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
130
+ <rect x="1260" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
131
+ <rect x="1290" y="120" width="27" height="27" rx="4" fill="#4ade80"/>
132
+ <rect x="1110" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
133
+ <rect x="1140" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
134
+ <rect x="1260" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
135
+ <rect x="1290" y="150" width="27" height="27" rx="4" fill="#22d3ee"/>
136
+ <rect x="1110" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
137
+ <rect x="1140" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
138
+ <rect x="1260" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
139
+ <rect x="1290" y="180" width="27" height="27" rx="4" fill="#22d3ee"/>
140
+ <rect x="1110" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
141
+ <rect x="1140" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
142
+ <rect x="1170" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
143
+ <rect x="1200" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
144
+ <rect x="1230" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
145
+ <rect x="1260" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
146
+ <rect x="1290" y="210" width="27" height="27" rx="4" fill="#e879f9"/>
147
+ <rect x="1110" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
148
+ <rect x="1140" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
149
+ <rect x="1170" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
150
+ <rect x="1200" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
151
+ <rect x="1230" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
152
+ <rect x="1260" y="240" width="27" height="27" rx="4" fill="#e879f9"/>
153
+
154
+ <!-- prompt line -->
155
+ <text x="60" y="296" font-family="ui-monospace, Menlo, monospace" font-size="26">
156
+ <tspan fill="#4ade80">❯</tspan><tspan fill="#e6edf3" dx="14">ineed</tspan><tspan fill="#8b949e" dx="14">"fix the build errors"</tspan><tspan fill="#4ade80">▮</tspan>
157
+ </text>
158
+
159
+ <!-- tagline -->
160
+ <text x="60" y="348" font-family="ui-monospace, Menlo, monospace" font-size="17" letter-spacing="4" fill="#6e7681">YOUR TERMINAL, NOW AUTONOMOUS</text>
161
+ </svg>
@@ -0,0 +1,71 @@
1
+ # Configuration Reference
2
+
3
+ iNeedCodes reads `~/.ineedcodes/config.json`. Every field is optional; environment variables work too.
4
+
5
+ ## Providers (LLM)
6
+
7
+ Any OpenAI-compatible endpoint works (OpenAI, iNeed API, local servers, …):
8
+
9
+ ```json
10
+ {
11
+ "providers": {
12
+ "default": { "baseUrl": "https://api.openai.com/v1", "apiKey": "sk-...", "model": "gpt-4.1-mini" },
13
+ "fast": { "baseUrl": "http://localhost:11434/v1", "apiKey": "x", "model": "qwen2.5-coder", "contextLimit": 32768 }
14
+ },
15
+ "defaultProvider": "default",
16
+ "roleProviders": { "lead": "default", "research": "fast" }
17
+ }
18
+ ```
19
+
20
+ Environment variables: `INEEDCODES_BASE_URL`, `INEEDCODES_API_KEY`, `INEEDCODES_MODEL`.
21
+
22
+ ## Permissions
23
+
24
+ ```json
25
+ { "permissions": { "mode": "workspace", "allow": ["git_remote"], "deny": ["destructive"], "maxParallelAgents": 4 } }
26
+ ```
27
+
28
+ - `ask`: every tool action needs approval.
29
+ - `workspace` (default): reading, writing, and running commands inside the project
30
+ flow freely; outside-workspace access, remote Git pushes, destructive operations,
31
+ and secret access need approval.
32
+ - `autonomous`: no interruptions (use with care).
33
+
34
+ Change at runtime with `/permissions <mode>` or `ineedcodes -p <mode>`.
35
+
36
+ ## Memory
37
+
38
+ ```json
39
+ { "memory": { "backend": "icm" } }
40
+ ```
41
+
42
+ ICM is the memory engine. Each project gets an isolated database at
43
+ `~/.ineedcodes/projects/<project-id>/memory/icm.db`. Memories never mix
44
+ between repositories. Set `"backend": "off"` to disable.
45
+
46
+ ## Web search (optional)
47
+
48
+ ```json
49
+ { "webSearch": { "provider": "brave", "apiKey": "..." } }
50
+ ```
51
+
52
+ Without it, `fetch_url` still works for known URLs and the agent honestly
53
+ reports that search is unavailable instead of pretending.
54
+
55
+ ## MCP servers (optional)
56
+
57
+ ```json
58
+ {
59
+ "mcpServers": {
60
+ "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_TOKEN": "..." } }
61
+ }
62
+ }
63
+ ```
64
+
65
+ MCP tools appear in the normal registry as `mcp_<server>_<tool>` and need no
66
+ special handling by the agent. A failing server is reported, never fatal.
67
+
68
+ ## Project instructions
69
+
70
+ Drop an `AGENTS.md` or `.ineedcodes/instructions.md` in your repository and
71
+ the agent applies them automatically when working there.
package/docs/skills.md ADDED
@@ -0,0 +1,58 @@
1
+ # Skills in iNeedCodes
2
+
3
+ Skills are portable instruction packs that teach the agent specialized workflows.
4
+ A skill is a folder with a single `SKILL.md` file using YAML frontmatter.
5
+
6
+ ## Format
7
+
8
+ ```markdown
9
+ ---
10
+ name: my-skill
11
+ description: One sentence: when the agent should use this skill.
12
+ version: 1.0.0 # optional
13
+ allowed-tools: # optional hint, informational
14
+ - read_file
15
+ - search_text
16
+ ---
17
+
18
+ # My Skill
19
+
20
+ Instructions the agent follows when the skill is active...
21
+ ```
22
+
23
+ ## Locations (priority order)
24
+
25
+ 1. **Project**: `<project>/.ineedcodes/skills/<name>/SKILL.md`
26
+ 2. **Project (alternate)**: `<project>/skills/<name>/SKILL.md`
27
+ 3. **Global user**: `~/.ineedcodes/skills/<name>/SKILL.md`
28
+ 4. **Built-in**: shipped with iNeedCodes (`boost`, `humanizer`)
29
+
30
+ A project skill with the same name overrides the global one, which overrides
31
+ the built-in. `/skills` shows each skill's scope so overrides are visible.
32
+
33
+ ## Invocation
34
+
35
+ - Explicit: `/boost`, `/humanizer`, or just name the skill in a sentence.
36
+ - Natural: *"Use boost to verify this implementation."*
37
+ - Automatic: the Lead Agent may pick a skill when its description clearly matches the task.
38
+
39
+ ## Built-in: boost
40
+
41
+ An advanced execution-and-verification protocol. When invoked, the agent:
42
+
43
+ 1. Creates an isolated Git worktree (`.ineedcodes/boost-<timestamp>`)
44
+ 2. Investigates root causes
45
+ 3. Implements changes there; your working tree stays clean
46
+ 4. Runs tests with real evidence
47
+ 5. Verifies independently
48
+ 6. Reconciles (merges) only on success, with your approval
49
+ 7. Cleans up the worktree either way
50
+
51
+ A failed Boost run never merges broken changes. Good for hard debugging,
52
+ major refactors, and regression-sensitive work. Simple tasks should not use it.
53
+
54
+ ## Built-in: humanizer
55
+
56
+ Rewrites prose (README, docs, release notes, explanations) so it reads naturally.
57
+ Never applied to code, JSON, YAML, commands, or technical values. Meaning and
58
+ technical facts are always preserved.
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "ineedcodes",
3
+ "version": "0.1.0",
4
+ "description": "ineed — your terminal, now autonomous. CLI-first general-purpose autonomous AI agent.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "bin": {
8
+ "ineed": "packages/cli/dist/index.js",
9
+ "ineedcodes": "packages/cli/dist/index.js"
10
+ },
11
+ "files": [
12
+ "packages/core/dist",
13
+ "packages/agent/dist",
14
+ "packages/cli/dist",
15
+ "packages/core/package.json",
16
+ "packages/agent/package.json",
17
+ "packages/cli/package.json",
18
+ "docs",
19
+ "README.md",
20
+ "LICENSE"
21
+ ],
22
+ "scripts": {
23
+ "prepare": "npm run build",
24
+ "build": "tsc -b packages/core packages/agent packages/cli",
25
+ "clean": "rm -rf packages/*/dist",
26
+ "typecheck": "tsc -b packages/core packages/agent packages/cli --force",
27
+ "dev": "npm run build && node packages/cli/dist/index.js"
28
+ },
29
+ "engines": {
30
+ "node": ">=20.0.0"
31
+ },
32
+ "workspaces": [
33
+ "packages/*"
34
+ ],
35
+ "repository": {
36
+ "type": "git"
37
+ },
38
+ "keywords": [
39
+ "ai", "agent", "cli", "terminal", "autonomous", "coding", "llm"
40
+ ]
41
+ }
@@ -0,0 +1,34 @@
1
+ import type { ToolRegistry, ToolContext, ToolResult } from '@ineedcodes/core';
2
+ /**
3
+ * Boost integration (plan §19–20): an advanced execution and verification
4
+ * protocol running on top of the multi-agent runtime, in an isolated
5
+ * Git worktree. The user's active working tree stays clean.
6
+ *
7
+ * Lifecycle: start → investigate → implement → test → verify → reconcile | abort → cleanup
8
+ */
9
+ export type BoostPhase = 'start' | 'investigate' | 'implement' | 'test' | 'verify' | 'reconcile' | 'abort' | 'cleanup';
10
+ export interface BoostRun {
11
+ id: string;
12
+ worktreePath: string;
13
+ branch: string;
14
+ phase: BoostPhase;
15
+ startedAt: number;
16
+ }
17
+ export declare class BoostIntegration {
18
+ private readonly registry;
19
+ private readonly toolContext;
20
+ private readonly emit;
21
+ private run?;
22
+ constructor(registry: ToolRegistry, toolContext: ToolContext, emit: (event: import('./events.js').RuntimeEvent) => Promise<void>);
23
+ active(): boolean;
24
+ current(): BoostRun | undefined;
25
+ private exec;
26
+ start(objective: string): Promise<ToolResult>;
27
+ worktreeContext(): ToolContext | undefined;
28
+ /** Commit any uncommitted work inside the Boost worktree so it can merge. */
29
+ private commitWorktreeChanges;
30
+ reconcile(): Promise<ToolResult>;
31
+ abort(reason: string): Promise<ToolResult>;
32
+ cleanup(): Promise<ToolResult>;
33
+ }
34
+ export declare const BOOST_PHASES: readonly BoostPhase[];