ineedcodes 0.1.7 → 0.2.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 (113) hide show
  1. package/agent.mjs +244 -0
  2. package/package.json +10 -25
  3. package/docs/assets/ineed-logo.svg +0 -161
  4. package/docs/configuration.md +0 -71
  5. package/docs/skills.md +0 -58
  6. package/packages/agent/dist/boost.d.ts +0 -34
  7. package/packages/agent/dist/boost.js +0 -138
  8. package/packages/agent/dist/boost.js.map +0 -1
  9. package/packages/agent/dist/events.d.ts +0 -67
  10. package/packages/agent/dist/events.js +0 -16
  11. package/packages/agent/dist/events.js.map +0 -1
  12. package/packages/agent/dist/index.d.ts +0 -6
  13. package/packages/agent/dist/index.js +0 -7
  14. package/packages/agent/dist/index.js.map +0 -1
  15. package/packages/agent/dist/lead-agent.d.ts +0 -85
  16. package/packages/agent/dist/lead-agent.js +0 -235
  17. package/packages/agent/dist/lead-agent.js.map +0 -1
  18. package/packages/agent/dist/orchestrator.d.ts +0 -43
  19. package/packages/agent/dist/orchestrator.js +0 -135
  20. package/packages/agent/dist/orchestrator.js.map +0 -1
  21. package/packages/agent/dist/runtime.d.ts +0 -44
  22. package/packages/agent/dist/runtime.js +0 -265
  23. package/packages/agent/dist/runtime.js.map +0 -1
  24. package/packages/agent/dist/system-prompts.d.ts +0 -24
  25. package/packages/agent/dist/system-prompts.js +0 -91
  26. package/packages/agent/dist/system-prompts.js.map +0 -1
  27. package/packages/agent/package.json +0 -21
  28. package/packages/cli/dist/index.d.ts +0 -3
  29. package/packages/cli/dist/index.js +0 -11426
  30. package/packages/cli/dist/index.js.map +0 -1
  31. package/packages/cli/dist/setup.d.ts +0 -37
  32. package/packages/cli/dist/setup.js +0 -250
  33. package/packages/cli/dist/setup.js.map +0 -1
  34. package/packages/cli/dist/tools-setup.d.ts +0 -12
  35. package/packages/cli/dist/tools-setup.js +0 -28
  36. package/packages/cli/dist/tools-setup.js.map +0 -1
  37. package/packages/cli/dist/ui/approval.d.ts +0 -12
  38. package/packages/cli/dist/ui/approval.js +0 -52
  39. package/packages/cli/dist/ui/approval.js.map +0 -1
  40. package/packages/cli/dist/ui/colors.d.ts +0 -14
  41. package/packages/cli/dist/ui/colors.js +0 -21
  42. package/packages/cli/dist/ui/colors.js.map +0 -1
  43. package/packages/cli/dist/ui/prompts.d.ts +0 -46
  44. package/packages/cli/dist/ui/prompts.js +0 -135
  45. package/packages/cli/dist/ui/prompts.js.map +0 -1
  46. package/packages/cli/dist/ui/renderer.d.ts +0 -13
  47. package/packages/cli/dist/ui/renderer.js +0 -95
  48. package/packages/cli/dist/ui/renderer.js.map +0 -1
  49. package/packages/cli/package.json +0 -23
  50. package/packages/core/dist/config/config.d.ts +0 -32
  51. package/packages/core/dist/config/config.js +0 -43
  52. package/packages/core/dist/config/config.js.map +0 -1
  53. package/packages/core/dist/context/engine.d.ts +0 -25
  54. package/packages/core/dist/context/engine.js +0 -98
  55. package/packages/core/dist/context/engine.js.map +0 -1
  56. package/packages/core/dist/index.d.ts +0 -20
  57. package/packages/core/dist/index.js +0 -21
  58. package/packages/core/dist/index.js.map +0 -1
  59. package/packages/core/dist/llm/openai-compatible.d.ts +0 -23
  60. package/packages/core/dist/llm/openai-compatible.js +0 -177
  61. package/packages/core/dist/llm/openai-compatible.js.map +0 -1
  62. package/packages/core/dist/memory/icm-adapter.d.ts +0 -31
  63. package/packages/core/dist/memory/icm-adapter.js +0 -98
  64. package/packages/core/dist/memory/icm-adapter.js.map +0 -1
  65. package/packages/core/dist/permissions/permissions.d.ts +0 -28
  66. package/packages/core/dist/permissions/permissions.js +0 -89
  67. package/packages/core/dist/permissions/permissions.js.map +0 -1
  68. package/packages/core/dist/security/secrets.d.ts +0 -4
  69. package/packages/core/dist/security/secrets.js +0 -43
  70. package/packages/core/dist/security/secrets.js.map +0 -1
  71. package/packages/core/dist/session/store.d.ts +0 -16
  72. package/packages/core/dist/session/store.js +0 -54
  73. package/packages/core/dist/session/store.js.map +0 -1
  74. package/packages/core/dist/shell/process.d.ts +0 -26
  75. package/packages/core/dist/shell/process.js +0 -128
  76. package/packages/core/dist/shell/process.js.map +0 -1
  77. package/packages/core/dist/skills/loader.d.ts +0 -9
  78. package/packages/core/dist/skills/loader.js +0 -163
  79. package/packages/core/dist/skills/loader.js.map +0 -1
  80. package/packages/core/dist/tools/fs.d.ts +0 -10
  81. package/packages/core/dist/tools/fs.js +0 -409
  82. package/packages/core/dist/tools/fs.js.map +0 -1
  83. package/packages/core/dist/tools/git.d.ts +0 -7
  84. package/packages/core/dist/tools/git.js +0 -251
  85. package/packages/core/dist/tools/git.js.map +0 -1
  86. package/packages/core/dist/tools/mcp.d.ts +0 -42
  87. package/packages/core/dist/tools/mcp.js +0 -158
  88. package/packages/core/dist/tools/mcp.js.map +0 -1
  89. package/packages/core/dist/tools/registry.d.ts +0 -21
  90. package/packages/core/dist/tools/registry.js +0 -50
  91. package/packages/core/dist/tools/registry.js.map +0 -1
  92. package/packages/core/dist/tools/search.d.ts +0 -2
  93. package/packages/core/dist/tools/search.js +0 -243
  94. package/packages/core/dist/tools/search.js.map +0 -1
  95. package/packages/core/dist/tools/shell.d.ts +0 -8
  96. package/packages/core/dist/tools/shell.js +0 -164
  97. package/packages/core/dist/tools/shell.js.map +0 -1
  98. package/packages/core/dist/tools/web.d.ts +0 -14
  99. package/packages/core/dist/tools/web.js +0 -125
  100. package/packages/core/dist/tools/web.js.map +0 -1
  101. package/packages/core/dist/types.d.ts +0 -202
  102. package/packages/core/dist/types.js +0 -7
  103. package/packages/core/dist/types.js.map +0 -1
  104. package/packages/core/dist/util/fs.d.ts +0 -5
  105. package/packages/core/dist/util/fs.js +0 -33
  106. package/packages/core/dist/util/fs.js.map +0 -1
  107. package/packages/core/dist/util/shell-quote.d.ts +0 -7
  108. package/packages/core/dist/util/shell-quote.js +0 -20
  109. package/packages/core/dist/util/shell-quote.js.map +0 -1
  110. package/packages/core/dist/workspace/workspace.d.ts +0 -15
  111. package/packages/core/dist/workspace/workspace.js +0 -84
  112. package/packages/core/dist/workspace/workspace.js.map +0 -1
  113. package/packages/core/package.json +0 -22
