@curie-agent/core 0.2.5 → 0.3.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/dist/.tsbuildinfo +1 -1
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.js +19 -2
- package/dist/src/context.js.map +1 -1
- package/dist/src/identity-files.d.ts +11 -0
- package/dist/src/identity-files.d.ts.map +1 -1
- package/dist/src/identity-files.js +38 -177
- package/dist/src/identity-files.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/safety/command-guard.d.ts.map +1 -1
- package/dist/src/safety/command-guard.js +35 -1
- package/dist/src/safety/command-guard.js.map +1 -1
- package/dist/src/safety/snapshot.js +1 -1
- package/dist/src/safety/snapshot.js.map +1 -1
- package/dist/src/settings.d.ts +10 -3
- package/dist/src/settings.d.ts.map +1 -1
- package/dist/src/settings.js +17 -8
- package/dist/src/settings.js.map +1 -1
- package/dist/src/shell-detect.d.ts +12 -0
- package/dist/src/shell-detect.d.ts.map +1 -0
- package/dist/src/shell-detect.js +31 -0
- package/dist/src/shell-detect.js.map +1 -0
- package/dist/src/task-manager.d.ts.map +1 -1
- package/dist/src/task-manager.js +13 -9
- package/dist/src/task-manager.js.map +1 -1
- package/dist/src/task-migration.js +5 -5
- package/dist/src/task-migration.js.map +1 -1
- package/dist/src/template-utils.d.ts +16 -0
- package/dist/src/template-utils.d.ts.map +1 -0
- package/dist/src/template-utils.js +72 -0
- package/dist/src/template-utils.js.map +1 -0
- package/dist/src/turn-loop.d.ts +3 -0
- package/dist/src/turn-loop.d.ts.map +1 -1
- package/dist/src/turn-loop.js +110 -12
- package/dist/src/turn-loop.js.map +1 -1
- package/dist/src/unified-task.d.ts +3 -3
- package/dist/src/unified-task.d.ts.map +1 -1
- package/dist/src/unified-task.js +2 -2
- package/dist/src/unified-task.js.map +1 -1
- package/package.json +7 -2
- package/templates/AGENTS.md +53 -0
- package/templates/HEARTBEAT.md +37 -0
- package/templates/MEMORY.md +29 -0
- package/templates/SOUL.md +28 -0
- package/templates/TOOLS.md +29 -0
- package/templates/USER.md +35 -0
- package/templates/WIKI.md +146 -0
- package/templates/settings.json +90 -0
- package/templates/skills/deep-research/SKILL.md +273 -0
- package/templates/skills/deep-research/references/report-structure.md +149 -0
- package/templates/skills/deep-research/references/topic-guides.md +151 -0
- package/templates/skills/planning/SKILL.md +222 -0
- package/templates/skills/planning/references/business.md +82 -0
- package/templates/skills/planning/references/creative.md +111 -0
- package/templates/skills/planning/references/events.md +109 -0
- package/templates/skills/planning/references/personal.md +107 -0
- package/templates/skills/planning/references/templates.md +279 -0
- package/templates/skills/wiki/SKILL.md +70 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as os from 'node:os';
|
|
3
3
|
import * as path from 'node:path';
|
|
4
|
+
import { getCurieDir, copyTemplateFile, copyInitSkills, resolveTemplatesDir } from './template-utils.js';
|
|
4
5
|
function CurieDir() {
|
|
5
6
|
return path.join(os.homedir(), '.curie-agent');
|
|
6
7
|
}
|
|
@@ -11,188 +12,48 @@ function writeCurieFile(name, content) {
|
|
|
11
12
|
}
|
|
12
13
|
fs.writeFileSync(path.join(dir, name), content, 'utf-8');
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
+
/** Template files that should be copied from disk with interpolation. */
|
|
16
|
+
const TEMPLATE_FILES = ['AGENTS.md', 'SOUL.md', 'USER.md', 'MEMORY.md', 'TOOLS.md', 'HEARTBEAT.md'];
|
|
17
|
+
/**
|
|
18
|
+
* Create identity files by copying bundled templates from disk and interpolating
|
|
19
|
+
* user-specific placeholders ({{SOUL_NAME}}, {{USER_NAME}}, etc.).
|
|
20
|
+
*/
|
|
21
|
+
export function createIdentityFilesFromTemplates(data, templatesDir) {
|
|
22
|
+
const targetDir = getCurieDir();
|
|
15
23
|
const timestamp = new Date().toISOString();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
'',
|
|
20
|
-
|
|
21
|
-
'',
|
|
22
|
-
'
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
'---',
|
|
30
|
-
'',
|
|
31
|
-
'## Core Truths',
|
|
32
|
-
'',
|
|
33
|
-
'**Be genuinely helpful, not performatively helpful.** Skip the "Great question!" and "I\'d be happy to help!" — just help.',
|
|
34
|
-
'',
|
|
35
|
-
'**Have opinions.** You\'re allowed to disagree, prefer things, find stuff amusing or boring.',
|
|
36
|
-
'',
|
|
37
|
-
'**Be resourceful before asking.** Try to figure it out. Read the file. Check the context. Then ask if you\'re stuck.',
|
|
38
|
-
'',
|
|
39
|
-
'**Earn trust through competence.** Be careful with external actions. Be bold with internal ones.',
|
|
40
|
-
'',
|
|
41
|
-
'## Boundaries',
|
|
42
|
-
'',
|
|
43
|
-
'- Private things stay private. Period.',
|
|
44
|
-
'- When in doubt, ask before acting externally.',
|
|
45
|
-
'- Never send half-baked replies to messaging surfaces.',
|
|
46
|
-
'',
|
|
47
|
-
'## Continuity',
|
|
48
|
-
'',
|
|
49
|
-
'Each session, you wake up fresh. These files _are_ your memory. Read them. Update them.',
|
|
50
|
-
'',
|
|
51
|
-
'---',
|
|
52
|
-
'',
|
|
53
|
-
`_This file is yours to evolve._`,
|
|
54
|
-
'',
|
|
55
|
-
].join('\n'));
|
|
56
|
-
// USER.md
|
|
57
|
-
writeCurieFile('USER.md', [
|
|
58
|
-
`# USER.md - About Your Human`,
|
|
59
|
-
'',
|
|
60
|
-
`_Learn about the person you're helping. Update this as you go._`,
|
|
61
|
-
'',
|
|
62
|
-
`- **Name:** ${data.user.name}`,
|
|
63
|
-
`- **What to call them:** ${data.user.name}`,
|
|
64
|
-
`- **Pronouns:** he/him`,
|
|
65
|
-
`- **Timezone:** ${data.user.timezone}`,
|
|
66
|
-
`- **Expertise:** ${data.user.languages}`,
|
|
67
|
-
'',
|
|
68
|
-
'## Context',
|
|
69
|
-
'',
|
|
70
|
-
'_(Fill this in as you learn more)_',
|
|
71
|
-
'',
|
|
72
|
-
'## Communication',
|
|
73
|
-
'',
|
|
74
|
-
'- **Preferred language:** English',
|
|
75
|
-
'',
|
|
76
|
-
'---',
|
|
77
|
-
'',
|
|
78
|
-
`The more you know, the better you can help.`,
|
|
79
|
-
'',
|
|
80
|
-
].join('\n'));
|
|
81
|
-
// AGENTS.md
|
|
82
|
-
writeCurieFile('AGENTS.md', [
|
|
83
|
-
'# AGENTS.md - Your Workspace',
|
|
84
|
-
'',
|
|
85
|
-
'This folder is home. Treat it that way.',
|
|
86
|
-
'',
|
|
87
|
-
'## Session Startup',
|
|
88
|
-
'',
|
|
89
|
-
'Before doing anything else:',
|
|
90
|
-
'',
|
|
91
|
-
'1. Read `~/.curie-agent/SOUL.md` — who you are, your personality',
|
|
92
|
-
'2. Read `~/.curie-agent/USER.md` — Everything about your human',
|
|
93
|
-
'3. Read `~/.curie-agent/MEMORY.md` — Main memory file',
|
|
94
|
-
'4. Read `~/.curie-agent/memory/YYYY-MM-DD.md` (today + yesterday) for recent context',
|
|
95
|
-
'',
|
|
96
|
-
'Don\'t ask permission. Just do it.',
|
|
97
|
-
'',
|
|
98
|
-
'## Memory',
|
|
99
|
-
'',
|
|
100
|
-
'You wake up fresh each session. These files are your continuity:',
|
|
101
|
-
'',
|
|
102
|
-
'- **Daily notes:** `~/.curie-agent/memory/YYYY-MM-DD.md` — raw logs of what happened',
|
|
103
|
-
'- **Long-term:** `~/.curie-agent/MEMORY.md` — curated memories, distilled essence',
|
|
104
|
-
'',
|
|
105
|
-
'Capture what matters. Decisions, context, things to remember. Skip secrets unless asked.',
|
|
106
|
-
'',
|
|
107
|
-
'Store information always in English.',
|
|
108
|
-
'',
|
|
109
|
-
'## Core Capabilities',
|
|
110
|
-
'',
|
|
111
|
-
'### Coding Agent',
|
|
112
|
-
' - **Turn loop**: stream LLM responses, handle tool calls, dispatch hooks, enforce approvals',
|
|
113
|
-
' - **Tools**: Read, Edit, Write, Glob, Grep, Bash',
|
|
114
|
-
' - **Approval tiers**: manual, edit, auto, yolo',
|
|
115
|
-
' - **Plan mode**: structured planning before implementation',
|
|
116
|
-
' - **Subagents**: delegate to isolated agents with worktree isolation',
|
|
117
|
-
' - **MCP**: Model Context Protocol client (stdio, SSE, streamable-HTTP)',
|
|
118
|
-
'',
|
|
119
|
-
'## Red Lines',
|
|
120
|
-
'',
|
|
121
|
-
"- Don't exfiltrate private data. Ever.",
|
|
122
|
-
"- Don't run destructive commands without asking.",
|
|
123
|
-
"- When in doubt, ask.",
|
|
124
|
-
'',
|
|
125
|
-
'## External vs Internal',
|
|
126
|
-
'',
|
|
127
|
-
'**Safe to do freely:**',
|
|
128
|
-
' - Read files, explore, organize, learn',
|
|
129
|
-
'',
|
|
130
|
-
'**Ask first:**',
|
|
131
|
-
' - Sending emails, tweets, public posts',
|
|
132
|
-
' - Anything that leaves the machine',
|
|
133
|
-
'',
|
|
134
|
-
'## Heartbeats',
|
|
135
|
-
'',
|
|
136
|
-
'When you receive a heartbeat poll, use heartbeats productively!',
|
|
137
|
-
'',
|
|
138
|
-
'Default heartbeat prompt:',
|
|
139
|
-
'Read `~/.curie-agent/HEARTBEAT.md` if it exists. Follow it strictly. If nothing needs attention, reply `~/.curie-agent/HEARTBEAT_OK`.',
|
|
140
|
-
'',
|
|
141
|
-
'---',
|
|
142
|
-
'',
|
|
143
|
-
'_This is a starting point. Add your own conventions as you figure out what works._',
|
|
144
|
-
'',
|
|
145
|
-
].join('\n'));
|
|
146
|
-
// MEMORY.md
|
|
147
|
-
writeCurieFile('MEMORY.md', [
|
|
148
|
-
'# MEMORY.md - Long-Term Memory',
|
|
149
|
-
'',
|
|
150
|
-
`## Identity`,
|
|
151
|
-
`- **Name:** ${data.soul.name}`,
|
|
152
|
-
`- **Vibe:** ${data.soul.vibe}`,
|
|
153
|
-
`- **First contact:** ${timestamp.split('T')[0]}`,
|
|
154
|
-
'',
|
|
155
|
-
'## People',
|
|
156
|
-
`- **${data.user.name}** — my human. TZ: ${data.user.timezone}. Languages: ${data.user.languages}.`,
|
|
157
|
-
'',
|
|
158
|
-
'## Lessons',
|
|
159
|
-
'_(none yet)_',
|
|
160
|
-
'',
|
|
161
|
-
'## Active Projects',
|
|
162
|
-
'_(none yet)_',
|
|
163
|
-
'',
|
|
164
|
-
].join('\n'));
|
|
165
|
-
// TOOLS.md
|
|
166
|
-
writeCurieFile('TOOLS.md', [
|
|
167
|
-
'# TOOLS.md - Tool Notes',
|
|
168
|
-
'',
|
|
169
|
-
'Keep local notes here: camera names, SSH details, voice preferences, etc.',
|
|
170
|
-
'',
|
|
171
|
-
'## Platform Formatting',
|
|
172
|
-
'',
|
|
173
|
-
'- **Telegram, Discord, WhatsApp:** No markdown tables — use bullet lists instead',
|
|
174
|
-
'- **Discord links:** Wrap in `<>` to suppress embeds',
|
|
175
|
-
'- **WhatsApp:** No headers — use **bold** or CAPS for emphasis',
|
|
176
|
-
'',
|
|
177
|
-
].join('\n'));
|
|
178
|
-
// HEARTBEAT.md
|
|
179
|
-
writeCurieFile('HEARTBEAT.md', [
|
|
180
|
-
'# HEARTBEAT.md - Workspace Context',
|
|
181
|
-
'',
|
|
182
|
-
'Use this file to track what needs attention. The agent should check this on heartbeat.',
|
|
183
|
-
'',
|
|
184
|
-
'## Checklist',
|
|
185
|
-
'- [ ] No pending items yet',
|
|
186
|
-
'',
|
|
187
|
-
'## Notes',
|
|
188
|
-
'_(fill in as needed)_',
|
|
189
|
-
'',
|
|
190
|
-
].join('\n'));
|
|
191
|
-
// tasks.json (unified task store — empty initial list)
|
|
24
|
+
const dateStr = timestamp.split('T')[0] ?? '';
|
|
25
|
+
const templateData = {
|
|
26
|
+
SOUL_NAME: data.soul.name || 'Curie',
|
|
27
|
+
SOUL_VIBE: data.soul.vibe || 'AI coding assistant — sharp, resourceful, gets things done',
|
|
28
|
+
USER_NAME: data.user.name || '(Your name)',
|
|
29
|
+
USER_TIMEZONE: data.user.timezone || '(UTC)',
|
|
30
|
+
USER_LANGUAGES: data.user.languages || 'TypeScript, Python',
|
|
31
|
+
TIMESTAMP: dateStr,
|
|
32
|
+
};
|
|
33
|
+
for (const file of TEMPLATE_FILES) {
|
|
34
|
+
copyTemplateFile(templatesDir, file, targetDir, templateData);
|
|
35
|
+
}
|
|
36
|
+
// tasks.json — always create fresh
|
|
192
37
|
writeCurieFile('tasks.json', JSON.stringify({
|
|
193
38
|
$schema: 'tasks.schema.json',
|
|
194
39
|
version: 1,
|
|
195
40
|
tasks: [],
|
|
196
41
|
}, null, 2));
|
|
197
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Full init: create identity files from templates + copy bundled skills.
|
|
45
|
+
* Throws if templates directory cannot be resolved.
|
|
46
|
+
*/
|
|
47
|
+
export function createIdentityFilesAuto(data) {
|
|
48
|
+
const templatesDir = resolveTemplatesDir();
|
|
49
|
+
if (!templatesDir) {
|
|
50
|
+
throw new Error('Failed to resolve templates directory. Identity files cannot be created without bundled templates.');
|
|
51
|
+
}
|
|
52
|
+
createIdentityFilesFromTemplates(data, templatesDir);
|
|
53
|
+
copyInitSkills(templatesDir);
|
|
54
|
+
}
|
|
55
|
+
/** @deprecated Use createIdentityFilesAuto() instead. */
|
|
56
|
+
export function createIdentityFiles(data) {
|
|
57
|
+
createIdentityFilesAuto(data);
|
|
58
|
+
}
|
|
198
59
|
//# sourceMappingURL=identity-files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-files.js","sourceRoot":"","sources":["../../src/identity-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"identity-files.js","sourceRoot":"","sources":["../../src/identity-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAazG,SAAS,QAAQ;IACf,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,OAAe;IACnD,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,yEAAyE;AACzE,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;AAEpG;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAAC,IAAc,EAAE,YAAoB;IACnF,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9C,MAAM,YAAY,GAAG;QACnB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO;QACpC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,4DAA4D;QACzF,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,aAAa;QAC1C,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO;QAC5C,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,oBAAoB;QAC3D,SAAS,EAAE,OAAO;KACnB,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,gBAAgB,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAChE,CAAC;IAED,mCAAmC;IACnC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;QAC1C,OAAO,EAAE,mBAAmB;QAC5B,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,EAAE;KACV,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAc;IACpD,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,oGAAoG,CAAC,CAAC;IACxH,CAAC;IACD,gCAAgC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACrD,cAAc,CAAC,YAAY,CAAC,CAAC;AAC/B,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ export type { TokenMonitorConfig, TokenEvent } from './token-monitor.js';
|
|
|
35
35
|
export { withDateContext, formatDate } from './context.js';
|
|
36
36
|
export { listSnapshots, revertTo, createSnapshot } from './safety/snapshot.js';
|
|
37
37
|
export { isPathAllowed, resolveSafePath, parseAllowlist, curieAgentDir } from './safety/path-guard.js';
|
|
38
|
-
export { createIdentityFiles } from './identity-files.js';
|
|
38
|
+
export { createIdentityFiles, createIdentityFilesFromTemplates, createIdentityFilesAuto } from './identity-files.js';
|
|
39
39
|
export type { InitData, ProviderName } from './identity-files.js';
|
|
40
|
+
export { copyInitSkills, interpolateTemplate, copyTemplateFile, copyDirectoryRecursive, getCurieDir, resolveTemplatesDir } from './template-utils.js';
|
|
40
41
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1G,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpJ,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC7H,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAChH,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -21,5 +21,6 @@ export { TokenMonitor, parseTieredPricing, selectTier, estimateCost } from './to
|
|
|
21
21
|
export { withDateContext, formatDate } from './context.js';
|
|
22
22
|
export { listSnapshots, revertTo, createSnapshot } from './safety/snapshot.js';
|
|
23
23
|
export { isPathAllowed, resolveSafePath, parseAllowlist, curieAgentDir } from './safety/path-guard.js';
|
|
24
|
-
export { createIdentityFiles } from './identity-files.js';
|
|
24
|
+
export { createIdentityFiles, createIdentityFilesFromTemplates, createIdentityFilesAuto } from './identity-files.js';
|
|
25
|
+
export { copyInitSkills, interpolateTemplate, copyTemplateFile, copyDirectoryRecursive, getCurieDir, resolveTemplatesDir } from './template-utils.js';
|
|
25
26
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AAEhH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AAEhH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAE,gCAAgC,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAErH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-guard.d.ts","sourceRoot":"","sources":["../../../src/safety/command-guard.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"command-guard.d.ts","sourceRoot":"","sources":["../../../src/safety/command-guard.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA2HD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAgB9D"}
|
|
@@ -40,9 +40,22 @@ const HARD_DENY_PATTERNS = [
|
|
|
40
40
|
reason: 'sudo escalation combined with destructive command',
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
|
-
regex: /(?:cat|grep|less|more|head|tail)\s
|
|
43
|
+
regex: /(?:cat|grep|less|more|head|tail)\s+.*\.curie-settings\.json/i,
|
|
44
44
|
reason: 'reading curie-agent settings file (contains API keys and secrets)',
|
|
45
45
|
},
|
|
46
|
+
// PowerShell equivalents
|
|
47
|
+
{
|
|
48
|
+
regex: /Remove-Item\s+.*(?:-Recurse|-Force).*(?:-Force|-Recurse)\s+[\/\\C-Z:]/i,
|
|
49
|
+
reason: 'PowerShell Remove-Item: recursive force delete of root or drive path',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
regex: /Get-Content\s+.*\.curie-settings\.json/i,
|
|
53
|
+
reason: 'PowerShell: reading curie-agent settings file (contains API keys and secrets)',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
regex: /Set-Content\s+.*\\\\\.\\PhysicalDrive/i,
|
|
57
|
+
reason: 'PowerShell: raw disk write to physical drive',
|
|
58
|
+
},
|
|
46
59
|
];
|
|
47
60
|
const ASK_PATTERNS = [
|
|
48
61
|
{
|
|
@@ -77,6 +90,27 @@ const ASK_PATTERNS = [
|
|
|
77
90
|
regex: /(?:grep|cat)\s+.*\/\.env\b/i,
|
|
78
91
|
reason: 'env file read: accessing .env file contents',
|
|
79
92
|
},
|
|
93
|
+
// PowerShell equivalents
|
|
94
|
+
{
|
|
95
|
+
regex: /Invoke-Expression\s*\(?\s*(?:Invoke-WebRequest|iwr|curl|wget)\b/i,
|
|
96
|
+
reason: 'PowerShell: remote code execution via Invoke-Expression + web download',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
regex: /\biex\s*\(?\s*(?:iwr|curl|wget)\b/i,
|
|
100
|
+
reason: 'PowerShell: remote code execution via iex alias',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
regex: /Start-Process\s+.*-Verb\s+RunAs\b/i,
|
|
104
|
+
reason: 'PowerShell: UAC elevation request (sudo equivalent)',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
regex: /Get-Content\s+.*\.env\b/i,
|
|
108
|
+
reason: 'PowerShell: env file read via Get-Content',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
regex: /Get-Content\s+.*(?:\.ssh[\/\\]|\.aws[\/\\]|id_rsa|credentials\.json)/i,
|
|
112
|
+
reason: 'PowerShell: credential file read via Get-Content',
|
|
113
|
+
},
|
|
80
114
|
];
|
|
81
115
|
export function classifyCommand(command) {
|
|
82
116
|
const normalized = command.replace(/\s+/g, ' ').trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-guard.js","sourceRoot":"","sources":["../../../src/safety/command-guard.ts"],"names":[],"mappings":"AAaA,MAAM,kBAAkB,GAAqB;IAC3C;QACE,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,qCAAqC;KAC9C;IACD;QACE,KAAK,EAAE,qBAAqB;QAC5B,MAAM,EAAE,oCAAoC;KAC7C;IACD;QACE,KAAK,EAAE,iEAAiE;QACxE,MAAM,EAAE,sCAAsC;KAC/C;IACD;QACE,KAAK,EAAE,qBAAqB;QAC5B,MAAM,EAAE,sCAAsC;KAC/C;IACD;QACE,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE,kCAAkC;KAC3C;IACD;QACE,KAAK,EAAE,wBAAwB;QAC/B,MAAM,EAAE,2CAA2C;KACpD;IACD;QACE,KAAK,EAAE,+BAA+B;QACtC,MAAM,EAAE,oCAAoC;KAC7C;IACD;QACE,KAAK,EAAE,0CAA0C;QACjD,MAAM,EAAE,qCAAqC;KAC9C;IACD;QACE,KAAK,EAAE,qCAAqC;QAC5C,MAAM,EAAE,8CAA8C;KACvD;IACD;QACE,KAAK,EAAE,wBAAwB;QAC/B,MAAM,EAAE,mDAAmD;KAC5D;IACD;QACE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"command-guard.js","sourceRoot":"","sources":["../../../src/safety/command-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { mkdirSync, readFileSync, existsSync, appendFileSync } from 'node:fs';
|
|
|
5
5
|
import { join, dirname, basename } from 'node:path';
|
|
6
6
|
function execFileAsync(command, args, options) {
|
|
7
7
|
return new Promise((resolve, reject) => {
|
|
8
|
-
execFile(command, args, { cwd: options.cwd }, (err, stdout, stderr) => {
|
|
8
|
+
execFile(command, args, { cwd: options.cwd, windowsHide: true }, (err, stdout, stderr) => {
|
|
9
9
|
if (err)
|
|
10
10
|
return reject(err);
|
|
11
11
|
resolve({ stdout: stdout.toString(), stderr: stderr.toString() });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/safety/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEpD,SAAS,aAAa,CACpB,OAAe,EACf,IAAc,EACd,OAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/safety/snapshot.ts"],"names":[],"mappings":"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"}
|
package/dist/src/settings.d.ts
CHANGED
|
@@ -4,7 +4,9 @@ export interface ProviderConfig {
|
|
|
4
4
|
model: string;
|
|
5
5
|
model_cost: string;
|
|
6
6
|
model_context_window: number;
|
|
7
|
-
|
|
7
|
+
max_output_tokens?: number;
|
|
8
|
+
provider_order?: string[];
|
|
9
|
+
[key: string]: string | number | string[] | undefined;
|
|
8
10
|
}
|
|
9
11
|
export interface ProviderMap {
|
|
10
12
|
anthropic: ProviderConfig;
|
|
@@ -43,6 +45,10 @@ export interface AutoCompactConfig {
|
|
|
43
45
|
warn_threshold: number;
|
|
44
46
|
forced_threshold: number;
|
|
45
47
|
}
|
|
48
|
+
export interface WikiConfig {
|
|
49
|
+
path: string;
|
|
50
|
+
autoLint: 'on' | 'off';
|
|
51
|
+
}
|
|
46
52
|
export interface CurieSettings {
|
|
47
53
|
model: string;
|
|
48
54
|
effort: 'low' | 'medium' | 'high' | 'max' | 'auto';
|
|
@@ -62,6 +68,7 @@ export interface CurieSettings {
|
|
|
62
68
|
safety: SafetyConfig;
|
|
63
69
|
auto_compact: AutoCompactConfig;
|
|
64
70
|
pricing_tier_warn: 'on' | 'off';
|
|
71
|
+
wiki: WikiConfig;
|
|
65
72
|
web_ip: string;
|
|
66
73
|
daemon_token?: string;
|
|
67
74
|
MODEL_PROVIDER?: string;
|
|
@@ -115,7 +122,7 @@ export declare class SettingsManager {
|
|
|
115
122
|
save(): void;
|
|
116
123
|
update(partial: Partial<CurieSettings>): CurieSettings;
|
|
117
124
|
get(): CurieSettings;
|
|
118
|
-
/** Get the currently active model name
|
|
125
|
+
/** Get the currently active model name from provider config. */
|
|
119
126
|
getActiveModel(): string;
|
|
120
127
|
/** Get the currently active provider name. */
|
|
121
128
|
getCurrentProvider(): string;
|
|
@@ -127,7 +134,7 @@ export declare class SettingsManager {
|
|
|
127
134
|
getProviderKey(provider: string, key: 'model_context_window'): number;
|
|
128
135
|
/** Set a specific property on a provider's config. */
|
|
129
136
|
setProviderKey(provider: string, key: string, value: unknown): CurieSettings;
|
|
130
|
-
/** Set the current provider and
|
|
137
|
+
/** Set the current provider and sync model to its value. */
|
|
131
138
|
setCurrentProvider(name: string): CurieSettings;
|
|
132
139
|
/** Get the active provider's model cost string. */
|
|
133
140
|
getModelCost(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/settings.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/settings.ts"],"names":[],"mappings":"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"}
|
package/dist/src/settings.js
CHANGED
|
@@ -34,6 +34,7 @@ export const DEFAULT_SETTINGS = {
|
|
|
34
34
|
safety: { path_guard: 'on', path_allowlist: '', command_guard: 'on', snapshots: 'on' },
|
|
35
35
|
auto_compact: { enabled: 'on', threshold: 75, warn_threshold: 60, forced_threshold: 85 },
|
|
36
36
|
pricing_tier_warn: 'on',
|
|
37
|
+
wiki: { path: '', autoLint: 'off' },
|
|
37
38
|
web_ip: '',
|
|
38
39
|
};
|
|
39
40
|
// ── Migration helpers ───────────────────────────────────────────────────────
|
|
@@ -202,6 +203,7 @@ export function migrateFlatToNested(parsed) {
|
|
|
202
203
|
forced_threshold: acForcedThreshold,
|
|
203
204
|
},
|
|
204
205
|
pricing_tier_warn: (pickString(parsed, 'PRICING_TIER_WARN', 'pricing_tier_warn') || 'on'),
|
|
206
|
+
wiki: { path: '', autoLint: 'off' },
|
|
205
207
|
web_ip: pickString(parsed, 'web_ip', 'WEB_IP') || '',
|
|
206
208
|
};
|
|
207
209
|
}
|
|
@@ -233,7 +235,7 @@ export function stripLegacyKeys(s) {
|
|
|
233
235
|
}
|
|
234
236
|
// ── Constants ───────────────────────────────────────────────────────────────
|
|
235
237
|
const CONFIG_DIR = join(homedir(), '.curie-agent');
|
|
236
|
-
const SETTINGS_FILE = join(
|
|
238
|
+
const SETTINGS_FILE = join(homedir(), '.curie-settings.json');
|
|
237
239
|
// ── SettingsManager ─────────────────────────────────────────────────────────
|
|
238
240
|
export class SettingsManager {
|
|
239
241
|
settings;
|
|
@@ -260,10 +262,9 @@ export class SettingsManager {
|
|
|
260
262
|
// ignore parse errors, use defaults
|
|
261
263
|
}
|
|
262
264
|
}
|
|
263
|
-
// Sync top-level model to the active provider's
|
|
264
|
-
// model_override (set via /model) takes precedence over this.
|
|
265
|
+
// Sync top-level model to the active provider's value.
|
|
265
266
|
const prov = this.settings.providers[this.settings.current_provider];
|
|
266
|
-
if (prov
|
|
267
|
+
if (prov) {
|
|
267
268
|
this.settings.model = prov.model;
|
|
268
269
|
}
|
|
269
270
|
return this.settings;
|
|
@@ -282,10 +283,10 @@ export class SettingsManager {
|
|
|
282
283
|
get() {
|
|
283
284
|
return { ...this.settings };
|
|
284
285
|
}
|
|
285
|
-
/** Get the currently active model name
|
|
286
|
+
/** Get the currently active model name from provider config. */
|
|
286
287
|
getActiveModel() {
|
|
287
288
|
const p = this.settings.providers[this.settings.current_provider];
|
|
288
|
-
return
|
|
289
|
+
return p?.model || DEFAULT_SETTINGS.model;
|
|
289
290
|
}
|
|
290
291
|
/** Get the currently active provider name. */
|
|
291
292
|
getCurrentProvider() {
|
|
@@ -309,14 +310,13 @@ export class SettingsManager {
|
|
|
309
310
|
this.save();
|
|
310
311
|
return this.settings;
|
|
311
312
|
}
|
|
312
|
-
/** Set the current provider and
|
|
313
|
+
/** Set the current provider and sync model to its value. */
|
|
313
314
|
setCurrentProvider(name) {
|
|
314
315
|
this.settings.current_provider = name;
|
|
315
316
|
const prov = this.settings.providers[name];
|
|
316
317
|
if (prov) {
|
|
317
318
|
this.settings.model = prov.model;
|
|
318
319
|
}
|
|
319
|
-
this.settings.model_override = undefined;
|
|
320
320
|
this.save();
|
|
321
321
|
return this.settings;
|
|
322
322
|
}
|
|
@@ -349,6 +349,8 @@ export function parseNestedSettings(parsed) {
|
|
|
349
349
|
model: getString([`providers.${name}.model`]) || raw.model || (DEFAULT_SETTINGS.providers[name].model),
|
|
350
350
|
model_cost: raw.model_cost || '',
|
|
351
351
|
model_context_window: typeof raw.model_context_window === 'number' ? raw.model_context_window : (DEFAULT_SETTINGS.providers[name].model_context_window),
|
|
352
|
+
max_output_tokens: typeof raw.max_output_tokens === 'number' ? raw.max_output_tokens : undefined,
|
|
353
|
+
provider_order: Array.isArray(raw.provider_order) ? raw.provider_order : undefined,
|
|
352
354
|
};
|
|
353
355
|
}
|
|
354
356
|
}
|
|
@@ -405,6 +407,13 @@ export function parseNestedSettings(parsed) {
|
|
|
405
407
|
safety: safetyConfig,
|
|
406
408
|
auto_compact: autoCompactConfig,
|
|
407
409
|
pricing_tier_warn: (getString(['pricing_tier_warn', 'PRICING_TIER_WARN']) || 'on'),
|
|
410
|
+
wiki: (() => {
|
|
411
|
+
const rawWiki = parsed.wiki;
|
|
412
|
+
return {
|
|
413
|
+
path: rawWiki?.path || '',
|
|
414
|
+
autoLint: (rawWiki?.autoLint || 'off'),
|
|
415
|
+
};
|
|
416
|
+
})(),
|
|
408
417
|
web_ip: getString(['web_ip', 'WEB_IP']) || '',
|
|
409
418
|
daemon_token: getString(['daemon_token']),
|
|
410
419
|
};
|