compact-agent 1.9.0 → 1.10.1
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/dist/config.js +10 -1
- package/dist/config.js.map +1 -1
- package/dist/index.js +171 -5
- package/dist/index.js.map +1 -1
- package/dist/mempalace/index.d.ts +111 -0
- package/dist/mempalace/index.js +221 -0
- package/dist/mempalace/index.js.map +1 -0
- package/dist/mempalace/search.d.ts +38 -0
- package/dist/mempalace/search.js +133 -0
- package/dist/mempalace/search.js.map +1 -0
- package/dist/mempalace/store.d.ts +77 -0
- package/dist/mempalace/store.js +332 -0
- package/dist/mempalace/store.js.map +1 -0
- package/dist/mempalace/types.d.ts +140 -0
- package/dist/mempalace/types.js +27 -0
- package/dist/mempalace/types.js.map +1 -0
- package/dist/system-prompt.js +28 -0
- package/dist/system-prompt.js.map +1 -1
- package/dist/tools/index.js +9 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory.d.ts +30 -0
- package/dist/tools/memory.js +319 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MemPalace-backed memory tools the agent can call.
|
|
3
|
+
*
|
|
4
|
+
* Surface (kept small, action-oriented):
|
|
5
|
+
* memory_search read full-text search across global + project stores
|
|
6
|
+
* memory_recall read fetch a specific drawer by id, plus its tunnels
|
|
7
|
+
* memory_add write create a new drawer (or save a fact via KG)
|
|
8
|
+
* memory_link write tunnel between two drawers
|
|
9
|
+
* memory_list read inventory: wings/rooms/recent drawers
|
|
10
|
+
*
|
|
11
|
+
* The agent should reach for these whenever the user mentions facts that
|
|
12
|
+
* are worth keeping across sessions ("I always use vitest, never jest"),
|
|
13
|
+
* codebase landmarks ("the auth flow lives in src/auth/oauth.ts"), or
|
|
14
|
+
* lessons learned during this turn that future sessions would benefit
|
|
15
|
+
* from. The system prompt nudges this — see src/system-prompt.ts.
|
|
16
|
+
*
|
|
17
|
+
* All write tools are marked isDestructive: false because they only
|
|
18
|
+
* append to a local file — no network, no external state. They still
|
|
19
|
+
* require permission in `ask` mode by default but don't trigger the
|
|
20
|
+
* destructive-action verbal-confirm path.
|
|
21
|
+
*/
|
|
22
|
+
import { addDrawer, getDrawer, listDrawers, search, linkDrawers, kgAdd, kgQuery, listWings, listRooms, stats, } from '../mempalace/index.js';
|
|
23
|
+
// ── memory_add ────────────────────────────────────────────
|
|
24
|
+
export const MemoryAddTool = {
|
|
25
|
+
name: 'memory_add',
|
|
26
|
+
description: 'Save a memory drawer to the MemPalace store. Use this when the user mentions ' +
|
|
27
|
+
'a fact, preference, codebase landmark, or lesson worth remembering across sessions. ' +
|
|
28
|
+
'Scope: "global" for user preferences / cross-project facts, "project" for ' +
|
|
29
|
+
'codebase-specific knowledge, "auto" (default) to infer from content. ' +
|
|
30
|
+
'Pick a sensible wing ("preferences", "code", "people", "projects", "lessons") and ' +
|
|
31
|
+
'a room (the project name, person name, or topic). Tag generously — tags are the ' +
|
|
32
|
+
'strongest search signal.',
|
|
33
|
+
parameters: {
|
|
34
|
+
type: 'object',
|
|
35
|
+
properties: {
|
|
36
|
+
wing: { type: 'string', description: 'Top-level domain, e.g. "preferences" / "code" / "lessons"' },
|
|
37
|
+
room: { type: 'string', description: 'Category within the wing, e.g. project name or topic' },
|
|
38
|
+
content: { type: 'string', description: 'The memory text. Be concise but specific.' },
|
|
39
|
+
tags: { type: 'array', description: 'Lowercase keywords for filtering + search', items: { type: 'string' } },
|
|
40
|
+
importance: { type: 'number', description: '0..1, default 0.5. Boosts search ranking.' },
|
|
41
|
+
scope: { type: 'string', description: '"global" | "project" | "auto" (default auto)' },
|
|
42
|
+
},
|
|
43
|
+
required: ['wing', 'room', 'content'],
|
|
44
|
+
},
|
|
45
|
+
isReadOnly: false,
|
|
46
|
+
isDestructive: false,
|
|
47
|
+
async call(input, cwd) {
|
|
48
|
+
try {
|
|
49
|
+
const drawer = addDrawer({
|
|
50
|
+
wing: input.wing,
|
|
51
|
+
room: input.room,
|
|
52
|
+
content: input.content,
|
|
53
|
+
tags: input.tags || [],
|
|
54
|
+
importance: typeof input.importance === 'number' ? input.importance : undefined,
|
|
55
|
+
scope: input.scope || 'auto',
|
|
56
|
+
cwd,
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
output: `Saved drawer ${drawer.id} (${drawer.scope}: ${drawer.wing}/${drawer.room}).`,
|
|
60
|
+
isError: false,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
return { output: `Error saving drawer: ${e instanceof Error ? e.message : e}`, isError: true };
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
// ── memory_search ─────────────────────────────────────────
|
|
69
|
+
export const MemorySearchTool = {
|
|
70
|
+
name: 'memory_search',
|
|
71
|
+
description: 'Search the MemPalace store for drawers matching a query. Searches both ' +
|
|
72
|
+
'global and project memory by default; pass scope to narrow. Returns top ' +
|
|
73
|
+
'hits ranked by relevance with their wing/room and content excerpt. Use ' +
|
|
74
|
+
'this BEFORE proposing something the user may have said before, and to ' +
|
|
75
|
+
'recall codebase landmarks instead of re-discovering them.',
|
|
76
|
+
parameters: {
|
|
77
|
+
type: 'object',
|
|
78
|
+
properties: {
|
|
79
|
+
query: { type: 'string', description: 'Free-text query; keywords work best' },
|
|
80
|
+
scope: { type: 'string', description: '"global" | "project" | "both" (default both)' },
|
|
81
|
+
wing: { type: 'string', description: 'Optional wing filter' },
|
|
82
|
+
room: { type: 'string', description: 'Optional room filter' },
|
|
83
|
+
tags: { type: 'array', description: 'Optional tag AND-filter', items: { type: 'string' } },
|
|
84
|
+
limit: { type: 'number', description: 'Max results, default 10' },
|
|
85
|
+
},
|
|
86
|
+
required: ['query'],
|
|
87
|
+
},
|
|
88
|
+
isReadOnly: true,
|
|
89
|
+
isDestructive: false,
|
|
90
|
+
async call(input, cwd) {
|
|
91
|
+
try {
|
|
92
|
+
const hits = search(input.query, cwd, {
|
|
93
|
+
scope: input.scope || 'both',
|
|
94
|
+
wing: input.wing,
|
|
95
|
+
room: input.room,
|
|
96
|
+
tags: input.tags || undefined,
|
|
97
|
+
limit: typeof input.limit === 'number' ? input.limit : 10,
|
|
98
|
+
});
|
|
99
|
+
if (hits.length === 0) {
|
|
100
|
+
return { output: `No drawers matched "${input.query}".`, isError: false };
|
|
101
|
+
}
|
|
102
|
+
const lines = hits.map((h) => {
|
|
103
|
+
const excerpt = h.drawer.content.length > 200
|
|
104
|
+
? h.drawer.content.slice(0, 200) + '…'
|
|
105
|
+
: h.drawer.content;
|
|
106
|
+
const tagStr = h.drawer.tags.length > 0 ? ` [${h.drawer.tags.join(', ')}]` : '';
|
|
107
|
+
return `${h.drawer.id} (${h.drawer.scope} · ${h.drawer.wing}/${h.drawer.room}${tagStr}) score=${h.score.toFixed(2)}\n ${excerpt}`;
|
|
108
|
+
});
|
|
109
|
+
return { output: `Found ${hits.length} drawer(s):\n\n${lines.join('\n\n')}`, isError: false };
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
return { output: `Error searching: ${e instanceof Error ? e.message : e}`, isError: true };
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
// ── memory_recall ─────────────────────────────────────────
|
|
117
|
+
export const MemoryRecallTool = {
|
|
118
|
+
name: 'memory_recall',
|
|
119
|
+
description: 'Fetch a specific drawer by its id (returned by memory_search). Also lists ' +
|
|
120
|
+
'any tunnels (relationships) the drawer has to other drawers. Use to get ' +
|
|
121
|
+
'the full content + context of something a search surfaced.',
|
|
122
|
+
parameters: {
|
|
123
|
+
type: 'object',
|
|
124
|
+
properties: {
|
|
125
|
+
id: { type: 'string', description: 'Drawer id, e.g. "drw_xxxxxxx"' },
|
|
126
|
+
},
|
|
127
|
+
required: ['id'],
|
|
128
|
+
},
|
|
129
|
+
isReadOnly: true,
|
|
130
|
+
isDestructive: false,
|
|
131
|
+
async call(input, cwd) {
|
|
132
|
+
try {
|
|
133
|
+
const id = input.id;
|
|
134
|
+
const drawer = getDrawer(id, cwd);
|
|
135
|
+
if (!drawer)
|
|
136
|
+
return { output: `No drawer with id ${id} in either store.`, isError: false };
|
|
137
|
+
const tagStr = drawer.tags.length > 0 ? ` [${drawer.tags.join(', ')}]` : '';
|
|
138
|
+
const out = [
|
|
139
|
+
`${drawer.id} (${drawer.scope} · ${drawer.wing}/${drawer.room}${tagStr})`,
|
|
140
|
+
`importance: ${drawer.importance} created: ${drawer.createdAt} updated: ${drawer.updatedAt}`,
|
|
141
|
+
'',
|
|
142
|
+
drawer.content,
|
|
143
|
+
];
|
|
144
|
+
return { output: out.join('\n'), isError: false };
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
return { output: `Error recalling: ${e instanceof Error ? e.message : e}`, isError: true };
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
// ── memory_link ───────────────────────────────────────────
|
|
152
|
+
export const MemoryLinkTool = {
|
|
153
|
+
name: 'memory_link',
|
|
154
|
+
description: 'Create a directed tunnel from one drawer to another with a labelled relation. ' +
|
|
155
|
+
'Both drawers must be in the same store (global or project). Examples of ' +
|
|
156
|
+
'relations: "supersedes", "inspired", "in-project", "depends-on", "refines". ' +
|
|
157
|
+
'Use sparingly — only link when the connection is genuinely useful for later ' +
|
|
158
|
+
'traversal.',
|
|
159
|
+
parameters: {
|
|
160
|
+
type: 'object',
|
|
161
|
+
properties: {
|
|
162
|
+
from_id: { type: 'string', description: 'Source drawer id' },
|
|
163
|
+
to_id: { type: 'string', description: 'Target drawer id' },
|
|
164
|
+
relation: { type: 'string', description: 'Verb describing how from relates to to' },
|
|
165
|
+
},
|
|
166
|
+
required: ['from_id', 'to_id', 'relation'],
|
|
167
|
+
},
|
|
168
|
+
isReadOnly: false,
|
|
169
|
+
isDestructive: false,
|
|
170
|
+
async call(input, cwd) {
|
|
171
|
+
try {
|
|
172
|
+
const t = linkDrawers(input.from_id, input.to_id, input.relation, cwd);
|
|
173
|
+
return { output: `Linked ${t.fromDrawerId} → ${t.toDrawerId} via "${t.relation}" (tunnel ${t.id}).`, isError: false };
|
|
174
|
+
}
|
|
175
|
+
catch (e) {
|
|
176
|
+
return { output: `Error linking: ${e instanceof Error ? e.message : e}`, isError: true };
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
// ── memory_list ───────────────────────────────────────────
|
|
181
|
+
export const MemoryListTool = {
|
|
182
|
+
name: 'memory_list',
|
|
183
|
+
description: 'Inventory the MemPalace store. With no args, returns wings + drawer counts ' +
|
|
184
|
+
'in both stores. With a wing arg, lists rooms within that wing. With wing + ' +
|
|
185
|
+
'room, lists drawer summaries. Use to orient before searching, or to see ' +
|
|
186
|
+
'"what do I know about X" at a glance.',
|
|
187
|
+
parameters: {
|
|
188
|
+
type: 'object',
|
|
189
|
+
properties: {
|
|
190
|
+
wing: { type: 'string', description: 'Optional wing to drill into' },
|
|
191
|
+
room: { type: 'string', description: 'Optional room (requires wing)' },
|
|
192
|
+
scope: { type: 'string', description: '"global" | "project" | "both" (default both)' },
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
isReadOnly: true,
|
|
196
|
+
isDestructive: false,
|
|
197
|
+
async call(input, cwd) {
|
|
198
|
+
try {
|
|
199
|
+
const scope = input.scope || 'both';
|
|
200
|
+
const wing = input.wing;
|
|
201
|
+
const room = input.room;
|
|
202
|
+
if (wing && room) {
|
|
203
|
+
const drawers = listDrawers({ wing, room, scope, cwd });
|
|
204
|
+
if (drawers.length === 0)
|
|
205
|
+
return { output: `No drawers in ${wing}/${room}.`, isError: false };
|
|
206
|
+
const lines = drawers.map((d) => {
|
|
207
|
+
const excerpt = d.content.length > 80 ? d.content.slice(0, 80) + '…' : d.content;
|
|
208
|
+
return `${d.id} (${d.scope}) ${excerpt}`;
|
|
209
|
+
});
|
|
210
|
+
return { output: `${drawers.length} drawer(s) in ${wing}/${room}:\n${lines.join('\n')}`, isError: false };
|
|
211
|
+
}
|
|
212
|
+
if (wing) {
|
|
213
|
+
const r = listRooms(cwd, wing, scope);
|
|
214
|
+
const all = [...r.global, ...r.project];
|
|
215
|
+
if (all.length === 0)
|
|
216
|
+
return { output: `No rooms in wing "${wing}".`, isError: false };
|
|
217
|
+
const lines = all.map((rm) => ` ${rm.wing}/${rm.name} — ${rm.drawerCount} drawer(s), last ${rm.lastTouched.slice(0, 10)}`);
|
|
218
|
+
return { output: `Rooms in "${wing}":\n${lines.join('\n')}`, isError: false };
|
|
219
|
+
}
|
|
220
|
+
const w = listWings(cwd, scope);
|
|
221
|
+
const s = stats(cwd);
|
|
222
|
+
const out = [];
|
|
223
|
+
out.push(`Global store: ${s.global.drawers} drawer(s), ${s.global.tunnels} tunnel(s), ${s.global.triples} triple(s)`);
|
|
224
|
+
for (const wm of w.global) {
|
|
225
|
+
out.push(` ${wm.name}: ${wm.drawerCount} drawer(s) across ${wm.rooms.length} room(s)`);
|
|
226
|
+
}
|
|
227
|
+
out.push('');
|
|
228
|
+
out.push(`Project store: ${s.project.drawers} drawer(s), ${s.project.tunnels} tunnel(s), ${s.project.triples} triple(s)${s.projectExists ? '' : ' (not yet created)'}`);
|
|
229
|
+
for (const wm of w.project) {
|
|
230
|
+
out.push(` ${wm.name}: ${wm.drawerCount} drawer(s) across ${wm.rooms.length} room(s)`);
|
|
231
|
+
}
|
|
232
|
+
return { output: out.join('\n'), isError: false };
|
|
233
|
+
}
|
|
234
|
+
catch (e) {
|
|
235
|
+
return { output: `Error listing: ${e instanceof Error ? e.message : e}`, isError: true };
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
// ── memory_fact_add / memory_fact_query (knowledge graph) ──
|
|
240
|
+
export const MemoryFactAddTool = {
|
|
241
|
+
name: 'memory_fact_add',
|
|
242
|
+
description: 'Record a structured fact in the knowledge graph: (subject, predicate, object). ' +
|
|
243
|
+
'Example: subject="rsfit" predicate="prefers" object="vitest over jest". ' +
|
|
244
|
+
'Use for atomic facts you want to be able to QUERY later by parts ' +
|
|
245
|
+
'("what does rsfit prefer?"). For longer narrative content, use memory_add ' +
|
|
246
|
+
'instead.',
|
|
247
|
+
parameters: {
|
|
248
|
+
type: 'object',
|
|
249
|
+
properties: {
|
|
250
|
+
subject: { type: 'string', description: 'Entity the fact is about' },
|
|
251
|
+
predicate: { type: 'string', description: 'Relation/verb' },
|
|
252
|
+
object: { type: 'string', description: 'Value or related entity' },
|
|
253
|
+
confidence: { type: 'number', description: '0..1, default 1.0 (certain)' },
|
|
254
|
+
scope: { type: 'string', description: '"global" | "project" (default global)' },
|
|
255
|
+
},
|
|
256
|
+
required: ['subject', 'predicate', 'object'],
|
|
257
|
+
},
|
|
258
|
+
isReadOnly: false,
|
|
259
|
+
isDestructive: false,
|
|
260
|
+
async call(input, cwd) {
|
|
261
|
+
try {
|
|
262
|
+
const scope = (input.scope || 'global');
|
|
263
|
+
const t = kgAdd({
|
|
264
|
+
subject: input.subject,
|
|
265
|
+
predicate: input.predicate,
|
|
266
|
+
object: input.object,
|
|
267
|
+
confidence: typeof input.confidence === 'number' ? input.confidence : 1.0,
|
|
268
|
+
}, scope, cwd);
|
|
269
|
+
return { output: `Added fact: (${t.subject}, ${t.predicate}, ${t.object}) [${t.scope}, confidence ${t.confidence}]`, isError: false };
|
|
270
|
+
}
|
|
271
|
+
catch (e) {
|
|
272
|
+
return { output: `Error adding fact: ${e instanceof Error ? e.message : e}`, isError: true };
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
export const MemoryFactQueryTool = {
|
|
277
|
+
name: 'memory_fact_query',
|
|
278
|
+
description: 'Query the knowledge graph for facts. Any of subject/predicate/object can be ' +
|
|
279
|
+
'left unspecified to act as a wildcard. e.g. predicate="prefers" finds all ' +
|
|
280
|
+
'preferences; subject="rsfit" finds everything we know about the user.',
|
|
281
|
+
parameters: {
|
|
282
|
+
type: 'object',
|
|
283
|
+
properties: {
|
|
284
|
+
subject: { type: 'string' },
|
|
285
|
+
predicate: { type: 'string' },
|
|
286
|
+
object: { type: 'string' },
|
|
287
|
+
scope: { type: 'string', description: '"global" | "project" | "both" (default both)' },
|
|
288
|
+
},
|
|
289
|
+
},
|
|
290
|
+
isReadOnly: true,
|
|
291
|
+
isDestructive: false,
|
|
292
|
+
async call(input, cwd) {
|
|
293
|
+
try {
|
|
294
|
+
const triples = kgQuery({
|
|
295
|
+
subject: input.subject,
|
|
296
|
+
predicate: input.predicate,
|
|
297
|
+
object: input.object,
|
|
298
|
+
}, cwd, input.scope || 'both');
|
|
299
|
+
if (triples.length === 0)
|
|
300
|
+
return { output: 'No matching facts.', isError: false };
|
|
301
|
+
const lines = triples.map((t) => `(${t.subject}, ${t.predicate}, ${t.object}) [${t.scope}, confidence ${t.confidence}, ${t.createdAt.slice(0, 10)}]`);
|
|
302
|
+
return { output: `${triples.length} fact(s):\n${lines.join('\n')}`, isError: false };
|
|
303
|
+
}
|
|
304
|
+
catch (e) {
|
|
305
|
+
return { output: `Error querying: ${e instanceof Error ? e.message : e}`, isError: true };
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
// Convenience export for the tool registry
|
|
310
|
+
export const MEMORY_TOOLS = [
|
|
311
|
+
MemorySearchTool,
|
|
312
|
+
MemoryRecallTool,
|
|
313
|
+
MemoryAddTool,
|
|
314
|
+
MemoryLinkTool,
|
|
315
|
+
MemoryListTool,
|
|
316
|
+
MemoryFactAddTool,
|
|
317
|
+
MemoryFactQueryTool,
|
|
318
|
+
];
|
|
319
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/tools/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -22,6 +22,12 @@ export interface CrowcoderConfig {
|
|
|
22
22
|
palette?: string;
|
|
23
23
|
showThinking?: boolean;
|
|
24
24
|
voice?: VoiceConfig;
|
|
25
|
+
memory?: MemoryConfig;
|
|
26
|
+
}
|
|
27
|
+
export interface MemoryConfig {
|
|
28
|
+
enabled?: boolean;
|
|
29
|
+
globalScope?: boolean;
|
|
30
|
+
projectScope?: boolean;
|
|
25
31
|
}
|
|
26
32
|
export interface VoiceConfig {
|
|
27
33
|
enabled?: boolean;
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA+FA,MAAM,CAAC,MAAM,SAAS,GAAmC;IACvD,SAAS,EAAE;QACT,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,+BAA+B;QACxC,YAAY,EAAE,0BAA0B;QACxC,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,2BAA2B;QACpC,YAAY,EAAE,QAAQ;QACtB,WAAW,EAAE,IAAI;KAClB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,2BAA2B;QACzC,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,0DAA0D;QACnE,YAAY,EAAE,kBAAkB;QAChC,WAAW,EAAE,IAAI;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,6BAA6B;QACtC,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,2BAA2B;QACpC,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,KAAK;KACnB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,0BAA0B;QACnC,YAAY,EAAE,cAAc;QAC5B,WAAW,EAAE,KAAK;KACnB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,sCAAsC;QAC/C,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,IAAI;KAClB;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "compact-agent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.1",
|
|
4
4
|
"description": "A dense, feature-rich AI coding agent for the terminal. Built-in voice dictation (Whisper) + TTS readout (ElevenLabs) + screen-reader mode for blind / low-vision users. 80+ slash commands, 9 modes including Hermes self-improving loop, multi-agent orchestration, bundled everything-claude-code skills library, learning system, and observable LLM transport. Works with OpenRouter, OpenAI, Anthropic-compatible, Ollama, LM Studio, DeepSeek, or any OpenAI-compatible API.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,7 +29,10 @@
|
|
|
29
29
|
"tts",
|
|
30
30
|
"screen-reader",
|
|
31
31
|
"dictation",
|
|
32
|
-
"blind"
|
|
32
|
+
"blind",
|
|
33
|
+
"memory",
|
|
34
|
+
"mempalace",
|
|
35
|
+
"knowledge-graph"
|
|
33
36
|
],
|
|
34
37
|
"bin": {
|
|
35
38
|
"compact-agent": "./bin/crowcoder.js"
|