@zigrivers/mmr 1.3.0 → 1.4.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.
Files changed (130) hide show
  1. package/README.md +444 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +4 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/ack.d.ts +11 -0
  6. package/dist/commands/ack.d.ts.map +1 -0
  7. package/dist/commands/ack.js +123 -0
  8. package/dist/commands/ack.js.map +1 -0
  9. package/dist/commands/config.d.ts +5 -0
  10. package/dist/commands/config.d.ts.map +1 -1
  11. package/dist/commands/config.js +248 -14
  12. package/dist/commands/config.js.map +1 -1
  13. package/dist/commands/jobs.d.ts.map +1 -1
  14. package/dist/commands/jobs.js +3 -4
  15. package/dist/commands/jobs.js.map +1 -1
  16. package/dist/commands/reconcile.d.ts.map +1 -1
  17. package/dist/commands/reconcile.js +12 -5
  18. package/dist/commands/reconcile.js.map +1 -1
  19. package/dist/commands/results.d.ts.map +1 -1
  20. package/dist/commands/results.js +13 -5
  21. package/dist/commands/results.js.map +1 -1
  22. package/dist/commands/review.d.ts +25 -0
  23. package/dist/commands/review.d.ts.map +1 -1
  24. package/dist/commands/review.js +459 -44
  25. package/dist/commands/review.js.map +1 -1
  26. package/dist/commands/sessions.d.ts +58 -0
  27. package/dist/commands/sessions.d.ts.map +1 -0
  28. package/dist/commands/sessions.js +266 -0
  29. package/dist/commands/sessions.js.map +1 -0
  30. package/dist/commands/status.d.ts.map +1 -1
  31. package/dist/commands/status.js +2 -3
  32. package/dist/commands/status.js.map +1 -1
  33. package/dist/config/defaults.d.ts +2 -2
  34. package/dist/config/defaults.d.ts.map +1 -1
  35. package/dist/config/defaults.js +76 -0
  36. package/dist/config/defaults.js.map +1 -1
  37. package/dist/config/loader.d.ts +22 -0
  38. package/dist/config/loader.d.ts.map +1 -1
  39. package/dist/config/loader.js +279 -36
  40. package/dist/config/loader.js.map +1 -1
  41. package/dist/config/schema.d.ts +897 -53
  42. package/dist/config/schema.d.ts.map +1 -1
  43. package/dist/config/schema.js +155 -4
  44. package/dist/config/schema.js.map +1 -1
  45. package/dist/core/ack-store.d.ts +109 -0
  46. package/dist/core/ack-store.d.ts.map +1 -0
  47. package/dist/core/ack-store.js +363 -0
  48. package/dist/core/ack-store.js.map +1 -0
  49. package/dist/core/auth.d.ts +10 -1
  50. package/dist/core/auth.d.ts.map +1 -1
  51. package/dist/core/auth.js +106 -35
  52. package/dist/core/auth.js.map +1 -1
  53. package/dist/core/compensator.d.ts +33 -4
  54. package/dist/core/compensator.d.ts.map +1 -1
  55. package/dist/core/compensator.js +120 -15
  56. package/dist/core/compensator.js.map +1 -1
  57. package/dist/core/diff-introspect.d.ts +21 -0
  58. package/dist/core/diff-introspect.d.ts.map +1 -0
  59. package/dist/core/diff-introspect.js +42 -0
  60. package/dist/core/diff-introspect.js.map +1 -0
  61. package/dist/core/dispatcher.d.ts +10 -0
  62. package/dist/core/dispatcher.d.ts.map +1 -1
  63. package/dist/core/dispatcher.js +91 -20
  64. package/dist/core/dispatcher.js.map +1 -1
  65. package/dist/core/git-show.d.ts +31 -0
  66. package/dist/core/git-show.d.ts.map +1 -0
  67. package/dist/core/git-show.js +72 -0
  68. package/dist/core/git-show.js.map +1 -0
  69. package/dist/core/host-isolation.d.ts +24 -0
  70. package/dist/core/host-isolation.d.ts.map +1 -0
  71. package/dist/core/host-isolation.js +107 -0
  72. package/dist/core/host-isolation.js.map +1 -0
  73. package/dist/core/http-dispatcher.d.ts +20 -0
  74. package/dist/core/http-dispatcher.d.ts.map +1 -0
  75. package/dist/core/http-dispatcher.js +125 -0
  76. package/dist/core/http-dispatcher.js.map +1 -0
  77. package/dist/core/job-store.d.ts +7 -1
  78. package/dist/core/job-store.d.ts.map +1 -1
  79. package/dist/core/job-store.js +21 -1
  80. package/dist/core/job-store.js.map +1 -1
  81. package/dist/core/jsonpath.d.ts +15 -0
  82. package/dist/core/jsonpath.d.ts.map +1 -0
  83. package/dist/core/jsonpath.js +63 -0
  84. package/dist/core/jsonpath.js.map +1 -0
  85. package/dist/core/oss-examples.d.ts +18 -0
  86. package/dist/core/oss-examples.d.ts.map +1 -0
  87. package/dist/core/oss-examples.js +66 -0
  88. package/dist/core/oss-examples.js.map +1 -0
  89. package/dist/core/parser.d.ts +8 -3
  90. package/dist/core/parser.d.ts.map +1 -1
  91. package/dist/core/parser.js +157 -6
  92. package/dist/core/parser.js.map +1 -1
  93. package/dist/core/project-root.d.ts +10 -0
  94. package/dist/core/project-root.d.ts.map +1 -0
  95. package/dist/core/project-root.js +23 -0
  96. package/dist/core/project-root.js.map +1 -0
  97. package/dist/core/reconciler.d.ts +1 -1
  98. package/dist/core/reconciler.d.ts.map +1 -1
  99. package/dist/core/reconciler.js +100 -18
  100. package/dist/core/reconciler.js.map +1 -1
  101. package/dist/core/redact.d.ts +17 -0
  102. package/dist/core/redact.d.ts.map +1 -0
  103. package/dist/core/redact.js +140 -0
  104. package/dist/core/redact.js.map +1 -0
  105. package/dist/core/results-pipeline.d.ts +8 -2
  106. package/dist/core/results-pipeline.d.ts.map +1 -1
  107. package/dist/core/results-pipeline.js +50 -3
  108. package/dist/core/results-pipeline.js.map +1 -1
  109. package/dist/core/runtime-probe.d.ts +14 -0
  110. package/dist/core/runtime-probe.d.ts.map +1 -0
  111. package/dist/core/runtime-probe.js +57 -0
  112. package/dist/core/runtime-probe.js.map +1 -0
  113. package/dist/core/stable-id.d.ts +19 -0
  114. package/dist/core/stable-id.d.ts.map +1 -0
  115. package/dist/core/stable-id.js +148 -0
  116. package/dist/core/stable-id.js.map +1 -0
  117. package/dist/core/trust-mode.d.ts +29 -0
  118. package/dist/core/trust-mode.d.ts.map +1 -0
  119. package/dist/core/trust-mode.js +103 -0
  120. package/dist/core/trust-mode.js.map +1 -0
  121. package/dist/formatters/markdown.d.ts.map +1 -1
  122. package/dist/formatters/markdown.js +9 -0
  123. package/dist/formatters/markdown.js.map +1 -1
  124. package/dist/formatters/text.d.ts.map +1 -1
  125. package/dist/formatters/text.js +9 -0
  126. package/dist/formatters/text.js.map +1 -1
  127. package/dist/types.d.ts +44 -1
  128. package/dist/types.d.ts.map +1 -1
  129. package/dist/types.js.map +1 -1
  130. package/package.json +2 -2