@@ -1,409 +0,0 @@
1
- import { promises as fs } from 'node:fs';
2
- import * as path from 'node:path';
3
- import { isInsideRoot } from '../util/fs.js';
4
- import { isLikelySecretFile, secretFileNotice } from '../security/secrets.js';
5
- function str(input, key, fallback = '') {
6
- if (input && typeof input === 'object' && !Array.isArray(input)) {
7
- const v = input[key];
8
- if (typeof v === 'string')
9
- return v;
10
- if (typeof v === 'number' || typeof v === 'boolean')
11
- return String(v);
12
- }
13
- return fallback;
14
- }
15
- function num(input, key, fallback) {
16
- if (input && typeof input === 'object' && !Array.isArray(input)) {
17
- const v = input[key];
18
- if (typeof v === 'number' && Number.isFinite(v))
19
- return v;
20
- }
21
- return fallback;
22
- }
23
- function bool(input, key, fallback = false) {
24
- if (input && typeof input === 'object' && !Array.isArray(input)) {
25
- const v = input[key];
26
- if (typeof v === 'boolean')
27
- return v;
28
- }
29
- return fallback;
30
- }
31
- function resolvePath(ctx, p) {
32
- return path.resolve(ctx.cwd, p);
33
- }
34
- function fail(summary, error) {
35
- return { ok: false, summary, error };
36
- }
37
- /** Guard: path must be inside the workspace unless outside-workspace is approved. */
38
- async function guardPath(ctx, target, writing) {
39
- if (isInsideRoot(ctx.workspaceRoot, target))
40
- return null;
41
- const decision = await ctx.permissions.check(['outside_workspace'], `access ${target}`);
42
- if (!decision.allowed)
43
- return fail(decision.reason, 'outside_workspace_denied');
44
- void writing;
45
- return null;
46
- }
47
- export function createFilesystemTools() {
48
- const read_file = {
49
- name: 'read_file',
50
- description: 'Read a text file. Returns the file contents with line numbers. Refuses likely secret files.',
51
- permissions: ['read'],
52
- readonly: true,
53
- inputSchema: {
54
- type: 'object',
55
- properties: {
56
- path: { type: 'string', description: 'File path, relative to the working directory.' },
57
- maxBytes: { type: 'number', description: 'Optional size cap in bytes.' }
58
- },
59
- required: ['path']
60
- },
61
- async execute(input, ctx) {
62
- const target = resolvePath(ctx, str(input, 'path'));
63
- const guard = await guardPath(ctx, target, false);
64
- if (guard)
65
- return guard;
66
- if (isLikelySecretFile(target)) {
67
- return { ok: false, summary: secretFileNotice(target), error: 'secret_file' };
68
- }
69
- const maxBytes = num(input, 'maxBytes', 256 * 1024);
70
- try {
71
- const stat = await fs.stat(target);
72
- if (stat.size > maxBytes) {
73
- return { ok: false, summary: `File is ${stat.size} bytes; over the ${maxBytes}-byte read cap. Use read_file_range.`, error: 'too_large' };
74
- }
75
- const text = await fs.readFile(target, 'utf8');
76
- const lines = text.split('\n');
77
- const numbered = lines.map((l, i) => `${String(i + 1).padStart(5)}: ${l}`).join('\n');
78
- return { ok: true, summary: `Read ${path.basename(target)} (${lines.length} lines).`, data: numbered };
79
- }
80
- catch (err) {
81
- const message = err instanceof Error ? err.message : String(err);
82
- return fail(`Could not read ${target}: ${message}`, 'read_failed');
83
- }
84
- }
85
- };
86
- const read_file_range = {
87
- name: 'read_file_range',
88
- description: 'Read a slice of a file by line numbers (1-based, inclusive).',
89
- permissions: ['read'],
90
- readonly: true,
91
- inputSchema: {
92
- type: 'object',
93
- properties: {
94
- path: { type: 'string' },
95
- startLine: { type: 'number' },
96
- endLine: { type: 'number' }
97
- },
98
- required: ['path', 'startLine', 'endLine']
99
- },
100
- async execute(input, ctx) {
101
- const target = resolvePath(ctx, str(input, 'path'));
102
- const guard = await guardPath(ctx, target, false);
103
- if (guard)
104
- return guard;
105
- if (isLikelySecretFile(target)) {
106
- return { ok: false, summary: secretFileNotice(target), error: 'secret_file' };
107
- }
108
- try {
109
- const text = await fs.readFile(target, 'utf8');
110
- const lines = text.split('\n');
111
- const start = Math.max(1, Math.floor(num(input, 'startLine', 1)));
112
- const end = Math.min(lines.length, Math.floor(num(input, 'endLine', start + 99)));
113
- const slice = lines.slice(start - 1, end);
114
- const numbered = slice
115
- .map((l, i) => `${String(start + i).padStart(5)}: ${l}`)
116
- .join('\n');
117
- return { ok: true, summary: `Read lines ${start}-${end} of ${path.basename(target)} (file has ${lines.length} lines).`, data: numbered };
118
- }
119
- catch (err) {
120
- const message = err instanceof Error ? err.message : String(err);
121
- return fail(`Could not read ${target}: ${message}`, 'read_failed');
122
- }
123
- }
124
- };
125
- const write_file = {
126
- name: 'write_file',
127
- description: 'Create or overwrite a file with the given content. Parent directories are created automatically.',
128
- permissions: ['write'],
129
- readonly: false,
130
- inputSchema: {
131
- type: 'object',
132
- properties: {
133
- path: { type: 'string' },
134
- content: { type: 'string' }
135
- },
136
- required: ['path', 'content']
137
- },
138
- async execute(input, ctx) {
139
- const target = resolvePath(ctx, str(input, 'path'));
140
- const guard = await guardPath(ctx, target, true);
141
- if (guard)
142
- return guard;
143
- if (isLikelySecretFile(target)) {
144
- const decision = await ctx.permissions.check(['secret_access'], `write ${target}`);
145
- if (!decision.allowed)
146
- return fail(decision.reason, 'secret_write_denied');
147
- }
148
- const content = str(input, 'content');
149
- try {
150
- await fs.mkdir(path.dirname(target), { recursive: true });
151
- await fs.writeFile(target, content, 'utf8');
152
- return {
153
- ok: true,
154
- summary: `Wrote ${target} (${content.split('\n').length} lines, ${content.length} bytes).`
155
- };
156
- }
157
- catch (err) {
158
- const message = err instanceof Error ? err.message : String(err);
159
- return fail(`Could not write ${target}: ${message}`, 'write_failed');
160
- }
161
- }
162
- };
163
- const apply_patch = {
164
- name: 'apply_patch',
165
- description: 'Replace an exact text snippet inside an existing file. The old string must match exactly and be unique. Prefer this over rewriting whole files.',
166
- permissions: ['write'],
167
- readonly: false,
168
- inputSchema: {
169
- type: 'object',
170
- properties: {
171
- path: { type: 'string' },
172
- oldText: { type: 'string', description: 'Exact existing text to replace.' },
173
- newText: { type: 'string', description: 'Replacement text.' },
174
- replaceAll: { type: 'boolean', description: 'Replace every occurrence (default: false).' }
175
- },
176
- required: ['path', 'oldText', 'newText']
177
- },
178
- async execute(input, ctx) {
179
- const target = resolvePath(ctx, str(input, 'path'));
180
- const guard = await guardPath(ctx, target, true);
181
- if (guard)
182
- return guard;
183
- const oldText = str(input, 'oldText');
184
- const newText = str(input, 'newText');
185
- if (!oldText)
186
- return fail('oldText must not be empty.', 'empty_patch');
187
- try {
188
- const text = await fs.readFile(target, 'utf8');
189
- const count = text.split(oldText).length - 1;
190
- if (count === 0)
191
- return fail('oldText not found in file.', 'patch_not_found');
192
- if (count > 1 && !bool(input, 'replaceAll')) {
193
- return fail(`oldText matches ${count} times; provide more context or set replaceAll.`, 'ambiguous_patch');
194
- }
195
- const updated = bool(input, 'replaceAll') ? text.replaceAll(oldText, newText) : text.replace(oldText, newText);
196
- await fs.writeFile(target, updated, 'utf8');
197
- return {
198
- ok: true,
199
- summary: `Patched ${target}: replaced ${bool(input, 'replaceAll') ? count : 1} occurrence(s).`
200
- };
201
- }
202
- catch (err) {
203
- const message = err instanceof Error ? err.message : String(err);
204
- return fail(`Could not patch ${target}: ${message}`, 'patch_failed');
205
- }
206
- }
207
- };
208
- const delete_file = {
209
- name: 'delete_file',
210
- description: 'Delete a file or directory. Requires approval when deleting many files.',
211
- permissions: ['write', 'destructive'],
212
- readonly: false,
213
- inputSchema: {
214
- type: 'object',
215
- properties: {
216
- path: { type: 'string' },
217
- recursive: { type: 'boolean' }
218
- },
219
- required: ['path']
220
- },
221
- async execute(input, ctx) {
222
- const target = resolvePath(ctx, str(input, 'path'));
223
- const guard = await guardPath(ctx, target, true);
224
- if (guard)
225
- return guard;
226
- try {
227
- const stat = await fs.stat(target);
228
- const recursive = bool(input, 'recursive');
229
- if (stat.isDirectory() && !recursive) {
230
- return fail('Target is a directory; pass recursive=true to delete it.', 'needs_recursive');
231
- }
232
- await fs.rm(target, { recursive });
233
- return { ok: true, summary: `Deleted ${target}.` };
234
- }
235
- catch (err) {
236
- const message = err instanceof Error ? err.message : String(err);
237
- return fail(`Could not delete ${target}: ${message}`, 'delete_failed');
238
- }
239
- }
240
- };
241
- const move_file = {
242
- name: 'move_file',
243
- description: 'Move or rename a file or directory.',
244
- permissions: ['write'],
245
- readonly: false,
246
- inputSchema: {
247
- type: 'object',
248
- properties: {
249
- from: { type: 'string' },
250
- to: { type: 'string' }
251
- },
252
- required: ['from', 'to']
253
- },
254
- async execute(input, ctx) {
255
- const from = resolvePath(ctx, str(input, 'from'));
256
- const to = resolvePath(ctx, str(input, 'to'));
257
- for (const [target, label] of [[from, 'from'], [to, 'to']]) {
258
- const guard = await guardPath(ctx, target, true);
259
- if (guard)
260
- return fail(guard.summary ?? 'outside workspace', `outside_workspace_${label}`);
261
- }
262
- try {
263
- await fs.mkdir(path.dirname(to), { recursive: true });
264
- await fs.rename(from, to);
265
- return { ok: true, summary: `Moved ${from} → ${to}.` };
266
- }
267
- catch (err) {
268
- const message = err instanceof Error ? err.message : String(err);
269
- return fail(`Could not move: ${message}`, 'move_failed');
270
- }
271
- }
272
- };
273
- const copy_file = {
274
- name: 'copy_file',
275
- description: 'Copy a file. Directories are copied recursively.',
276
- permissions: ['write'],
277
- readonly: false,
278
- inputSchema: {
279
- type: 'object',
280
- properties: { from: { type: 'string' }, to: { type: 'string' } },
281
- required: ['from', 'to']
282
- },
283
- async execute(input, ctx) {
284
- const from = resolvePath(ctx, str(input, 'from'));
285
- const to = resolvePath(ctx, str(input, 'to'));
286
- for (const target of [from, to]) {
287
- const guard = await guardPath(ctx, target, true);
288
- if (guard)
289
- return guard;
290
- }
291
- try {
292
- await fs.mkdir(path.dirname(to), { recursive: true });
293
- await fs.cp(from, to, { recursive: true });
294
- return { ok: true, summary: `Copied ${from} → ${to}.` };
295
- }
296
- catch (err) {
297
- const message = err instanceof Error ? err.message : String(err);
298
- return fail(`Could not copy: ${message}`, 'copy_failed');
299
- }
300
- }
301
- };
302
- const list_directory = {
303
- name: 'list_directory',
304
- description: 'List the entries of a directory.',
305
- permissions: ['read'],
306
- readonly: true,
307
- inputSchema: {
308
- type: 'object',
309
- properties: {
310
- path: { type: 'string', description: 'Defaults to the working directory.' },
311
- recursive: { type: 'boolean', description: 'List recursively (max depth 4). Default false.' }
312
- }
313
- },
314
- async execute(input, ctx) {
315
- const target = resolvePath(ctx, str(input, 'path') || '.');
316
- const guard = await guardPath(ctx, target, false);
317
- if (guard)
318
- return guard;
319
- const recursive = bool(input, 'recursive');
320
- const out = [];
321
- const walk = async (dir, depth) => {
322
- if (out.length > 500 || (recursive && depth > 4))
323
- return;
324
- let entries;
325
- try {
326
- entries = await fs.readdir(dir, { withFileTypes: true });
327
- }
328
- catch {
329
- return;
330
- }
331
- for (const entry of entries) {
332
- if (['node_modules', '.git', 'dist', '.next'].includes(entry.name))
333
- continue;
334
- const marker = entry.isDirectory() ? '/' : '';
335
- out.push(`${path.relative(target, path.join(dir, entry.name))}${marker}`);
336
- if (entry.isDirectory() && recursive) {
337
- await walk(path.join(dir, entry.name), depth + 1);
338
- }
339
- }
340
- };
341
- await walk(target, 1);
342
- return {
343
- ok: true,
344
- summary: `Listed ${out.length} entries in ${target}${recursive ? ' (recursive)' : ''}.`,
345
- data: out
346
- };
347
- }
348
- };
349
- const file_exists = {
350
- name: 'file_exists',
351
- description: 'Check whether a file or directory exists.',
352
- permissions: ['read'],
353
- readonly: true,
354
- inputSchema: { type: 'object', properties: { path: { type: 'string' } }, required: ['path'] },
355
- async execute(input, ctx) {
356
- const target = resolvePath(ctx, str(input, 'path'));
357
- const guard = await guardPath(ctx, target, false);
358
- if (guard)
359
- return guard;
360
- try {
361
- const stat = await fs.stat(target);
362
- return {
363
- ok: true,
364
- summary: `${target} exists (${stat.isDirectory() ? 'directory' : 'file'}).`
365
- };
366
- }
367
- catch {
368
- return { ok: true, summary: `${target} does not exist.` };
369
- }
370
- }
371
- };
372
- const file_metadata = {
373
- name: 'file_metadata',
374
- description: 'Get size, timestamps, and type for a file or directory.',
375
- permissions: ['read'],
376
- readonly: true,
377
- inputSchema: { type: 'object', properties: { path: { type: 'string' } }, required: ['path'] },
378
- async execute(input, ctx) {
379
- const target = resolvePath(ctx, str(input, 'path'));
380
- const guard = await guardPath(ctx, target, false);
381
- if (guard)
382
- return guard;
383
- try {
384
- const stat = await fs.stat(target);
385
- return {
386
- ok: true,
387
- summary: `Metadata for ${target}.`,
388
- data: {
389
- size: stat.size,
390
- isDirectory: stat.isDirectory(),
391
- isFile: stat.isFile(),
392
- createdAt: stat.birthtime.toISOString(),
393
- modifiedAt: stat.mtime.toISOString()
394
- }
395
- };
396
- }
397
- catch (err) {
398
- const message = err instanceof Error ? err.message : String(err);
399
- return fail(`Could not stat ${target}: ${message}`, 'stat_failed');
400
- }
401
- }
402
- };
403
- return [
404
- read_file, read_file_range, write_file, apply_patch, delete_file,
405
- move_file, copy_file, list_directory, file_exists, file_metadata
406
- ];
407
- }
408
- export { str, num, bool, resolvePath, fail, guardPath };
409
- //# sourceMappingURL=fs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/tools/fs.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { Tool } from '../types.js';
2
- /**
3
- * First-class Git tools. These are structured wrappers: the model does not
4
- * need to build raw Git command lines for common operations. Raw Git still
5
- * works through shell_exec when needed.
6
- */
7
- export declare function createGitTools(): Tool[];