@sdsrs/codeagent 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.
- package/LICENSE +21 -0
- package/README.md +116 -0
- package/dist/adapters/code-graph.d.ts +18 -0
- package/dist/adapters/code-graph.d.ts.map +1 -0
- package/dist/adapters/code-graph.js +151 -0
- package/dist/adapters/code-graph.js.map +1 -0
- package/dist/adapters/memory.d.ts +13 -0
- package/dist/adapters/memory.d.ts.map +1 -0
- package/dist/adapters/memory.js +110 -0
- package/dist/adapters/memory.js.map +1 -0
- package/dist/adapters/orchestration/gsd.d.ts +20 -0
- package/dist/adapters/orchestration/gsd.d.ts.map +1 -0
- package/dist/adapters/orchestration/gsd.js +78 -0
- package/dist/adapters/orchestration/gsd.js.map +1 -0
- package/dist/adapters/orchestration/interface.d.ts +32 -0
- package/dist/adapters/orchestration/interface.d.ts.map +1 -0
- package/dist/adapters/orchestration/interface.js +2 -0
- package/dist/adapters/orchestration/interface.js.map +1 -0
- package/dist/adapters/orchestration/superpowers.d.ts +33 -0
- package/dist/adapters/orchestration/superpowers.d.ts.map +1 -0
- package/dist/adapters/orchestration/superpowers.js +117 -0
- package/dist/adapters/orchestration/superpowers.js.map +1 -0
- package/dist/broker/broker.d.ts +40 -0
- package/dist/broker/broker.d.ts.map +1 -0
- package/dist/broker/broker.js +181 -0
- package/dist/broker/broker.js.map +1 -0
- package/dist/broker/compressor.d.ts +7 -0
- package/dist/broker/compressor.d.ts.map +1 -0
- package/dist/broker/compressor.js +61 -0
- package/dist/broker/compressor.js.map +1 -0
- package/dist/broker/context-pack.d.ts +126 -0
- package/dist/broker/context-pack.d.ts.map +1 -0
- package/dist/broker/context-pack.js +103 -0
- package/dist/broker/context-pack.js.map +1 -0
- package/dist/broker/query-parser.d.ts +17 -0
- package/dist/broker/query-parser.d.ts.map +1 -0
- package/dist/broker/query-parser.js +127 -0
- package/dist/broker/query-parser.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +13 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +264 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/config.d.ts +14 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +94 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/memory.d.ts +10 -0
- package/dist/cli/commands/memory.d.ts.map +1 -0
- package/dist/cli/commands/memory.js +52 -0
- package/dist/cli/commands/memory.js.map +1 -0
- package/dist/cli/commands/search.d.ts +9 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +45 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/session.d.ts +9 -0
- package/dist/cli/commands/session.d.ts.map +1 -0
- package/dist/cli/commands/session.js +86 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +77 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/tui/renderer.d.ts +47 -0
- package/dist/cli/tui/renderer.d.ts.map +1 -0
- package/dist/cli/tui/renderer.js +237 -0
- package/dist/cli/tui/renderer.js.map +1 -0
- package/dist/hooks/session-start.d.ts +11 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +51 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/hooks/stop.d.ts +11 -0
- package/dist/hooks/stop.d.ts.map +1 -0
- package/dist/hooks/stop.js +93 -0
- package/dist/hooks/stop.js.map +1 -0
- package/dist/hooks/user-prompt.d.ts +12 -0
- package/dist/hooks/user-prompt.d.ts.map +1 -0
- package/dist/hooks/user-prompt.js +46 -0
- package/dist/hooks/user-prompt.js.map +1 -0
- package/dist/providers/anthropic-api.d.ts +25 -0
- package/dist/providers/anthropic-api.d.ts.map +1 -0
- package/dist/providers/anthropic-api.js +93 -0
- package/dist/providers/anthropic-api.js.map +1 -0
- package/dist/providers/claude-cli.d.ts +16 -0
- package/dist/providers/claude-cli.d.ts.map +1 -0
- package/dist/providers/claude-cli.js +72 -0
- package/dist/providers/claude-cli.js.map +1 -0
- package/dist/providers/claude-sdk.d.ts +18 -0
- package/dist/providers/claude-sdk.d.ts.map +1 -0
- package/dist/providers/claude-sdk.js +141 -0
- package/dist/providers/claude-sdk.js.map +1 -0
- package/dist/providers/interface.d.ts +36 -0
- package/dist/providers/interface.d.ts.map +1 -0
- package/dist/providers/interface.js +2 -0
- package/dist/providers/interface.js.map +1 -0
- package/dist/scripts/install-hooks.d.ts +11 -0
- package/dist/scripts/install-hooks.d.ts.map +1 -0
- package/dist/scripts/install-hooks.js +86 -0
- package/dist/scripts/install-hooks.js.map +1 -0
- package/dist/session/manager.d.ts +65 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +143 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/schema.d.ts +7 -0
- package/dist/session/schema.d.ts.map +1 -0
- package/dist/session/schema.js +82 -0
- package/dist/session/schema.js.map +1 -0
- package/dist/utils/exec.d.ts +20 -0
- package/dist/utils/exec.d.ts.map +1 -0
- package/dist/utils/exec.js +28 -0
- package/dist/utils/exec.js.map +1 -0
- package/dist/utils/tokens.d.ts +12 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js +38 -0
- package/dist/utils/tokens.js.map +1 -0
- package/package.json +90 -0
- package/src/skills/brainstorm.md +33 -0
- package/src/skills/review.md +41 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/session/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/session/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AA8CtC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAe/D"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
const SCHEMA_VERSION = 1;
|
|
5
|
+
const MIGRATIONS = [
|
|
6
|
+
// V1: Initial schema
|
|
7
|
+
`
|
|
8
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
9
|
+
id TEXT PRIMARY KEY,
|
|
10
|
+
repo_root TEXT NOT NULL,
|
|
11
|
+
provider TEXT NOT NULL DEFAULT 'sdk',
|
|
12
|
+
provider_session_id TEXT,
|
|
13
|
+
orchestration TEXT NOT NULL DEFAULT 'gsd',
|
|
14
|
+
stage TEXT DEFAULT 'general',
|
|
15
|
+
title TEXT,
|
|
16
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
17
|
+
branch TEXT,
|
|
18
|
+
active_spec_id TEXT,
|
|
19
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
20
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
CREATE TABLE IF NOT EXISTS session_events (
|
|
24
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
25
|
+
session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
|
|
26
|
+
event_type TEXT NOT NULL,
|
|
27
|
+
payload TEXT,
|
|
28
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
CREATE INDEX IF NOT EXISTS idx_session_events_session
|
|
32
|
+
ON session_events(session_id, created_at);
|
|
33
|
+
|
|
34
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_status
|
|
35
|
+
ON sessions(status, updated_at DESC);
|
|
36
|
+
|
|
37
|
+
CREATE TABLE IF NOT EXISTS schema_version (
|
|
38
|
+
version INTEGER PRIMARY KEY
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
INSERT INTO schema_version (version) VALUES (${SCHEMA_VERSION});
|
|
42
|
+
`,
|
|
43
|
+
];
|
|
44
|
+
/**
|
|
45
|
+
* Open (or create) the codeagent SQLite database.
|
|
46
|
+
* Default location: <repoRoot>/data/codeagent.db
|
|
47
|
+
*/
|
|
48
|
+
export function openDatabase(dbPath) {
|
|
49
|
+
const resolvedPath = dbPath || getDefaultDbPath();
|
|
50
|
+
const dir = path.dirname(resolvedPath);
|
|
51
|
+
if (!fs.existsSync(dir)) {
|
|
52
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
53
|
+
}
|
|
54
|
+
const db = new Database(resolvedPath);
|
|
55
|
+
db.pragma('journal_mode = WAL');
|
|
56
|
+
db.pragma('foreign_keys = ON');
|
|
57
|
+
// Run migrations
|
|
58
|
+
ensureSchema(db);
|
|
59
|
+
return db;
|
|
60
|
+
}
|
|
61
|
+
function getDefaultDbPath() {
|
|
62
|
+
// Store in XDG data dir or fallback to home
|
|
63
|
+
const dataDir = process.env.XDG_DATA_HOME || path.join(process.env.HOME || '', '.local', 'share');
|
|
64
|
+
return path.join(dataDir, 'codeagent', 'codeagent.db');
|
|
65
|
+
}
|
|
66
|
+
function ensureSchema(db) {
|
|
67
|
+
// Check current version
|
|
68
|
+
let currentVersion = 0;
|
|
69
|
+
try {
|
|
70
|
+
const row = db.prepare('SELECT version FROM schema_version LIMIT 1').get();
|
|
71
|
+
if (row)
|
|
72
|
+
currentVersion = row.version;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Table doesn't exist yet
|
|
76
|
+
}
|
|
77
|
+
// Apply pending migrations
|
|
78
|
+
for (let i = currentVersion; i < MIGRATIONS.length; i++) {
|
|
79
|
+
db.exec(MIGRATIONS[i]);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/session/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,UAAU,GAAa;IAC3B,qBAAqB;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAkC+C,cAAc;GAC5D;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,MAAM,YAAY,GAAG,MAAM,IAAI,gBAAgB,EAAE,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,iBAAiB;IACjB,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,gBAAgB;IACvB,4CAA4C;IAC5C,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,YAAY,CAAC,EAAqB;IACzC,wBAAwB;IACxB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,EAE3D,CAAC;QACd,IAAI,GAAG;YAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IAED,2BAA2B;IAC3B,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface ExecResult {
|
|
2
|
+
stdout: string;
|
|
3
|
+
ok: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Execute a command with timeout and error handling.
|
|
7
|
+
* Returns { stdout, ok } — never throws.
|
|
8
|
+
*/
|
|
9
|
+
export declare function execSafe(cmd: string, opts?: {
|
|
10
|
+
cwd?: string;
|
|
11
|
+
timeout?: number;
|
|
12
|
+
}): ExecResult;
|
|
13
|
+
/**
|
|
14
|
+
* Execute a command, return stdout or empty string on failure.
|
|
15
|
+
*/
|
|
16
|
+
export declare function execQuiet(cmd: string, opts?: {
|
|
17
|
+
cwd?: string;
|
|
18
|
+
timeout?: number;
|
|
19
|
+
}): string;
|
|
20
|
+
//# sourceMappingURL=exec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/utils/exec.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,UAAU,CAcZ;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,MAAM,CAER"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
/**
|
|
3
|
+
* Execute a command with timeout and error handling.
|
|
4
|
+
* Returns { stdout, ok } — never throws.
|
|
5
|
+
*/
|
|
6
|
+
export function execSafe(cmd, opts = {}) {
|
|
7
|
+
const { cwd = process.cwd(), timeout = 3000 } = opts;
|
|
8
|
+
try {
|
|
9
|
+
const stdout = execSync(cmd, {
|
|
10
|
+
cwd,
|
|
11
|
+
timeout,
|
|
12
|
+
encoding: 'utf8',
|
|
13
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
14
|
+
maxBuffer: 1024 * 1024, // 1MB
|
|
15
|
+
});
|
|
16
|
+
return { stdout: stdout.trim(), ok: true };
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return { stdout: '', ok: false };
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Execute a command, return stdout or empty string on failure.
|
|
24
|
+
*/
|
|
25
|
+
export function execQuiet(cmd, opts = {}) {
|
|
26
|
+
return execSafe(cmd, opts).stdout;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/utils/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwB,MAAM,oBAAoB,CAAC;AAOpE;;;GAGG;AACH,MAAM,UAAU,QAAQ,CACtB,GAAW,EACX,OAA2C,EAAE;IAE7C,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE;YAC3B,GAAG;YACH,OAAO;YACP,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM;SACL,CAAC,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,GAAW,EACX,OAA2C,EAAE;IAE7C,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rough token count estimator.
|
|
3
|
+
* Approximation: ~4 chars per token for English, ~2 chars per token for CJK.
|
|
4
|
+
* Good enough for budget management — no need for tiktoken dependency.
|
|
5
|
+
*/
|
|
6
|
+
export declare function estimateTokens(text: string): number;
|
|
7
|
+
/**
|
|
8
|
+
* Truncate text to fit within a token budget.
|
|
9
|
+
* Truncates at line boundaries to avoid cutting mid-sentence.
|
|
10
|
+
*/
|
|
11
|
+
export declare function truncateToTokenBudget(text: string, budget: number): string;
|
|
12
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAqB1E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rough token count estimator.
|
|
3
|
+
* Approximation: ~4 chars per token for English, ~2 chars per token for CJK.
|
|
4
|
+
* Good enough for budget management — no need for tiktoken dependency.
|
|
5
|
+
*/
|
|
6
|
+
export function estimateTokens(text) {
|
|
7
|
+
if (!text)
|
|
8
|
+
return 0;
|
|
9
|
+
// Count CJK characters (roughly 2 chars per token)
|
|
10
|
+
const cjkCount = (text.match(/[\u4e00-\u9fff\u3000-\u303f\uff00-\uffef]/g) || []).length;
|
|
11
|
+
const nonCjkLength = text.length - cjkCount;
|
|
12
|
+
return Math.ceil(nonCjkLength / 4 + cjkCount / 2);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Truncate text to fit within a token budget.
|
|
16
|
+
* Truncates at line boundaries to avoid cutting mid-sentence.
|
|
17
|
+
*/
|
|
18
|
+
export function truncateToTokenBudget(text, budget) {
|
|
19
|
+
if (estimateTokens(text) <= budget)
|
|
20
|
+
return text;
|
|
21
|
+
const lines = text.split('\n');
|
|
22
|
+
const result = [];
|
|
23
|
+
let used = 0;
|
|
24
|
+
for (const line of lines) {
|
|
25
|
+
const lineTokens = estimateTokens(line);
|
|
26
|
+
if (used + lineTokens > budget)
|
|
27
|
+
break;
|
|
28
|
+
result.push(line);
|
|
29
|
+
used += lineTokens;
|
|
30
|
+
}
|
|
31
|
+
if (result.length === 0 && lines.length > 0) {
|
|
32
|
+
// At least include first line truncated
|
|
33
|
+
const chars = Math.floor(budget * 3); // rough char estimate
|
|
34
|
+
return lines[0].slice(0, chars) + '...';
|
|
35
|
+
}
|
|
36
|
+
return result.join('\n');
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IACpB,mDAAmD;IACnD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,4CAA4C,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACzF,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,MAAc;IAChE,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IAEhD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,IAAI,GAAG,UAAU,GAAG,MAAM;YAAE,MAAM;QACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,IAAI,UAAU,CAAC;IACrB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,wCAAwC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB;QAC5D,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sdsrs/codeagent",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CodeAgent — Context Broker + CLI for intelligent coding assistance. Integrates code search, memory, and orchestration.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/broker/broker.js",
|
|
7
|
+
"types": "dist/broker/broker.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/broker/broker.d.ts",
|
|
11
|
+
"import": "./dist/broker/broker.js"
|
|
12
|
+
},
|
|
13
|
+
"./broker": {
|
|
14
|
+
"types": "./dist/broker/broker.d.ts",
|
|
15
|
+
"import": "./dist/broker/broker.js"
|
|
16
|
+
},
|
|
17
|
+
"./context-pack": {
|
|
18
|
+
"types": "./dist/broker/context-pack.d.ts",
|
|
19
|
+
"import": "./dist/broker/context-pack.js"
|
|
20
|
+
},
|
|
21
|
+
"./providers/*": {
|
|
22
|
+
"types": "./dist/providers/*.d.ts",
|
|
23
|
+
"import": "./dist/providers/*.js"
|
|
24
|
+
},
|
|
25
|
+
"./session": {
|
|
26
|
+
"types": "./dist/session/manager.d.ts",
|
|
27
|
+
"import": "./dist/session/manager.js"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"bin": {
|
|
31
|
+
"codeagent": "dist/cli/index.js",
|
|
32
|
+
"devx": "dist/cli/index.js"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist/",
|
|
36
|
+
"src/skills/",
|
|
37
|
+
"README.md",
|
|
38
|
+
"LICENSE"
|
|
39
|
+
],
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "tsc",
|
|
42
|
+
"dev": "tsc --watch",
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"test:watch": "vitest",
|
|
45
|
+
"lint": "tsc --noEmit",
|
|
46
|
+
"test:integration": "vitest run tests/integration",
|
|
47
|
+
"install-hooks": "node dist/scripts/install-hooks.js",
|
|
48
|
+
"install-hooks:global": "node dist/scripts/install-hooks.js --global",
|
|
49
|
+
"prepublishOnly": "npm run lint && npm run build && npm test",
|
|
50
|
+
"postbuild": "chmod +x dist/cli/index.js"
|
|
51
|
+
},
|
|
52
|
+
"keywords": [
|
|
53
|
+
"agent",
|
|
54
|
+
"coding",
|
|
55
|
+
"context-broker",
|
|
56
|
+
"claude",
|
|
57
|
+
"ai",
|
|
58
|
+
"coding-assistant",
|
|
59
|
+
"cli",
|
|
60
|
+
"mcp",
|
|
61
|
+
"code-search",
|
|
62
|
+
"memory"
|
|
63
|
+
],
|
|
64
|
+
"author": "sdsrs",
|
|
65
|
+
"license": "MIT",
|
|
66
|
+
"repository": {
|
|
67
|
+
"type": "git",
|
|
68
|
+
"url": "https://github.com/sdsrs/codeagent.git"
|
|
69
|
+
},
|
|
70
|
+
"homepage": "https://github.com/sdsrs/codeagent#readme",
|
|
71
|
+
"bugs": {
|
|
72
|
+
"url": "https://github.com/sdsrs/codeagent/issues"
|
|
73
|
+
},
|
|
74
|
+
"engines": {
|
|
75
|
+
"node": ">=20"
|
|
76
|
+
},
|
|
77
|
+
"dependencies": {
|
|
78
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.77",
|
|
79
|
+
"@anthropic-ai/sdk": "^0.79.0",
|
|
80
|
+
"commander": "^13.0.0",
|
|
81
|
+
"zod": "^4.0.0",
|
|
82
|
+
"better-sqlite3": "^11.0.0"
|
|
83
|
+
},
|
|
84
|
+
"devDependencies": {
|
|
85
|
+
"@types/node": "^22.0.0",
|
|
86
|
+
"@types/better-sqlite3": "^7.6.0",
|
|
87
|
+
"typescript": "^5.7.0",
|
|
88
|
+
"vitest": "^3.0.0"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codeagent-brainstorm
|
|
3
|
+
description: Force brainstorm mode with full context injection from CodeAgent
|
|
4
|
+
user_invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# CodeAgent Brainstorm
|
|
8
|
+
|
|
9
|
+
You are entering **brainstorm mode**. Before discussing implementation, explore the problem space thoroughly.
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
|
|
13
|
+
The CodeAgent Context Broker has automatically injected relevant context above. Use it as your foundation.
|
|
14
|
+
|
|
15
|
+
## Process
|
|
16
|
+
|
|
17
|
+
1. **Understand** — Read the injected context carefully. What does the code currently do? What patterns exist?
|
|
18
|
+
2. **Explore** — What are the possible approaches? List at least 3 alternatives.
|
|
19
|
+
3. **Analyze** — For each approach, consider:
|
|
20
|
+
- Complexity and effort
|
|
21
|
+
- Impact on existing code
|
|
22
|
+
- Edge cases and failure modes
|
|
23
|
+
- Alignment with existing patterns
|
|
24
|
+
4. **Recommend** — Pick the best approach with clear reasoning.
|
|
25
|
+
5. **Output** — Present your analysis in a structured format.
|
|
26
|
+
|
|
27
|
+
## Rules
|
|
28
|
+
|
|
29
|
+
- Do NOT write code yet — this is exploration only
|
|
30
|
+
- DO reference specific files and functions from the injected context
|
|
31
|
+
- DO consider what memory entries suggest about past decisions
|
|
32
|
+
- If orchestration state shows active tasks, align your brainstorm with them
|
|
33
|
+
- Ask clarifying questions if the problem is ambiguous
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codeagent-review
|
|
3
|
+
description: Code review with bug memory awareness from CodeAgent
|
|
4
|
+
user_invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# CodeAgent Code Review
|
|
8
|
+
|
|
9
|
+
You are performing a **code review** enhanced by CodeAgent's context.
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
|
|
13
|
+
The CodeAgent Context Broker has injected:
|
|
14
|
+
- **Bug warnings**: Past bugs related to the changed code — pay extra attention to these
|
|
15
|
+
- **Code context**: Related files and symbols that might be affected
|
|
16
|
+
- **Memories**: Past decisions and conventions that apply
|
|
17
|
+
|
|
18
|
+
## Review Checklist
|
|
19
|
+
|
|
20
|
+
1. **Bug regression** — Check if any changes could re-introduce bugs flagged in the warnings
|
|
21
|
+
2. **Impact analysis** — Review the symbol relationships. Are all callers/callees handled?
|
|
22
|
+
3. **Convention adherence** — Do changes follow patterns identified in prior memories?
|
|
23
|
+
4. **Edge cases** — Missing error handling, boundary conditions, null checks
|
|
24
|
+
5. **Security** — Input validation, injection risks, auth checks
|
|
25
|
+
6. **Performance** — N+1 queries, unnecessary allocations, missing indexes
|
|
26
|
+
|
|
27
|
+
## Output Format
|
|
28
|
+
|
|
29
|
+
For each finding:
|
|
30
|
+
```
|
|
31
|
+
[severity: critical|warning|info] file:line
|
|
32
|
+
Description of the issue.
|
|
33
|
+
Suggested fix (if applicable).
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Rules
|
|
37
|
+
|
|
38
|
+
- Be specific — reference exact lines and symbols
|
|
39
|
+
- Prioritize: critical > warning > info
|
|
40
|
+
- If bug memory warns about an area, verify the fix is still intact
|
|
41
|
+
- Do NOT suggest style changes unless they affect readability significantly
|