@@ -0,0 +1,107 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ export const NEUTRAL_HOME_PLACEHOLDER = '{{neutral_home}}';
5
+ export const NEUTRAL_CWD_PLACEHOLDER = '{{neutral_cwd}}';
6
+ // This helper is grok-specific in practice: the only channel that opts into the
7
+ // neutral-posture placeholders is the builtin `grok` channel, and the
8
+ // credential-preservation step below knows about grok's `~/.grok/auth.json`.
9
+ // Hence the `mmr-grok-` temp-dir prefix. If another agentic CLI ever needs
10
+ // isolation, generalize the prefix + credential path together.
11
+ const PREFIX = 'mmr-grok-';
12
+ function needsIsolation(env, cwd) {
13
+ if (cwd === NEUTRAL_CWD_PLACEHOLDER)
14
+ return true;
15
+ return Object.values(env).some((v) => v === NEUTRAL_HOME_PLACEHOLDER);
16
+ }
17
+ /**
18
+ * Expand {{neutral_home}}/{{neutral_cwd}} placeholders into a single fresh
19
+ * per-call temp directory (unique → safe for parallel channel runs; each call
20
+ * owns its dir lifetime). Returns the concrete env/cwd plus a synchronous
21
+ * cleanup fn. When no placeholder is present, returns the inputs unchanged with
22
+ * a no-op cleanup.
23
+ */
24
+ export function withNeutralPosture(env, cwd) {
25
+ if (!needsIsolation(env, cwd)) {
26
+ return { env, cwd, cleanup: () => { } };
27
+ }
28
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), PREFIX));
29
+ // mkdtemp already creates 0700, but enforce it explicitly: this dir holds a
30
+ // credential symlink and whatever grok writes to its HOME during a review.
31
+ try {
32
+ fs.chmodSync(dir, 0o700);
33
+ }
34
+ catch { /* best effort */ }
35
+ // Preserve grok's file-backed credentials so an isolated HOME doesn't break
36
+ // auth on non-keychain platforms (Linux/CI store creds at ~/.grok/auth.json).
37
+ // We symlink ONLY auth.json — NOT config.toml/skills/, so host config stays empty.
38
+ try {
39
+ const realHome = process.env.HOME || os.homedir();
40
+ const cred = path.join(realHome, '.grok', 'auth.json');
41
+ if (fs.existsSync(cred)) {
42
+ const grokDir = path.join(dir, '.grok');
43
+ fs.mkdirSync(grokDir, { recursive: true });
44
+ fs.chmodSync(grokDir, 0o700);
45
+ fs.symlinkSync(cred, path.join(grokDir, 'auth.json'));
46
+ }
47
+ }
48
+ catch { /* best effort — keychain platforms don't need it */ }
49
+ const outEnv = {};
50
+ for (const [k, v] of Object.entries(env)) {
51
+ outEnv[k] = v === NEUTRAL_HOME_PLACEHOLDER ? dir : v;
52
+ }
53
+ const outCwd = cwd === NEUTRAL_CWD_PLACEHOLDER ? dir : cwd;
54
+ // When we neutralize the cwd, also override the inherited cwd-pointing env
55
+ // vars. The dispatcher/auth spawn with `cwd: outCwd` (a real chdir), but
56
+ // PWD/OLDPWD/INIT_CWD still flow from process.env and would otherwise point
57
+ // at the original working tree — tools that trust $PWD over getcwd() could
58
+ // then read the repo. Pin them all to the neutral dir.
59
+ if (outCwd === dir) {
60
+ outEnv.PWD = dir;
61
+ outEnv.OLDPWD = dir;
62
+ outEnv.INIT_CWD = dir;
63
+ }
64
+ let removed = false;
65
+ return {
66
+ env: outEnv,
67
+ cwd: outCwd,
68
+ cleanup: () => {
69
+ if (removed)
70
+ return;
71
+ removed = true;
72
+ try {
73
+ fs.rmSync(dir, { recursive: true, force: true });
74
+ }
75
+ catch { /* best effort */ }
76
+ },
77
+ };
78
+ }
79
+ /**
80
+ * Backstop for dirs orphaned by SIGKILL/crashes: remove stale mmr-grok-* temp
81
+ * dirs older than `maxAgeMs`. Call once at process start. Best-effort/sync.
82
+ * Default is 24h — comfortably longer than any plausible review timeout, so the
83
+ * sweep never reaps the HOME/cwd of a still-running long review.
84
+ */
85
+ export function sweepStaleNeutralDirs(maxAgeMs = 24 * 60 * 60 * 1000) {
86
+ const tmp = os.tmpdir();
87
+ let entries = [];
88
+ try {
89
+ entries = fs.readdirSync(tmp);
90
+ }
91
+ catch {
92
+ return;
93
+ }
94
+ const now = Date.now();
95
+ for (const name of entries) {
96
+ if (!name.startsWith(PREFIX))
97
+ continue;
98
+ const full = path.join(tmp, name);
99
+ try {
100
+ const st = fs.statSync(full);
101
+ if (st.isDirectory() && now - st.mtimeMs > maxAgeMs)
102
+ fs.rmSync(full, { recursive: true, force: true });
103
+ }
104
+ catch { /* best effort */ }
105
+ }
106
+ }
107
+ //# sourceMappingURL=host-isolation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-isolation.js","sourceRoot":"","sources":["../../src/core/host-isolation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { JobStore } from './job-store.js';
2
+ import type { HttpChannelParsed } from '../config/schema.js';
3
+ export interface DispatchHttpOptions {
4
+ channel: HttpChannelParsed;
5
+ prompt: string;
6
+ /** Per-channel timeout in seconds. */
7
+ timeout: number;
8
+ }
9
+ /**
10
+ * Dispatch a review prompt to an HTTP (openai-chat) channel.
11
+ *
12
+ * Security invariant (T1-C / §5 decision 1): the API key value read from
13
+ * `process.env[api_key_env]` is used ONLY to build the request header. It is
14
+ * NEVER persisted or logged. Failure diagnostics are SYNTHETIC strings derived
15
+ * from the status code / error name — never the response body, because a
16
+ * misconfigured or hostile endpoint can reflect the Authorization header back
17
+ * in its body, and persisting that would leak the secret to disk.
18
+ */
19
+ export declare function dispatchHttpChannel(store: JobStore, jobId: string, channelName: string, opts: DispatchHttpOptions): Promise<void>;
20
+ //# sourceMappingURL=http-dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-dispatcher.d.ts","sourceRoot":"","sources":["../../src/core/http-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAG5D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAA;CAChB;AAsCD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,IAAI,CAAC,CA0Ef"}
@@ -0,0 +1,125 @@
1
+ /** Status-code → ChannelStatus mapping per §5 decision 8 / T1-C. */
2
+ function classifyStatus(status) {
3
+ if (status === 200)
4
+ return 'completed';
5
+ if (status === 401)
6
+ return 'auth_failed';
7
+ return 'failed';
8
+ }
9
+ /**
10
+ * True when the channel's parser consumes JSON, so we request
11
+ * `response_format: {type:'json_object'}`. `regex-findings` is a text scanner
12
+ * (it runs a RegExp over prose output), so it must NOT force JSON.
13
+ */
14
+ function impliesJsonOutput(parser) {
15
+ if (typeof parser === 'string') {
16
+ return parser === 'default' || parser === 'gemini' || parser === 'doc-conformance';
17
+ }
18
+ return parser.kind === 'unwrap-jsonpath';
19
+ }
20
+ /**
21
+ * Extract the assistant message from an openai-chat completion envelope so the
22
+ * saved channel output matches what a subprocess channel writes (the model's
23
+ * direct text), letting the existing parsers consume it unchanged. Falls back
24
+ * to the raw body if the response is not the expected envelope shape.
25
+ */
26
+ function extractOpenAiContent(body) {
27
+ try {
28
+ const parsed = JSON.parse(body);
29
+ const content = parsed?.choices?.[0]?.message?.content;
30
+ if (typeof content === 'string')
31
+ return content;
32
+ }
33
+ catch {
34
+ // Not JSON / not the expected shape — fall through to the raw body.
35
+ }
36
+ return body;
37
+ }
38
+ /**
39
+ * Dispatch a review prompt to an HTTP (openai-chat) channel.
40
+ *
41
+ * Security invariant (T1-C / §5 decision 1): the API key value read from
42
+ * `process.env[api_key_env]` is used ONLY to build the request header. It is
43
+ * NEVER persisted or logged. Failure diagnostics are SYNTHETIC strings derived
44
+ * from the status code / error name — never the response body, because a
45
+ * misconfigured or hostile endpoint can reflect the Authorization header back
46
+ * in its body, and persisting that would leak the secret to disk.
47
+ */
48
+ export async function dispatchHttpChannel(store, jobId, channelName, opts) {
49
+ const { channel, prompt, timeout } = opts;
50
+ const startedAt = new Date().toISOString();
51
+ store.updateChannel(jobId, channelName, { status: 'running', started_at: startedAt });
52
+ const finalize = (status, logDetail) => {
53
+ // Synthetic diagnostics only — surfaced by the results pipeline via the
54
+ // channel log. NEVER the response body (secret-reflection risk).
55
+ if (logDetail)
56
+ store.saveChannelLog(jobId, channelName, logDetail);
57
+ // Match the subprocess dispatcher's persisted shape: only completed
58
+ // channels carry output_parser (it drives parsing); error paths write
59
+ // status + completed_at only.
60
+ const update = { status, completed_at: new Date().toISOString() };
61
+ if (status === 'completed')
62
+ update.output_parser = channel.output_parser;
63
+ store.updateChannel(jobId, channelName, update);
64
+ };
65
+ const headers = {
66
+ 'content-type': 'application/json',
67
+ ...(channel.headers ?? {}),
68
+ };
69
+ if (channel.api_key_env) {
70
+ const value = process.env[channel.api_key_env];
71
+ if (!value) {
72
+ // Env-var name only — never the value (absent here anyway).
73
+ finalize('auth_failed', `API key env var ${channel.api_key_env} not set`);
74
+ return;
75
+ }
76
+ // Drop any case-variant of the target header from `channel.headers` so the
77
+ // api-key header is authoritative and we never emit a duplicate (fetch
78
+ // implementations normalize header casing inconsistently).
79
+ const target = channel.api_key_header.toLowerCase();
80
+ for (const k of Object.keys(headers)) {
81
+ if (k.toLowerCase() === target)
82
+ delete headers[k];
83
+ }
84
+ headers[channel.api_key_header] = `${channel.api_key_prefix}${value}`;
85
+ }
86
+ const body = {
87
+ model: channel.model,
88
+ messages: [{ role: 'user', content: prompt }],
89
+ };
90
+ if (impliesJsonOutput(channel.output_parser)) {
91
+ body.response_format = { type: 'json_object' };
92
+ }
93
+ const controller = new AbortController();
94
+ const timer = setTimeout(() => controller.abort(), Math.max(0, timeout * 1000));
95
+ try {
96
+ const res = await fetch(channel.endpoint, {
97
+ method: 'POST',
98
+ headers,
99
+ body: JSON.stringify(body),
100
+ signal: controller.signal,
101
+ });
102
+ const status = classifyStatus(res.status);
103
+ if (status === 'completed') {
104
+ // Save the model's direct output (unwrapped from the envelope) so the
105
+ // existing parsers consume it exactly like subprocess stdout.
106
+ store.saveChannelOutput(jobId, channelName, extractOpenAiContent(await res.text()));
107
+ finalize('completed');
108
+ }
109
+ else {
110
+ finalize(status, `HTTP ${res.status}`);
111
+ }
112
+ }
113
+ catch (err) {
114
+ if (err.name === 'AbortError') {
115
+ finalize('timeout', `request timed out after ${timeout}s`);
116
+ }
117
+ else {
118
+ finalize('failed', 'request failed');
119
+ }
120
+ }
121
+ finally {
122
+ clearTimeout(timer);
123
+ }
124
+ }
125
+ //# sourceMappingURL=http-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-dispatcher.js","sourceRoot":"","sources":["../../src/core/http-dispatcher.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,15 @@
1
- import type { JobMetadata, ChannelJobEntry, Severity, OutputFormat } from '../types.js';
1
+ import type { JobMetadata, ChannelJobEntry, Severity, OutputFormat, ReviewControls } from '../types.js';
2
2
  import type { ReconciledResults } from '../types.js';
