@dahch/muninn 0.1.0 → 0.2.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 (50) hide show
  1. package/README.md +260 -17
  2. package/dist/cli.d.ts +1 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +18 -2
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/memory.d.ts.map +1 -1
  7. package/dist/commands/memory.js +52 -3
  8. package/dist/commands/memory.js.map +1 -1
  9. package/dist/commands/setup.d.ts +3 -0
  10. package/dist/commands/setup.d.ts.map +1 -0
  11. package/dist/commands/setup.js +397 -0
  12. package/dist/commands/setup.js.map +1 -0
  13. package/dist/db/client.d.ts +17 -1
  14. package/dist/db/client.d.ts.map +1 -1
  15. package/dist/db/client.js +54 -0
  16. package/dist/db/client.js.map +1 -1
  17. package/dist/db/schema.sql +2 -0
  18. package/dist/mcp/server.d.ts +27 -6
  19. package/dist/mcp/server.d.ts.map +1 -1
  20. package/dist/mcp/server.js +156 -15
  21. package/dist/mcp/server.js.map +1 -1
  22. package/dist/service/memory-service.d.ts +121 -4
  23. package/dist/service/memory-service.d.ts.map +1 -1
  24. package/dist/service/memory-service.js +665 -45
  25. package/dist/service/memory-service.js.map +1 -1
  26. package/dist/setup/index.d.ts +6 -0
  27. package/dist/setup/index.d.ts.map +1 -0
  28. package/dist/setup/index.js +6 -0
  29. package/dist/setup/index.js.map +1 -0
  30. package/dist/setup/json-target.d.ts +30 -0
  31. package/dist/setup/json-target.d.ts.map +1 -0
  32. package/dist/setup/json-target.js +263 -0
  33. package/dist/setup/json-target.js.map +1 -0
  34. package/dist/setup/portable.d.ts +56 -0
  35. package/dist/setup/portable.d.ts.map +1 -0
  36. package/dist/setup/portable.js +365 -0
  37. package/dist/setup/portable.js.map +1 -0
  38. package/dist/setup/registry.d.ts +54 -0
  39. package/dist/setup/registry.d.ts.map +1 -0
  40. package/dist/setup/registry.js +225 -0
  41. package/dist/setup/registry.js.map +1 -0
  42. package/dist/setup/rules-target.d.ts +31 -0
  43. package/dist/setup/rules-target.d.ts.map +1 -0
  44. package/dist/setup/rules-target.js +270 -0
  45. package/dist/setup/rules-target.js.map +1 -0
  46. package/dist/setup/toml-target.d.ts +62 -0
  47. package/dist/setup/toml-target.d.ts.map +1 -0
  48. package/dist/setup/toml-target.js +869 -0
  49. package/dist/setup/toml-target.js.map +1 -0
  50. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/setup/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { AgentId } from "./registry.js";
