MCPcopy Create free account
hub / github.com/cortexkit/magic-context / writeMagicContextConfig

Function writeMagicContextConfig

packages/cli/src/commands/setup-pi.ts:131–190  ·  view source on GitHub ↗
(
    configPath: string,
    options: {
        historianModel: string;
        historianThinkingLevel?: string;
        dreamerEnabled: boolean;
        dreamerModel?: string;
        /** Per-task schedule overrides (Dreamer v2); undefined keeps schema defaults. */
        dreamerTasks?: Record<string, { schedule: string }>;
        sidekickEnabled: boolean;
        sidekickModel?: string;
        embedding: EmbeddingChoice;
    },
)

Source from the content-addressed store, hash-verified

129}
130
131export function writeMagicContextConfig(
132 configPath: string,
133 options: {
134 historianModel: string;
135 historianThinkingLevel?: string;
136 dreamerEnabled: boolean;
137 dreamerModel?: string;
138 /** Per-task schedule overrides (Dreamer v2); undefined keeps schema defaults. */
139 dreamerTasks?: Record<string, { schedule: string }>;
140 sidekickEnabled: boolean;
141 sidekickModel?: string;
142 embedding: EmbeddingChoice;
143 },
144): void {
145 ensureDir(dirname(configPath));
146 const config: Record<string, unknown> = existsSync(configPath)
147 ? (readJsonc(configPath) ?? {})
148 : {};
149
150 if (!config.$schema) {
151 config.$schema =
152 "https://raw.githubusercontent.com/cortexkit/magic-context/master/assets/magic-context.schema.json";
153 }
154
155 // The Pi model picker yields Pi-native provider ids (openai-codex/...,
156 // google-antigravity/...). The shared config is canonical (OpenCode) form so
157 // OpenCode can read the same file; normalize before writing.
158 config.historian = compactObject({
159 ...((config.historian as Record<string, unknown> | undefined) ?? {}),
160 model: piModelRefToCanonical(options.historianModel),
161 thinking_level: options.historianThinkingLevel,
162 });
163 const dreamer = {
164 ...((config.dreamer as Record<string, unknown> | undefined) ?? {}),
165 model: options.dreamerModel ? piModelRefToCanonical(options.dreamerModel) : undefined,
166 disable: options.dreamerEnabled ? undefined : true,
167 enabled: undefined,
168 // Dreamer v2 per-task schedules — only set when the user declined the
169 // recommended defaults; otherwise leave unset so schema defaults apply.
170 tasks: options.dreamerEnabled ? options.dreamerTasks : undefined,
171 };
172 config.dreamer = compactObject(dreamer);
173
174 const sidekick = {
175 ...((config.sidekick as Record<string, unknown> | undefined) ?? {}),
176 model:
177 options.sidekickEnabled && options.sidekickModel
178 ? piModelRefToCanonical(options.sidekickModel)
179 : undefined,
180 disable: options.sidekickEnabled ? undefined : true,
181 enabled: undefined,
182 };
183 config.sidekick = compactObject(sidekick);
184
185 config.embedding = {
186 ...((config.embedding as Record<string, unknown> | undefined) ?? {}),
187 ...options.embedding,
188 };

Callers 1

runSetupFunction · 0.70

Calls 6

piModelRefToCanonicalFunction · 0.90
writeFileAtomicFunction · 0.90
compactObjectFunction · 0.85
stringifyJsoncFunction · 0.85
ensureDirFunction · 0.70
readJsoncFunction · 0.70

Tested by

no test coverage detected