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,135 +0,0 @@
1
- import * as readline from 'node:readline';
2
- import { bold, dim, green, cyan, gray, truncate } from './colors.js';
3
- /**
4
- * One shared line reader for the whole process. Lines that arrive while no
5
- * question is pending are buffered, so piped input works too.
6
- */
7
- export class LineReader {
8
- rl;
9
- buffered = [];
10
- pending;
11
- closed = false;
12
- constructor() {
13
- this.rl = readline.createInterface({
14
- input: process.stdin,
15
- output: process.stdout,
16
- prompt: '',
17
- historySize: 200
18
- });
19
- this.rl.on('line', (line) => {
20
- if (this.pending) {
21
- const resolve = this.pending;
22
- this.pending = undefined;
23
- resolve({ input: line, cancelled: false });
24
- }
25
- else {
26
- this.buffered.push(line);
27
- }
28
- });
29
- this.rl.on('SIGINT', () => {
30
- process.stdout.write('\n');
31
- if (this.pending) {
32
- const resolve = this.pending;
33
- this.pending = undefined;
34
- resolve({ input: '', cancelled: true });
35
- }
36
- });
37
- this.rl.on('close', () => {
38
- this.closed = true;
39
- if (this.pending) {
40
- const resolve = this.pending;
41
- this.pending = undefined;
42
- resolve({ input: '', cancelled: true });
43
- }
44
- });
45
- }
46
- ask(label) {
47
- return new Promise((resolve) => {
48
- if (this.buffered.length > 0) {
49
- const line = this.buffered.shift() ?? '';
50
- resolve({ input: line.trim(), cancelled: false });
51
- return;
52
- }
53
- if (this.closed) {
54
- resolve({ input: '', cancelled: true });
55
- return;
56
- }
57
- process.stdout.write(label + ' ');
58
- this.pending = resolve;
59
- });
60
- }
61
- /** True once stdin hit EOF: no more input will ever arrive. */
62
- isClosed() {
63
- return this.closed;
64
- }
65
- close() {
66
- this.rl.close();
67
- }
68
- }
69
- /** The main session prompt: `ineedcodes ❯` */
70
- export function createPrompt() {
71
- const lr = new LineReader();
72
- const label = () => '\n' + bold(green('ineed')) + dim(' ❯');
73
- return {
74
- ask: () => lr.ask(label()),
75
- question: (text) => lr.ask(text),
76
- isClosed: () => lr.isClosed(),
77
- close: () => lr.close()
78
- };
79
- }
80
- export const BANNER = String.raw `
81
- ██╗███╗ ██╗███████╗███████╗██████╗
82
- ██║████╗ ██║██╔════╝██╔════╝██╔══██╗
83
- ██║██╔██╗ ██║█████╗ █████╗ ██║ ██║
84
- ██║██║╚██╗██║██╔══╝ ██╔══╝ ██║ ██║
85
- ██║██║ ╚████║███████╗███████╗██████╔╝
86
- ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝╚═════╝
87
- your terminal, now autonomous
88
- `;
89
- export function printHelp() {
90
- const rows = [
91
- ['/help', 'show this help'],
92
- ['/model', 'show current model, or pick one interactively from your provider'],
93
- ['/context', 'show what the model can see right now (tokens per part)'],
94
- ['/init', 'scan this project and generate AGENTS.md instructions'],
95
- ['/status', 'show session status'],
96
- ['/agents', 'show sub-agents of the last task'],
97
- ['/memory', 'recall or save memories (e.g. /memory save use pnpm, never npm)'],
98
- ['/skills', 'list available skills; /skills <name> shows the skill text'],
99
- ['/permissions', 'show or change permission mode: ask | workspace | autonomous'],
100
- ['/explain', 'set explanation depth: beginner | balanced | terse'],
101
- ['/resume', 'resume a previous session'],
102
- ['/clear', 'start a fresh session (wipes current conversation)'],
103
- ['/copy', 'copy the last answer to your clipboard'],
104
- ['/compact', 'compact the conversation context now'],
105
- ['/doctor', 'check installation, config, model and memory health'],
106
- ['/setup', 're-run the interactive setup wizard'],
107
- ['/exit', 'leave iNeedCodes (Ctrl+C twice also works)']
108
- ];
109
- process.stdout.write('\n' + bold('Slash commands') + gray(': optional shortcuts; plain language always works:') + '\n');
110
- for (const [cmd, desc] of rows) {
111
- process.stdout.write(` ${cyan(cmd.padEnd(14))} ${dim(desc)}\n`);
112
- }
113
- process.stdout.write('\n' + dim('Just type what you want. Examples:') + '\n');
114
- process.stdout.write(dim(' fix the build errors in this project\n') + dim(' explain this repository like I am a beginner\n'));
115
- }
116
- export function printStatus(info) {
117
- process.stdout.write('\n' + bold('Status') + '\n');
118
- const rows = [
119
- ['model', `${info.model} (${info.provider})`],
120
- ['mode', info.agentMode === 'plan' ? 'plan (read-only)' : 'build (full tools)'],
121
- ['thinking', info.thinking],
122
- ['permission mode', info.mode],
123
- ['explanation depth', info.depth],
124
- ['context', `${info.contextTokens.total}/${info.contextTokens.limit} tokens (compact at ${info.contextTokens.compactsAt})`],
125
- ['project', info.projectRoot],
126
- ['git', info.git],
127
- ['memory', info.memory],
128
- ['skills', info.skills.join(', ') || '(none)'],
129
- ['background processes', String(info.processes)]
130
- ];
131
- for (const [k, v] of rows) {
132
- process.stdout.write(` ${dim(k.padEnd(20))} ${truncate(v, 100)}\n`);
133
- }
134
- }
135
- //# sourceMappingURL=prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import type { RuntimeEvent } from '@ineedcodes/agent';
2
- /**
3
- * Renders agent runtime events into a readable terminal stream.
4
- * Beginners get plain-English narration; the raw data is there for
5
- * advanced users in the tool output blocks.
6
- */
7
- export declare class Renderer {
8
- private currentTurn;
9
- handle(event: RuntimeEvent): Promise<void>;
10
- private renderToolResult;
11
- private describeInput;
12
- private line;
13
- }
@@ -1,95 +0,0 @@
1
- import { bold, dim, gray, green, red, yellow, cyan, magenta, truncate } from './colors.js';
2
- /**
3
- * Renders agent runtime events into a readable terminal stream.
4
- * Beginners get plain-English narration; the raw data is there for
5
- * advanced users in the tool output blocks.
6
- */
7
- export class Renderer {
8
- currentTurn = 0;
9
- async handle(event) {
10
- switch (event.type) {
11
- case 'session-start':
12
- this.line(dim(`─ session started · model ${event.model} · project ${event.projectRoot}`));
13
- break;
14
- case 'turn-start':
15
- this.currentTurn = event.turn;
16
- break;
17
- case 'thinking':
18
- this.line(gray(`· ${truncate(event.text, 200)}`));
19
- break;
20
- case 'assistant-message':
21
- process.stdout.write('\n');
22
- for (const para of event.text.split('\n')) {
23
- this.line(para ? ` ${para}` : '');
24
- }
25
- process.stdout.write('\n');
26
- break;
27
- case 'tool-start':
28
- this.line(cyan(`▸ ${event.tool}`) + gray(` ${this.describeInput(event.input)}`));
29
- break;
30
- case 'tool-result':
31
- this.renderToolResult(event.tool, event.result);
32
- break;
33
- case 'agent-spawned':
34
- this.line(magenta(`◆ sub-agent ${event.capability}`) + gray(` · ${truncate(event.objective, 100)}`));
35
- break;
36
- case 'agent-status':
37
- this.line(magenta(` ↳ status: ${event.status}`));
38
- break;
39
- case 'agent-result':
40
- this.line(magenta(` ✓ result: `) + truncate(event.summary, 160));
41
- break;
42
- case 'boost-phase':
43
- this.line(bold(yellow(`⏻ boost · ${event.phase}`)) + (event.detail ? gray(`: ${truncate(event.detail, 120)}`) : ''));
44
- break;
45
- case 'compaction':
46
- this.line(dim(`⟲ context compacted (turn ${this.currentTurn}); checkpoint preserved.`));
47
- break;
48
- case 'permission-denied':
49
- this.line(yellow(`⚠ permission needed for ${event.tool}: ${truncate(event.reason, 160)}`));
50
- break;
51
- case 'memory-write':
52
- this.line(gray(`✦ remembered: ${truncate(event.content, 140)}`));
53
- break;
54
- case 'skill-invoked':
55
- this.line(magenta(`§ skill: ${event.name}`));
56
- break;
57
- case 'turn-end':
58
- if (event.stopReason !== 'continue') {
59
- this.line(dim(`─ stopped (${event.stopReason}) after turn ${event.turn}`));
60
- }
61
- break;
62
- case 'session-end':
63
- break;
64
- }
65
- }
66
- renderToolResult(tool, result) {
67
- if (result.ok) {
68
- this.line(green(`◂ ${tool}: `) + truncate(result.summary, 150));
69
- }
70
- else {
71
- this.line(red(`◂ ${tool} failed: `) + truncate(result.summary, 200));
72
- }
73
- }
74
- describeInput(input) {
75
- if (input === null || input === undefined)
76
- return '';
77
- if (typeof input !== 'object')
78
- return truncate(String(input), 100);
79
- const record = input;
80
- const parts = [];
81
- for (const key of ['path', 'command', 'query', 'url', 'from', 'to', 'pattern', 'name', 'message', 'content']) {
82
- const v = record[key];
83
- if (typeof v === 'string' && v) {
84
- parts.push(`${key}=${truncate(v, 80)}`);
85
- }
86
- if (parts.length >= 2)
87
- break;
88
- }
89
- return parts.join(' ');
90
- }
91
- line(text) {
92
- process.stdout.write(text + '\n');
93
- }
94
- }
95
- //# sourceMappingURL=renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/ui/renderer.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- {
2
- "name": "@ineedcodes/cli",
3
- "version": "0.1.7",
4
- "description": "iNeedCodes — CLI-first general-purpose autonomous AI agent",
5
- "license": "MIT",
6
- "type": "module",
7
- "bin": {
8
- "ineed": "dist/index.js",
9
- "ineedcodes": "dist/index.js"
10
- },
11
- "main": "dist/index.js",
12
- "types": "dist/index.d.ts",
13
- "scripts": {
14
- "build": "tsc -b"
15
- },
16
- "dependencies": {
17
- "@ineedcodes/agent": "0.1.7",
18
- "@ineedcodes/core": "0.1.7"
19
- },
20
- "devDependencies": {
21
- "@types/node": "^22.0.0"
22
- }
23
- }
@@ -1,32 +0,0 @@
1
- import type { LLMProviderConfig } from '../types.js';
2
- export interface IneedcodesConfig {
3
- providers: Record<string, LLMProviderConfig>;
4
- /** Which provider id to use as the default / Lead model. */
5
- defaultProvider: string;
6
- /** Per-role model selection. Falls back to defaultProvider. */
7
- roleProviders?: Partial<Record<'lead' | 'research' | 'coder' | 'reviewer', string>>;
8
- permissions: {
9
- mode: 'ask' | 'workspace' | 'autonomous';
10
- allow?: string[];
11
- deny?: string[];
12
- maxParallelAgents: number;
13
- };
14
- memory: {
15
- backend: 'icm' | 'off';
16
- database?: string;
17
- };
18
- webSearch?: {
19
- provider: string;
20
- apiKey?: string;
21
- baseUrl?: string;
22
- };
23
- mcpServers?: Record<string, {
24
- command: string;
25
- args?: string[];
26
- env?: Record<string, string>;
27
- }>;
28
- }
29
- export declare function defaultConfig(): IneedcodesConfig;
30
- export declare function configDir(): string;
31
- export declare function loadConfig(): Promise<IneedcodesConfig>;
32
- export declare function saveConfig(config: IneedcodesConfig): Promise<void>;
@@ -1,43 +0,0 @@
1
- import * as path from 'node:path';
2
- import * as os from 'node:os';
3
- import { readJson } from '../util/fs.js';
4
- export function defaultConfig() {
5
- return {
6
- providers: {
7
- default: {
8
- baseUrl: process.env['INEEDCODES_BASE_URL'] ?? 'https://api.openai.com/v1',
9
- apiKey: process.env['INEEDCODES_API_KEY'] ?? process.env['OPENAI_API_KEY'],
10
- model: process.env['INEEDCODES_MODEL'] ?? 'gpt-4.1-mini',
11
- maxRetries: 2
12
- }
13
- },
14
- defaultProvider: 'default',
15
- permissions: {
16
- mode: 'workspace',
17
- maxParallelAgents: 4
18
- },
19
- memory: { backend: 'icm' }
20
- };
21
- }
22
- export function configDir() {
23
- return path.join(os.homedir(), '.ineedcodes');
24
- }
25
- export async function loadConfig() {
26
- const file = path.join(configDir(), 'config.json');
27
- const loaded = await readJson(file);
28
- const base = defaultConfig();
29
- if (!loaded)
30
- return base;
31
- return {
32
- ...base,
33
- ...loaded,
34
- permissions: { ...base.permissions, ...(loaded.permissions ?? {}) },
35
- memory: { ...base.memory, ...(loaded.memory ?? {}) },
36
- providers: { ...base.providers, ...(loaded.providers ?? {}) }
37
- };
38
- }
39
- export async function saveConfig(config) {
40
- const { writeJson } = await import('../util/fs.js');
41
- await writeJson(path.join(configDir(), 'config.json'), config);
42
- }
43
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA0BzC,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,SAAS,EAAE;YACT,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,2BAA2B;gBAC1E,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBAC1E,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,cAAc;gBACxD,UAAU,EAAE,CAAC;aACd;SACF;QACD,eAAe,EAAE,SAAS;QAC1B,WAAW,EAAE;YACX,IAAI,EAAE,WAAW;YACjB,iBAAiB,EAAE,CAAC;SACrB;QACD,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAA4B,IAAI,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO;QACL,GAAG,IAAI;QACP,GAAG,MAAM;QACT,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE;QACnE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;QACpD,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAwB;IACvD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC"}
@@ -1,25 +0,0 @@
1
- import type { ChatMessage, ContextCheckpoint } from '../types.js';
2
- export declare function estimateTokens(text: string): number;
3
- export declare class ContextEngine {
4
- private contextLimit;
5
- /** Fraction of the limit at which compaction triggers. */
6
- private readonly compactAt;
7
- private history;
8
- constructor(contextLimit: number,
9
- /** Fraction of the limit at which compaction triggers. */
10
- compactAt?: number);
11
- get messages(): readonly ChatMessage[];
12
- setMessages(messages: ChatMessage[]): void;
13
- append(message: ChatMessage): void;
14
- replaceLastAssistant(content: string): void;
15
- estimatedTokens(): number;
16
- needsCompaction(): boolean;
17
- /**
18
- * Create a factual checkpoint of the current session, drop redundant raw
19
- * history, and continue. Does NOT touch ICM long-term memory.
20
- */
21
- compact(summarize: (messages: readonly ChatMessage[]) => Promise<ContextCheckpoint>): Promise<ContextCheckpoint>;
22
- private compactAsync;
23
- }
24
- /** Deterministic fallback summarizer when the model call is not desired. */
25
- export declare function heuristicCheckpoint(messages: readonly ChatMessage[]): ContextCheckpoint;
@@ -1,98 +0,0 @@
1
- /**
2
- * The Context Engine manages the *current* model context.
3
- * ICM is long-term memory; this is working memory. They stay separate.
4
- *
5
- * It tracks conversation, project instructions, relevant memory, tool
6
- * results, and sub-agent results: and compacts when approaching the
7
- * model's context limit (plan §31–32).
8
- */
9
- const ROUGH_CHARS_PER_TOKEN = 4;
10
- export function estimateTokens(text) {
11
- return Math.ceil(text.length / ROUGH_CHARS_PER_TOKEN);
12
- }
13
- export class ContextEngine {
14
- contextLimit;
15
- compactAt;
16
- history = [];
17
- constructor(contextLimit,
18
- /** Fraction of the limit at which compaction triggers. */
19
- compactAt = 0.75) {
20
- this.contextLimit = contextLimit;
21
- this.compactAt = compactAt;
22
- }
23
- get messages() {
24
- return this.history;
25
- }
26
- setMessages(messages) {
27
- this.history = [...messages];
28
- }
29
- append(message) {
30
- this.history.push(message);
31
- }
32
- replaceLastAssistant(content) {
33
- for (let i = this.history.length - 1; i >= 0; i--) {
34
- const m = this.history[i];
35
- if (m && m.role === 'assistant') {
36
- this.history[i] = { ...m, content };
37
- return;
38
- }
39
- }
40
- }
41
- estimatedTokens() {
42
- let total = 0;
43
- for (const m of this.history) {
44
- total += estimateTokens(m.content ?? '');
45
- for (const tc of m.toolCalls ?? []) {
46
- total += estimateTokens(tc.arguments) + estimateTokens(tc.name);
47
- }
48
- }
49
- return total;
50
- }
51
- needsCompaction() {
52
- return this.estimatedTokens() > this.contextLimit * this.compactAt;
53
- }
54
- /**
55
- * Create a factual checkpoint of the current session, drop redundant raw
56
- * history, and continue. Does NOT touch ICM long-term memory.
57
- */
58
- compact(summarize) {
59
- return this.compactAsync(summarize);
60
- }
61
- async compactAsync(summarize) {
62
- const keepRecent = 6;
63
- const head = this.history.slice(0, Math.max(0, this.history.length - keepRecent));
64
- const recent = this.history.slice(-keepRecent);
65
- const checkpoint = await summarize(head);
66
- const checkpointText = [
67
- `[Session checkpoint: earlier conversation compacted]`,
68
- `Objective: ${checkpoint.objective}`,
69
- checkpoint.decisions.length ? `Decisions so far:\n- ${checkpoint.decisions.join('\n- ')}` : '',
70
- checkpoint.unresolved.length ? `Unresolved:\n- ${checkpoint.unresolved.join('\n- ')}` : '',
71
- checkpoint.recentSummary ? `Recent work: ${checkpoint.recentSummary}` : ''
72
- ].filter(Boolean).join('\n');
73
- this.history = [
74
- ...this.history.slice(0, 1), // keep the original system message
75
- { role: 'user', content: checkpointText },
76
- ...recent
77
- ];
78
- return checkpoint;
79
- }
80
- }
81
- /** Deterministic fallback summarizer when the model call is not desired. */
82
- export function heuristicCheckpoint(messages) {
83
- const userMessages = messages.filter((m) => m.role === 'user' && m.content).map((m) => m.content);
84
- const toolResults = messages.filter((m) => m.role === 'tool' && m.content).map((m) => m.content);
85
- const decisions = [];
86
- for (const t of toolResults.slice(-20)) {
87
- if (t.includes('exitCode": 0') || t.includes('Patched') || t.includes('Wrote')) {
88
- decisions.push(t.split('\n')[0]?.slice(0, 200) ?? '');
89
- }
90
- }
91
- return {
92
- objective: userMessages[0]?.slice(0, 500) ?? '(unknown objective)',
93
- decisions: decisions.filter(Boolean).slice(0, 10),
94
- unresolved: [],
95
- recentSummary: `Compacted ${messages.length} earlier messages.`
96
- };
97
- }
98
- //# sourceMappingURL=engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/context/engine.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- export * from './types.js';
2
- export * from './config/config.js';
3
- export * from './workspace/workspace.js';
4
- export * from './permissions/permissions.js';
5
- export * from './security/secrets.js';
6
- export * from './shell/process.js';
7
- export * from './tools/registry.js';
8
- export * from './tools/fs.js';
9
- export * from './tools/search.js';
10
- export * from './tools/shell.js';
11
- export * from './tools/git.js';
12
- export * from './tools/web.js';
13
- export * from './tools/mcp.js';
14
- export * from './llm/openai-compatible.js';
15
- export * from './memory/icm-adapter.js';
16
- export * from './context/engine.js';
17
- export * from './session/store.js';
18
- export * from './skills/loader.js';
19
- export * from './util/fs.js';
20
- export * from './util/shell-quote.js';
@@ -1,21 +0,0 @@
1
- export * from './types.js';
2
- export * from './config/config.js';
3
- export * from './workspace/workspace.js';
4
- export * from './permissions/permissions.js';
5
- export * from './security/secrets.js';
6
- export * from './shell/process.js';
7
- export * from './tools/registry.js';
8
- export * from './tools/fs.js';
9
- export * from './tools/search.js';
10
- export * from './tools/shell.js';
11
- export * from './tools/git.js';
12
- export * from './tools/web.js';
13
- export * from './tools/mcp.js';
14
- export * from './llm/openai-compatible.js';
15
- export * from './memory/icm-adapter.js';
16
- export * from './context/engine.js';
17
- export * from './session/store.js';
18
- export * from './skills/loader.js';
19
- export * from './util/fs.js';
20
- export * from './util/shell-quote.js';
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC"}
@@ -1,23 +0,0 @@
1
- import type { ChatRequest, ChatResponse, LLMProvider, LLMProviderConfig } from '../types.js';
2
- /**
3
- * OpenAI-compatible chat-completions provider. Works with any endpoint that
4
- * implements POST /chat/completions with streaming SSE and tool calling.
5
- * Supports the iNeed API through the same interface without hardcoding it.
6
- */
7
- export interface LLMProviderWithConfig extends LLMProvider {
8
- config: LLMProviderConfig;
9
- }
10
- export declare class OpenAICompatibleProvider implements LLMProviderWithConfig {
11
- readonly config: LLMProviderConfig;
12
- readonly id: string;
13
- readonly model: string;
14
- readonly contextLimit: number;
15
- private readonly temperature;
16
- private readonly maxRetries;
17
- constructor(config: LLMProviderConfig, providerId?: string);
18
- complete(request: ChatRequest): Promise<ChatResponse>;
19
- private attempt;
20
- private consumeStream;
21
- private endpointUrl;
22
- }
23
- export declare function createProvider(config: LLMProviderConfig, id: string): LLMProviderWithConfig;