2
+ export declare const MUNINN_RULES_START = "<!-- muninn:rules:start -->";
3
+ export declare const MUNINN_RULES_END = "<!-- muninn:rules:end -->";
4
+ export declare const LEGACY_RULES_START = "<!-- huginn:muninn-rules:start -->";
5
+ export declare const LEGACY_RULES_END = "<!-- huginn:muninn-rules:end -->";
6
+ export declare const MUNINN_RULES_BLOCK: string;
7
+ export type RulesState = "absent" | "present" | "stale" | "malformed";
8
+ export type RulesOutcome = "written" | "present" | "stale" | "skipped" | "failed";
9
+ export interface RulesTargetOptions {
10
+ path: string;
11
+ agents: AgentId[];
12
+ projectPath?: string;
13
+ force?: boolean;
14
+ dryRun?: boolean;
15
+ }
16
+ export interface RulesTargetStatus {
17
+ path: string;
18
+ agents: AgentId[];
19
+ state: RulesState;
20
+ changed: false;
21
+ error?: string;
22
+ errors: string[];
23
+ }
24
+ export interface RulesTargetReport extends Omit<RulesTargetStatus, "changed"> {
25
+ outcome: RulesOutcome;
26
+ changed: boolean;
27
+ dryRun: boolean;
28
+ }
29
+ export declare function getRulesTargetStatus(options: RulesTargetOptions): RulesTargetStatus;
30
+ export declare function setupRulesTarget(options: RulesTargetOptions): RulesTargetReport;
31
+ //# sourceMappingURL=rules-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-target.d.ts","sourceRoot":"","sources":["../../src/setup/rules-target.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAChE,eAAO,MAAM,gBAAgB,8BAA8B,CAAC;AAC5D,eAAO,MAAM,kBAAkB,uCAAuC,CAAC;AACvE,eAAO,MAAM,gBAAgB,qCAAqC,CAAC;AAEnE,eAAO,MAAM,kBAAkB,QAQnB,CAAC;AAEb,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;AACtE,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAC3E,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAiND,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CAUnF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CAqE/E"}
@@ -0,0 +1,270 @@
1
+ /**
2
+ * Marked, human-authored agent rules.
3
+ *
4
+ * Rules are appended as a delimited Markdown block instead of replacing the
5
+ * file: the surrounding prose belongs to the user. A complete prior Huginn block
6
+ * is detected as stale and only replaced with `--force`. Unmatched, duplicate, or
7
+ * otherwise ambiguous markers are fatal because their safe replacement boundary
8
+ * cannot be determined.
9
+ */
10
+ import fs from "node:fs";
11
+ import { resolve } from "node:path";
12
+ import { assertDocPath, checkDocPath, lstatOrUndefined } from "../util/path-safety.js";
13
+ import { safeWriteAtomic } from "./portable.js";
14
+ export const MUNINN_RULES_START = "<!-- muninn:rules:start -->";
15
+ export const MUNINN_RULES_END = "<!-- muninn:rules:end -->";
16
+ export const LEGACY_RULES_START = "<!-- huginn:muninn-rules:start -->";
17
+ export const LEGACY_RULES_END = "<!-- huginn:muninn-rules:end -->";
18
+ export const MUNINN_RULES_BLOCK = [
19
+ MUNINN_RULES_START,
20
+ "## Muninn project memory",
21
+ "",
22
+ "- Call `muninn_bootstrap` once at the start of a session to load the project brief.",
23
+ "- Before designing a change, use `muninn_search` and `muninn_inspect_symbol` to check prior decisions and the relevant code.",
24
+ "- Before completing code, use `muninn_verify_contract` to verify the execution contract.",
25
+ MUNINN_RULES_END,
26
+ ].join("\n");
27
+ function positions(raw, marker) {
28
+ const found = [];
29
+ let from = 0;
30
+ for (;;) {
31
+ const index = raw.indexOf(marker, from);
32
+ if (index === -1)
33
+ return found;
34
+ found.push(index);
35
+ from = index + marker.length;
36
+ }
37
+ }
38
+ function markerRange(raw, startMarker, endMarker, label) {
39
+ const starts = positions(raw, startMarker);
40
+ const ends = positions(raw, endMarker);
41
+ if (starts.length === 0 && ends.length === 0)
42
+ return {};
43
+ if (starts.length !== ends.length) {
44
+ return {
45
+ error: `unmatched ${label} marker: found ${starts.length} start marker(s) and ${ends.length} end marker(s)`,
46
+ };
47
+ }
48
+ if (starts.length > 1 || ends.length > 1) {
49
+ return { error: `duplicate ${label} markers; refusing to guess which block to manage` };
50
+ }
51
+ const start = starts[0];
52
+ const end = ends[0];
53
+ if (end < start) {
54
+ return { error: `${label} end marker appears before its start marker` };
55
+ }
56
+ return { range: { start, end: end + endMarker.length } };
57
+ }
58
+ function inspectRules(options) {
59
+ const label = "Muninn rules file";
60
+ const base = { path: resolve(options.path), agents: options.agents, errors: [] };
61
+ const check = checkDocPath(options.path, {
62
+ label,
63
+ action: "read or write",
64
+ projectPath: options.projectPath,
65
+ });
66
+ if (!check.ok) {
67
+ return {
68
+ ...base,
69
+ path: resolve(options.path),
70
+ state: "malformed",
71
+ error: check.reason,
72
+ errors: [check.reason],
73
+ };
74
+ }
75
+ const stat = lstatOrUndefined(check.path);
76
+ if (stat === undefined) {
77
+ return { ...base, path: check.path, state: "absent" };
78
+ }
79
+ if (!stat.isFile()) {
80
+ const error = `${label} ${check.path} is not a regular file`;
81
+ return {
82
+ ...base,
83
+ path: check.path,
84
+ state: "malformed",
85
+ error,
86
+ errors: [error],
87
+ };
88
+ }
89
+ let raw;
90
+ try {
91
+ raw = fs.readFileSync(check.path, "utf8");
92
+ }
93
+ catch (err) {
94
+ const error = `Cannot read ${label} ${check.path}: ${err.message}`;
95
+ return {
96
+ ...base,
97
+ path: check.path,
98
+ state: "malformed",
99
+ error,
100
+ errors: [error],
101
+ };
102
+ }
103
+ const managed = markerRange(raw, MUNINN_RULES_START, MUNINN_RULES_END, "Muninn rules");
104
+ const legacy = markerRange(raw, LEGACY_RULES_START, LEGACY_RULES_END, "legacy Huginn rules");
105
+ const markerErrors = [managed.error, legacy.error].filter((entry) => entry !== undefined);
106
+ if (markerErrors.length > 0) {
107
+ const error = `Malformed ${label} ${check.path}: ${markerErrors.join("; ")}`;
108
+ return {
109
+ ...base,
110
+ path: check.path,
111
+ state: "malformed",
112
+ raw,
113
+ error,
114
+ errors: [error],
115
+ };
116
+ }
117
+ // Marker ranges are half-open intervals. The managed and legacy blocks must
118
+ // be disjoint: crossed or nested ranges make the replacement boundary
119
+ // ambiguous, so reject them before any edit is planned.
120
+ if (managed.range !== undefined &&
121
+ legacy.range !== undefined &&
122
+ managed.range.start < legacy.range.end &&
123
+ legacy.range.start < managed.range.end) {
124
+ const error = `Malformed ${label} ${check.path}: managed and legacy Huginn marker ranges ` +
125
+ `overlap or nest (${managed.range.start}-${managed.range.end} and ` +
126
+ `${legacy.range.start}-${legacy.range.end}); refusing to guess which block to replace`;
127
+ return {
128
+ ...base,
129
+ path: check.path,
130
+ state: "malformed",
131
+ raw,
132
+ error,
133
+ errors: [error],
134
+ };
135
+ }
136
+ const state = legacy.range !== undefined
137
+ ? "stale"
138
+ : managed.range !== undefined
139
+ ? "present"
140
+ : "absent";
141
+ return {
142
+ ...base,
143
+ path: check.path,
144
+ state,
145
+ raw,
146
+ managed: managed.range,
147
+ legacy: legacy.range,
148
+ };
149
+ }
150
+ function appendBlock(raw) {
151
+ if (raw === undefined || raw.length === 0)
152
+ return `${MUNINN_RULES_BLOCK}\n`;
153
+ return `${raw}${raw.endsWith("\n") ? "\n" : "\n\n"}${MUNINN_RULES_BLOCK}\n`;
154
+ }
155
+ function applyEdits(raw, edits) {
156
+ let next = raw;
157
+ for (const edit of [...edits].sort((a, b) => b.start - a.start)) {
158
+ next = `${next.slice(0, edit.start)}${edit.text}${next.slice(edit.end)}`;
159
+ }
160
+ return next;
161
+ }
162
+ function desiredContent(inspected, force) {
163
+ const raw = inspected.raw;
164
+ const managed = inspected.managed;
165
+ const legacy = inspected.legacy;
166
+ // No file or no block yet: append a fresh managed block.
167
+ if (raw === undefined || (managed === undefined && legacy === undefined)) {
168
+ return appendBlock(raw);
169
+ }
170
+ // A legacy block only: leave it untouched unless a forced replacement was
171
+ // requested, in which case it is replaced in place.
172
+ if (legacy !== undefined && managed === undefined) {
173
+ if (!force)
174
+ return raw;
175
+ return applyEdits(raw, [{ ...legacy, text: MUNINN_RULES_BLOCK }]);
176
+ }
177
+ // Managed block only: refresh it in place.
178
+ if (managed !== undefined && legacy === undefined) {
179
+ return applyEdits(raw, [{ ...managed, text: MUNINN_RULES_BLOCK }]);
180
+ }
181
+ // Both blocks exist (inspection guarantees they do not overlap). Without
182
+ // --force the stale legacy block is preserved; with --force replace the
183
+ // managed block and remove the legacy block.
184
+ if (legacy !== undefined && managed !== undefined) {
185
+ if (!force)
186
+ return raw;
187
+ return applyEdits(raw, [
188
+ { ...managed, text: MUNINN_RULES_BLOCK },
189
+ { ...legacy, text: "" },
190
+ ]);
191
+ }
192
+ return appendBlock(raw);
193
+ }
194
+ export function getRulesTargetStatus(options) {
195
+ const inspected = inspectRules(options);
196
+ return {
197
+ path: inspected.path,
198
+ agents: inspected.agents,
199
+ state: inspected.state,
200
+ changed: false,
201
+ error: inspected.error,
202
+ errors: inspected.errors,
203
+ };
204
+ }
205
+ export function setupRulesTarget(options) {
206
+ const inspected = inspectRules(options);
207
+ const dryRun = options.dryRun === true;
208
+ const base = {
209
+ path: inspected.path,
210
+ agents: inspected.agents,
211
+ state: inspected.state,
212
+ dryRun,
213
+ errors: inspected.errors,
214
+ };
215
+ if (inspected.state === "malformed") {
216
+ return { ...base, outcome: "failed", changed: false, error: inspected.error };
217
+ }
218
+ if (inspected.state === "stale" && options.force !== true) {
219
+ return { ...base, outcome: "stale", changed: false };
220
+ }
221
+ const content = desiredContent(inspected, options.force === true);
222
+ if (content === inspected.raw) {
223
+ return { ...base, outcome: "present", changed: false };
224
+ }
225
+ if (dryRun) {
226
+ return { ...base, outcome: "written", changed: true };
227
+ }
228
+ const label = "Muninn rules file";
229
+ const check = checkDocPath(options.path, {
230
+ label,
231
+ action: "write",
232
+ projectPath: options.projectPath,
233
+ });
234
+ if (!check.ok) {
235
+ return {
236
+ ...base,
237
+ outcome: "failed",
238
+ changed: false,
239
+ error: check.reason,
240
+ errors: [...base.errors, check.reason],
241
+ };
242
+ }
243
+ // Re-check immediately before the atomic write, mirroring the MCP writers.
244
+ const existing = lstatOrUndefined(check.path);
245
+ if (existing?.isSymbolicLink()) {
246
+ const error = `${label} ${check.path} is a symlink; refusing to write through it`;
247
+ return { ...base, outcome: "failed", changed: false, error, errors: [...base.errors, error] };
248
+ }
249
+ if (existing !== undefined && !existing.isFile()) {
250
+ const error = `${label} ${check.path} is not a regular file`;
251
+ return { ...base, outcome: "failed", changed: false, error, errors: [...base.errors, error] };
252
+ }
253
+ const mode = existing === undefined ? 0o600 : existing.mode & 0o777;
254
+ try {
255
+ // assertDocPath is the fail-closed final gate, after inspection and before
256
+ // the write, so a path swapped for a link cannot be followed.
257
+ const writePath = assertDocPath(options.path, {
258
+ label,
259
+ action: "write",
260
+ projectPath: options.projectPath,
261
+ });
262
+ safeWriteAtomic(writePath, content, mode);
263
+ }
264
+ catch (err) {
265
+ const error = `Cannot write ${label} ${inspected.path}: ${err.message}`;
266
+ return { ...base, outcome: "failed", changed: false, error, errors: [...base.errors, error] };
267
+ }
268
+ return { ...base, outcome: "written", changed: true };
269
+ }
270
+ //# sourceMappingURL=rules-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-target.js","sourceRoot":"","sources":["../../src/setup/rules-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,CAAC,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,oCAAoC,CAAC;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAEnE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,kBAAkB;IAClB,0BAA0B;IAC1B,EAAE;IACF,qFAAqF;IACrF,8HAA8H;IAC9H,0FAA0F;IAC1F,gBAAgB;CACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AA4Cb,SAAS,SAAS,CAAC,GAAW,EAAE,MAAc;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,SAAS,CAAC;QACR,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,GAAW,EACX,WAAmB,EACnB,SAAiB,EACjB,KAAa;IAEb,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACxD,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO;YACL,KAAK,EAAE,aAAa,KAAK,kBAAkB,MAAM,CAAC,MAAM,wBAAwB,IAAI,CAAC,MAAM,gBAAgB;SAC5G,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,KAAK,EAAE,aAAa,KAAK,mDAAmD,EAAE,CAAC;IAC1F,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;IACrB,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,6CAA6C,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,OAA2B;IAC/C,MAAM,KAAK,GAAG,mBAAmB,CAAC;IAClC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAc,EAAE,CAAC;IAC7F,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE;QACvC,KAAK;QACL,MAAM,EAAE,eAAe;QACvB,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YAC3B,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,wBAAwB,CAAC;QAC7D,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,WAAW;YAClB,KAAK;YACL,MAAM,EAAE,CAAC,KAAK,CAAC;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,eAAe,KAAK,IAAI,KAAK,CAAC,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC;QAC9E,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,WAAW;YAClB,KAAK;YACL,MAAM,EAAE,CAAC,KAAK,CAAC;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAC7F,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CACvD,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAChD,CAAC;IACF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,aAAa,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7E,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,WAAW;YAClB,GAAG;YACH,KAAK;YACL,MAAM,EAAE,CAAC,KAAK,CAAC;SAChB,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,sEAAsE;IACtE,wDAAwD;IACxD,IACE,OAAO,CAAC,KAAK,KAAK,SAAS;QAC3B,MAAM,CAAC,KAAK,KAAK,SAAS;QAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG;QACtC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EACtC,CAAC;QACD,MAAM,KAAK,GACT,aAAa,KAAK,IAAI,KAAK,CAAC,IAAI,4CAA4C;YAC5E,oBAAoB,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO;YACnE,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,6CAA6C,CAAC;QACzF,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,WAAW;YAClB,GAAG;YACH,KAAK;YACL,MAAM,EAAE,CAAC,KAAK,CAAC;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GACT,MAAM,CAAC,KAAK,KAAK,SAAS;QACxB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;YAC3B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,QAAQ,CAAC;IACjB,OAAO;QACL,GAAG,IAAI;QACP,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK;QACL,GAAG;QACH,OAAO,EAAE,OAAO,CAAC,KAAK;QACtB,MAAM,EAAE,MAAM,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,GAAuB;IAC1C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,kBAAkB,IAAI,CAAC;IAC5E,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,kBAAkB,IAAI,CAAC;AAC9E,CAAC;AAED,SAAS,UAAU,CACjB,GAAW,EACX,KAA0D;IAE1D,IAAI,IAAI,GAAG,GAAG,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,SAAqB,EAAE,KAAc;IAC3D,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;IAC1B,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAClC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAEhC,yDAAyD;IACzD,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;QACzE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,0EAA0E;IAC1E,oDAAoD;IACpD,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,CAAC;QACvB,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,2CAA2C;IAC3C,IAAI,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAClD,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,yEAAyE;IACzE,wEAAwE;IACxE,6CAA6C;IAC7C,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,CAAC;QACvB,OAAO,UAAU,CAAC,GAAG,EAAE;YACrB,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE;YACxC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAA2B;IAC9D,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,MAAM,EAAE,SAAS,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA2B;IAC1D,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;IACvC,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,MAAM;QACN,MAAM,EAAE,SAAS,CAAC,MAAM;KACzB,CAAC;IAEF,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1D,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAClE,IAAI,OAAO,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;QAC9B,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,GAAG,mBAAmB,CAAC;IAClC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE;QACvC,KAAK;QACL,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,OAAO;YACL,GAAG,IAAI;YACP,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;SACvC,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,QAAQ,EAAE,cAAc,EAAE,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,6CAA6C,CAAC;QAClF,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAChG,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,wBAAwB,CAAC;QAC7D,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAChG,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;IACpE,IAAI,CAAC;QACH,2EAA2E;QAC3E,8DAA8D;QAC9D,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE;YAC5C,KAAK;YACL,MAAM,EAAE,OAAO;YACf,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QACH,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,gBAAgB,KAAK,IAAI,SAAS,CAAC,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC;QACnF,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAChG,CAAC;IAED,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxD,CAAC"}
@@ -0,0 +1,62 @@
1
+ import type { AgentTarget } from "./registry.js";
2
+ export type TomlMcpState = "absent" | "registered" | "legacy" | "conflict" | "malformed";
3
+ export type TomlMcpOutcome = "written" | "present" | "skipped" | "failed";
4
+ export interface TomlTargetOptions {
5
+ target: AgentTarget;
6
+ path: string;
7
+ projectPath?: string;
8
+ force?: boolean;
9
+ dryRun?: boolean;
10
+ }
11
+ export interface TomlTargetStatus {
12
+ target: AgentTarget;
13
+ path: string;
14
+ state: TomlMcpState;
15
+ changed: false;
16
+ error?: string;
17
+ errors: string[];
18
+ }
19
+ export interface TomlTargetReport extends Omit<TomlTargetStatus, "changed"> {
20
+ outcome: TomlMcpOutcome;
21
+ changed: boolean;
22
+ dryRun: boolean;
23
+ }
24
+ declare class TomlTable {
25
+ readonly kind = "table";
26
+ entries: Map<string, TomlValue>;
27
+ explicitHeader: boolean;
28
+ createdByDottedKey: boolean;
29
+ }
30
+ interface TomlArray {
31
+ kind: "array";
32
+ items: TomlValue[];
33
+ }
34
+ type TomlValue = string | number | boolean | TomlTable | TomlArray;
35
+ interface HeaderStatement {
36
+ kind: "header";
37
+ path: string[];
38
+ array: boolean;
39
+ start: number;
40
+ end: number;
41
+ }
42
+ interface KeyValueStatement {
43
+ kind: "keyValue";
44
+ tablePath: string[];
45
+ keyPath: string[];
46
+ fullPath: string[];
47
+ value: TomlValue;
48
+ start: number;
49
+ end: number;
50
+ }
51
+ type Statement = HeaderStatement | KeyValueStatement;
52
+ interface ParsedToml {
53
+ root: TomlTable;
54
+ statements: Statement[];
55
+ }
56
+ /** Validate a complete TOML document and retain the structural statement map. */
57
+ export declare function parseToml(raw: string): ParsedToml;
58
+ /** Read-only diagnostic used by `muninn setup --status`. */
59
+ export declare function getTomlTargetStatus(options: TomlTargetOptions): TomlTargetStatus;
60
+ export declare function setupTomlTarget(options: TomlTargetOptions): TomlTargetReport;
61
+ export {};
62
+ //# sourceMappingURL=toml-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toml-target.d.ts","sourceRoot":"","sources":["../../src/setup/toml-target.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AACzF,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC;IACzE,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAOD,cAAM,SAAS;IACb,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,yBAAgC;IACvC,cAAc,UAAS;IACvB,kBAAkB,UAAS;CAC5B;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnE,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,KAAK,SAAS,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAErD,UAAU,UAAU;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AA0eD,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CA4EjD;AAsPD,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAUhF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAgE5E"}