@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.
Files changed (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +116 -0
  3. package/dist/adapters/code-graph.d.ts +18 -0
  4. package/dist/adapters/code-graph.d.ts.map +1 -0
  5. package/dist/adapters/code-graph.js +151 -0
  6. package/dist/adapters/code-graph.js.map +1 -0
  7. package/dist/adapters/memory.d.ts +13 -0
  8. package/dist/adapters/memory.d.ts.map +1 -0
  9. package/dist/adapters/memory.js +110 -0
  10. package/dist/adapters/memory.js.map +1 -0
  11. package/dist/adapters/orchestration/gsd.d.ts +20 -0
  12. package/dist/adapters/orchestration/gsd.d.ts.map +1 -0
  13. package/dist/adapters/orchestration/gsd.js +78 -0
  14. package/dist/adapters/orchestration/gsd.js.map +1 -0
  15. package/dist/adapters/orchestration/interface.d.ts +32 -0
  16. package/dist/adapters/orchestration/interface.d.ts.map +1 -0
  17. package/dist/adapters/orchestration/interface.js +2 -0
  18. package/dist/adapters/orchestration/interface.js.map +1 -0
  19. package/dist/adapters/orchestration/superpowers.d.ts +33 -0
  20. package/dist/adapters/orchestration/superpowers.d.ts.map +1 -0
  21. package/dist/adapters/orchestration/superpowers.js +117 -0
  22. package/dist/adapters/orchestration/superpowers.js.map +1 -0
  23. package/dist/broker/broker.d.ts +40 -0
  24. package/dist/broker/broker.d.ts.map +1 -0
  25. package/dist/broker/broker.js +181 -0
  26. package/dist/broker/broker.js.map +1 -0
  27. package/dist/broker/compressor.d.ts +7 -0
  28. package/dist/broker/compressor.d.ts.map +1 -0
  29. package/dist/broker/compressor.js +61 -0
  30. package/dist/broker/compressor.js.map +1 -0
  31. package/dist/broker/context-pack.d.ts +126 -0
  32. package/dist/broker/context-pack.d.ts.map +1 -0
  33. package/dist/broker/context-pack.js +103 -0
  34. package/dist/broker/context-pack.js.map +1 -0
  35. package/dist/broker/query-parser.d.ts +17 -0
  36. package/dist/broker/query-parser.d.ts.map +1 -0
  37. package/dist/broker/query-parser.js +127 -0
  38. package/dist/broker/query-parser.js.map +1 -0
  39. package/dist/cli/commands/chat.d.ts +13 -0
  40. package/dist/cli/commands/chat.d.ts.map +1 -0
  41. package/dist/cli/commands/chat.js +264 -0
  42. package/dist/cli/commands/chat.js.map +1 -0
  43. package/dist/cli/commands/config.d.ts +14 -0
  44. package/dist/cli/commands/config.d.ts.map +1 -0
  45. package/dist/cli/commands/config.js +94 -0
  46. package/dist/cli/commands/config.js.map +1 -0
  47. package/dist/cli/commands/memory.d.ts +10 -0
  48. package/dist/cli/commands/memory.d.ts.map +1 -0
  49. package/dist/cli/commands/memory.js +52 -0
  50. package/dist/cli/commands/memory.js.map +1 -0
  51. package/dist/cli/commands/search.d.ts +9 -0
  52. package/dist/cli/commands/search.d.ts.map +1 -0
  53. package/dist/cli/commands/search.js +45 -0
  54. package/dist/cli/commands/search.js.map +1 -0
  55. package/dist/cli/commands/session.d.ts +9 -0
  56. package/dist/cli/commands/session.d.ts.map +1 -0
  57. package/dist/cli/commands/session.js +86 -0
  58. package/dist/cli/commands/session.js.map +1 -0
  59. package/dist/cli/index.d.ts +3 -0
  60. package/dist/cli/index.d.ts.map +1 -0
  61. package/dist/cli/index.js +77 -0
  62. package/dist/cli/index.js.map +1 -0
  63. package/dist/cli/tui/renderer.d.ts +47 -0
  64. package/dist/cli/tui/renderer.d.ts.map +1 -0
  65. package/dist/cli/tui/renderer.js +237 -0
  66. package/dist/cli/tui/renderer.js.map +1 -0
  67. package/dist/hooks/session-start.d.ts +11 -0
  68. package/dist/hooks/session-start.d.ts.map +1 -0
  69. package/dist/hooks/session-start.js +51 -0
  70. package/dist/hooks/session-start.js.map +1 -0
  71. package/dist/hooks/stop.d.ts +11 -0
  72. package/dist/hooks/stop.d.ts.map +1 -0
  73. package/dist/hooks/stop.js +93 -0
  74. package/dist/hooks/stop.js.map +1 -0
  75. package/dist/hooks/user-prompt.d.ts +12 -0
  76. package/dist/hooks/user-prompt.d.ts.map +1 -0
  77. package/dist/hooks/user-prompt.js +46 -0
  78. package/dist/hooks/user-prompt.js.map +1 -0
  79. package/dist/providers/anthropic-api.d.ts +25 -0
  80. package/dist/providers/anthropic-api.d.ts.map +1 -0
  81. package/dist/providers/anthropic-api.js +93 -0
  82. package/dist/providers/anthropic-api.js.map +1 -0
  83. package/dist/providers/claude-cli.d.ts +16 -0
  84. package/dist/providers/claude-cli.d.ts.map +1 -0
  85. package/dist/providers/claude-cli.js +72 -0
  86. package/dist/providers/claude-cli.js.map +1 -0
  87. package/dist/providers/claude-sdk.d.ts +18 -0
  88. package/dist/providers/claude-sdk.d.ts.map +1 -0
  89. package/dist/providers/claude-sdk.js +141 -0
  90. package/dist/providers/claude-sdk.js.map +1 -0
  91. package/dist/providers/interface.d.ts +36 -0
  92. package/dist/providers/interface.d.ts.map +1 -0
  93. package/dist/providers/interface.js +2 -0
  94. package/dist/providers/interface.js.map +1 -0
  95. package/dist/scripts/install-hooks.d.ts +11 -0
  96. package/dist/scripts/install-hooks.d.ts.map +1 -0
  97. package/dist/scripts/install-hooks.js +86 -0
  98. package/dist/scripts/install-hooks.js.map +1 -0
  99. package/dist/session/manager.d.ts +65 -0
  100. package/dist/session/manager.d.ts.map +1 -0
  101. package/dist/session/manager.js +143 -0
  102. package/dist/session/manager.js.map +1 -0
  103. package/dist/session/schema.d.ts +7 -0
  104. package/dist/session/schema.d.ts.map +1 -0
  105. package/dist/session/schema.js +82 -0
  106. package/dist/session/schema.js.map +1 -0
  107. package/dist/utils/exec.d.ts +20 -0
  108. package/dist/utils/exec.d.ts.map +1 -0
  109. package/dist/utils/exec.js +28 -0
  110. package/dist/utils/exec.js.map +1 -0
  111. package/dist/utils/tokens.d.ts +12 -0
  112. package/dist/utils/tokens.d.ts.map +1 -0
  113. package/dist/utils/tokens.js +38 -0
  114. package/dist/utils/tokens.js.map +1 -0
  115. package/package.json +90 -0
  116. package/src/skills/brainstorm.md +33 -0
  117. 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,7 @@
1
+ import Database from 'better-sqlite3';
2
+ /**
3
+ * Open (or create) the codeagent SQLite database.
4
+ * Default location: <repoRoot>/data/codeagent.db
5
+ */
6
+ export declare function openDatabase(dbPath?: string): Database.Database;
7
+ //# sourceMappingURL=schema.d.ts.map
@@ -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