3
3
  export interface CreateJobOpts {
4
4
  fix_threshold: Severity;
5
5
  format: OutputFormat;
6
6
  channels: string[];
7
+ session_id?: string;
8
+ round?: number;
9
+ review_controls?: ReviewControls;
10
+ trust_mode?: 'base-ref' | 'untrusted-head' | 'non-git';
11
+ proposed_acks?: string[];
12
+ proposed_config_change?: boolean;
7
13
  }
8
14
  export declare class JobStore {
9
15
  private readonly jobsDir;
@@ -1 +1 @@
1
- {"version":3,"file":"job-store.d.ts","sourceRoot":"","sources":["../../src/core/job-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGpD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,QAAQ,CAAA;IACvB,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEpB,OAAO,EAAE,MAAM;IAK3B,iEAAiE;IACjE,OAAO,CAAC,mBAAmB;IAM3B,+DAA+D;IAC/D,OAAO,CAAC,eAAe;IAKvB,mDAAmD;IACnD,OAAO,CAAC,UAAU;IAKlB,mCAAmC;IACnC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIhC,yEAAyE;IACzE,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,WAAW;IAwB3C,qCAAqC;IACrC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI;IAKnD,4FAA4F;IAC5F,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAkCnC,qCAAqC;IACrC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/C,qCAAqC;IACrC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIjC,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3C,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI/B,yCAAyC;IACzC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAKxE,qCAAqC;IACrC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAKzD,kCAAkC;IAClC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKjE;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM7D,sFAAsF;IACtF,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IASxF,6EAA6E;IAC7E,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAuBrF,8BAA8B;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAO5D,2DAA2D;IAC3D,QAAQ,IAAI,WAAW,EAAE;IAqBzB,wEAAwE;IACxE,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAgBxC,sDAAsD;IACtD,OAAO,CAAC,eAAe;CAQxB"}
1
+ {"version":3,"file":"job-store.d.ts","sourceRoot":"","sources":["../../src/core/job-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACvG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGpD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,QAAQ,CAAA;IACvB,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,UAAU,CAAC,EAAE,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAAA;IACtD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEpB,OAAO,EAAE,MAAM;IAK3B,iEAAiE;IACjE,OAAO,CAAC,mBAAmB;IAM3B,+DAA+D;IAC/D,OAAO,CAAC,eAAe;IAKvB,mDAAmD;IACnD,OAAO,CAAC,UAAU;IAKlB,mCAAmC;IACnC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAYhC,yEAAyE;IACzE,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,WAAW;IA8B3C,qCAAqC;IACrC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI;IAKnD,4FAA4F;IAC5F,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAkCnC,qCAAqC;IACrC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/C,qCAAqC;IACrC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIjC,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3C,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI/B,yCAAyC;IACzC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAKxE,qCAAqC;IACrC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAKzD,kCAAkC;IAClC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKjE;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM7D,sFAAsF;IACtF,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IASxF,6EAA6E;IAC7E,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAuBrF,8BAA8B;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAO5D,2DAA2D;IAC3D,QAAQ,IAAI,WAAW,EAAE;IAqBzB,wEAAwE;IACxE,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAgBxC,sDAAsD;IACtD,OAAO,CAAC,eAAe;CAQxB"}
@@ -26,7 +26,15 @@ export class JobStore {
26
26
  }
27
27
  /** Full path to a job directory */
28
28
  getJobDir(jobId) {
29
- return path.join(this.jobsDir, jobId);
29
+ // Containment guard: a job id is a path component, never a traversal.
30
+ // Reject any value (absolute, or containing `..`/separators) that would
31
+ // resolve outside jobsDir before it reaches the filesystem.
32
+ const resolved = path.resolve(this.jobsDir, jobId);
33
+ const rel = path.relative(this.jobsDir, resolved);
34
+ if (rel === '' || rel.startsWith('..') || path.isAbsolute(rel)) {
35
+ throw new Error(`Invalid job id (path escape): ${jobId}`);
36
+ }
37
+ return resolved;
30
38
  }
31
39
  /** Create a new job with its directory structure and initial metadata */
32
40
  createJob(opts) {
@@ -46,6 +54,18 @@ export class JobStore {
46
54
  created_at: new Date().toISOString(),
47
55
  channels,
48
56
  };
57
+ if (opts.session_id !== undefined)
58
+ metadata.session_id = opts.session_id;
59
+ if (opts.round !== undefined)
60
+ metadata.round = opts.round;
61
+ if (opts.review_controls !== undefined)
62
+ metadata.review_controls = opts.review_controls;
63
+ if (opts.trust_mode !== undefined)
64
+ metadata.trust_mode = opts.trust_mode;
65
+ if (opts.proposed_acks !== undefined)
66
+ metadata.proposed_acks = opts.proposed_acks;
67
+ if (opts.proposed_config_change !== undefined)
68
+ metadata.proposed_config_change = opts.proposed_config_change;
49
69
  this.saveJob(jobId, metadata);
50
70
  return metadata;
51
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"job-store.js","sourceRoot":"","sources":["../../src/core/job-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job-store.js","sourceRoot":"","sources":["../../src/core/job-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Minimal jsonpath subset used by the `unwrap-jsonpath` parser kind.
3
+ *
4
+ * Supported forms:
5
+ * $ - root
6
+ * $.foo - property
7
+ * $.foo.bar - nested property
8
+ * $.foo[0] - array index
9
+ * $.foo[0].bar - property of an indexed element
10
+ *
11
+ * Returns `undefined` when the path does not resolve. Throws only for
12
+ * structural errors in the path itself.
13
+ */
14
+ export declare function jsonpathGet(root: unknown, path: string): unknown;
15
+ //# sourceMappingURL=jsonpath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonpath.d.ts","sourceRoot":"","sources":["../../src/core/jsonpath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAuChE"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Minimal jsonpath subset used by the `unwrap-jsonpath` parser kind.
3
+ *
4
+ * Supported forms:
5
+ * $ - root
6
+ * $.foo - property
7
+ * $.foo.bar - nested property
8
+ * $.foo[0] - array index
9
+ * $.foo[0].bar - property of an indexed element
10
+ *
11
+ * Returns `undefined` when the path does not resolve. Throws only for
12
+ * structural errors in the path itself.
13
+ */
14
+ export function jsonpathGet(root, path) {
15
+ if (!path.startsWith('$')) {
16
+ throw new Error(`jsonpath must start with $ (got: ${path})`);
17
+ }
18
+ if (path === '$')
19
+ return root;
20
+ let cursor = root;
21
+ let i = 1;
22
+ while (i < path.length) {
23
+ const ch = path[i];
24
+ if (ch === '.') {
25
+ i += 1;
26
+ if (path[i] === '[')
27
+ continue;
28
+ const match = /^[A-Za-z_][A-Za-z0-9_-]*/.exec(path.slice(i));
29
+ if (!match)
30
+ throw new Error(`jsonpath malformed empty property at offset ${i - 1} (path: ${path})`);
31
+ if (isPrototypeSensitiveKey(match[0]))
32
+ return undefined;
33
+ if (cursor === null || typeof cursor !== 'object')
34
+ return undefined;
35
+ cursor = cursor[match[0]];
36
+ i += match[0].length;
37
+ }
38
+ else if (ch === '[') {
39
+ const end = path.indexOf(']', i + 1);
40
+ if (end === -1) {
41
+ throw new Error(`jsonpath malformed: unclosed [ at offset ${i} (path: ${path})`);
42
+ }
43
+ const inside = path.slice(i + 1, end);
44
+ if (!/^\d+$/.test(inside)) {
45
+ throw new Error(`jsonpath invalid index "${inside}" (only numeric indices supported) at offset ${i} (path: ${path})`);
46
+ }
47
+ if (!Array.isArray(cursor))
48
+ return undefined;
49
+ cursor = cursor[Number.parseInt(inside, 10)];
50
+ i = end + 1;
51
+ }
52
+ else {
53
+ throw new Error(`jsonpath unexpected character "${ch}" at offset ${i} (path: ${path})`);
54
+ }
55
+ if (cursor === undefined)
56
+ return undefined;
57
+ }
58
+ return cursor;
59
+ }
60
+ function isPrototypeSensitiveKey(key) {
61
+ return key === '__proto__' || key === 'constructor' || key === 'prototype';
62
+ }
63
+ //# sourceMappingURL=jsonpath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonpath.js","sourceRoot":"","sources":["../../src/core/jsonpath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,IAAY;IACrD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,GAAG,CAAC,CAAA;IAC9D,CAAC;IACD,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IAE7B,IAAI,MAAM,GAAY,IAAI,CAAA;IAC1B,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAClB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,CAAC,IAAI,CAAC,CAAA;YACN,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,SAAQ;YAC7B,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5D,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,CAAA;YACnG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,SAAS,CAAA;YACvD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAA;YACnE,MAAM,GAAI,MAAkC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACtD,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACtB,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YACpC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,WAAW,IAAI,GAAG,CAAC,CAAA;YAClF,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;YACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,2BAA2B,MAAM,gDAAgD,CAAC,WAAW,IAAI,GAAG,CACrG,CAAA;YACH,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,SAAS,CAAA;YAC5C,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;YAC5C,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;QACb,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,kCAAkC,EAAE,eAAe,CAAC,WAAW,IAAI,GAAG,CAAC,CAAA;QACzF,CAAC;QACD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;IAC5C,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAW;IAC1C,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW,CAAA;AAC5E,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface OssProbeSpec {
2
+ command: string;
3
+ args: string[];
4
+ timeoutMs: number;
5
+ }
6
+ export type OssRuntimeId = 'ollama' | 'lms' | 'llama-server' | 'local-ai-delegate';
7
+ export interface OssRuntime {
8
+ id: OssRuntimeId;
9
+ probe: OssProbeSpec;
10
+ }
11
+ export declare const OSS_RUNTIMES: OssRuntime[];
12
+ /**
13
+ * Commented YAML block for the given runtime. The block is meant to be
14
+ * pasted directly into a generated .mmr.yaml; every line is prefixed with
15
+ * `# ` so the user must explicitly opt in by uncommenting and editing.
16
+ */
17
+ export declare function exampleBlockFor(id: OssRuntimeId): string;
18
+ //# sourceMappingURL=oss-examples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oss-examples.d.ts","sourceRoot":"","sources":["../../src/core/oss-examples.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,GAAG,cAAc,GAAG,mBAAmB,CAAA;AAElF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,YAAY,CAAA;IAChB,KAAK,EAAE,YAAY,CAAA;CACpB;AAeD,eAAO,MAAM,YAAY,EAAE,UAAU,EAEE,CAAA;AAEvC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CA8CxD"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Catalog of OSS runtimes available to config-init probing. v3.28 ships
3
+ * subprocess support only; HTTP-shaped runtimes (lms, llama-server) get
4
+ * commented-out stubs that note v3.30 will enable them. local-ai-delegate
5
+ * documents a subprocess shim users can adapt in v3.28.
6
+ */
7
+ const OSS_RUNTIME_PROBES = {
8
+ ollama: { command: 'ollama', args: ['list'], timeoutMs: 1000 },
9
+ lms: { command: 'lms', args: ['ps'], timeoutMs: 1000 },
10
+ 'llama-server': { command: 'llama-server', args: ['--help'], timeoutMs: 1000 },
11
+ 'local-ai-delegate': { command: 'local-ai-delegate', args: ['--version'], timeoutMs: 1000 },
12
+ };
13
+ export const OSS_RUNTIMES = Object.entries(OSS_RUNTIME_PROBES).map(([id, probe]) => ({ id, probe }));
14
+ /**
15
+ * Commented YAML block for the given runtime. The block is meant to be
16
+ * pasted directly into a generated .mmr.yaml; every line is prefixed with
17
+ * `# ` so the user must explicitly opt in by uncommenting and editing.
18
+ */
19
+ export function exampleBlockFor(id) {
20
+ switch (id) {
21
+ case 'ollama':
22
+ return [
23
+ '# example: ollama (subprocess, JSON output)',
24
+ '# Uncomment and adjust to enable a local Ollama channel.',
25
+ '# ollama-base:',
26
+ '# abstract: true # template only',
27
+ '# command: ollama run',
28
+ '# auth:',
29
+ '# check: "ollama list"',
30
+ '# timeout: 5 # seconds',
31
+ '# failure_exit_codes: [1]',
32
+ '# recovery: "ollama serve"',
33
+ '# qwen-local:',
34
+ '# extends: ollama-base',
35
+ '# flags: ["qwen2.5-coder:32b", "--format", "json"]',
36
+ ].join('\n');
37
+ case 'lms':
38
+ return [
39
+ '# example: lms (LM Studio, HTTP) - requires MMR v3.30+',
40
+ '# LM Studio exposes /v1/chat/completions only; HTTP channel kind',
41
+ '# ships in v3.30. Leaving as a placeholder for now.',
42
+ ].join('\n');
43
+ case 'llama-server':
44
+ return [
45
+ '# example: llama-server (llama.cpp HTTP) - requires MMR v3.30+',
46
+ '# llama-server exposes /v1/chat/completions only; HTTP channel',
47
+ '# kind ships in v3.30. Leaving as a placeholder for now.',
48
+ ].join('\n');
49
+ case 'local-ai-delegate':
50
+ return [
51
+ '# example: local-ai-delegate (MCP bridge subprocess shim)',
52
+ '# The local-ai-delegate MCP server proxies an OpenAI-compatible',
53
+ '# endpoint to a locally-hosted model. Native HTTP channel kind ships',
54
+ '# in v3.30; this v3.28 example assumes a shell shim wrapper.',
55
+ '# local-ai-delegate-base:',
56
+ '# abstract: true # template only',
57
+ '# command: local-ai-delegate review',
58
+ '# local-ai-delegate-local:',
59
+ '# extends: local-ai-delegate-base',
60
+ '# flags: ["--format", "json"]',
61
+ ].join('\n');
62
+ }
63
+ const exhaustive = id;
64
+ return exhaustive;
65
+ }
66
+ //# sourceMappingURL=oss-examples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oss-examples.js","sourceRoot":"","sources":["../../src/core/oss-examples.ts"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,MAAM,kBAAkB,GAAuC;IAC7D,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;IAC9D,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;IACtD,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;IAC9E,mBAAmB,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;CAC5F,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GACvB,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAClC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AAEvC;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,EAAgB;IAC9C,QAAQ,EAAE,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO;gBACL,6CAA6C;gBAC7C,4DAA4D;gBAC5D,kBAAkB;gBAClB,uEAAuE;gBACvE,2BAA2B;gBAC3B,aAAa;gBACb,8BAA8B;gBAC9B,iEAAiE;gBACjE,iCAAiC;gBACjC,kCAAkC;gBAClC,iBAAiB;gBACjB,4BAA4B;gBAC5B,wDAAwD;aACzD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACd,KAAK,KAAK;YACR,OAAO;gBACL,wDAAwD;gBACxD,oEAAoE;gBACpE,uDAAuD;aACxD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACd,KAAK,cAAc;YACjB,OAAO;gBACL,gEAAgE;gBAChE,kEAAkE;gBAClE,4DAA4D;aAC7D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACd,KAAK,mBAAmB;YACtB,OAAO;gBACL,2DAA2D;gBAC3D,mEAAmE;gBACnE,wEAAwE;gBACxE,gEAAgE;gBAChE,6BAA6B;gBAC7B,uEAAuE;gBACvE,yCAAyC;gBACzC,8BAA8B;gBAC9B,uCAAuC;gBACvC,mCAAmC;aACpC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACd,CAAC;IACD,MAAM,UAAU,GAAU,EAAE,CAAA;IAC5B,OAAO,UAAU,CAAA;AACnB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { OutputParserConfig } from '../config/schema.js';
1
2
  import type { Finding } from '../types.js';
2
3
  export interface ParsedOutput {
3
4
  approved: boolean;
@@ -27,11 +28,15 @@ export declare function validateFinding(f: unknown): Finding;
27
28
  export declare function validateFindingStrict(f: unknown): Finding;
28
29
  export declare function validateParsedOutputStrict(obj: unknown): ParsedOutput;
29
30
  /**
30
- * Returns a parser function by name. Falls back to default if name is unknown.
31
+ * Build or look up a parser.
32
+ *
33
+ * String form looks up a built-in parser by name. Object form is intentionally
34
+ * routed through buildParser so structured configs are never silently ignored.
31
35
  */
32
- export declare function getParser(name: string): Parser;
36
+ export declare function getParser(spec: string | OutputParserConfig): Parser;
37
+ export declare function buildParser(spec: OutputParserConfig): Parser;
33
38
  /**
34
39
  * Wraps getParser in try/catch, returns error finding on parse failure.
35
40
  */
36
- export declare function parseChannelOutput(raw: string, parserName: string): ParsedOutput;
41
+ export declare function parseChannelOutput(raw: string, parserSpec: string | OutputParserConfig): ParsedOutput;
37
42
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAA;AAElD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgChD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAU/D;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAcnD;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAsBzD;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAarE;AAsCD;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAmBhF"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAG1C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAA;AAElD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgChD;AA8DD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAU/D;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAcnD;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAsBzD;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAarE;AAqED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,MAAM,CAKnE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAqB5D;AA2CD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,YAAY,CAmBrG"}