moderado 0.3.4 → 0.3.8

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 (115) hide show
  1. package/README.md +215 -215
  2. package/dist/args.js +29 -29
  3. package/dist/budget.d.ts +6 -0
  4. package/dist/budget.d.ts.map +1 -0
  5. package/dist/budget.js +25 -0
  6. package/dist/budget.js.map +1 -0
  7. package/dist/chat_mode.d.ts +14 -0
  8. package/dist/chat_mode.d.ts.map +1 -0
  9. package/dist/chat_mode.js +13 -0
  10. package/dist/chat_mode.js.map +1 -0
  11. package/dist/commands/chat.d.ts +5 -1
  12. package/dist/commands/chat.d.ts.map +1 -1
  13. package/dist/commands/chat.js +172 -43
  14. package/dist/commands/chat.js.map +1 -1
  15. package/dist/commands/host.d.ts +4 -0
  16. package/dist/commands/host.d.ts.map +1 -0
  17. package/dist/commands/host.js +30 -0
  18. package/dist/commands/host.js.map +1 -0
  19. package/dist/commands/models.d.ts.map +1 -1
  20. package/dist/commands/models.js +63 -16
  21. package/dist/commands/models.js.map +1 -1
  22. package/dist/config.d.ts +73 -0
  23. package/dist/config.d.ts.map +1 -1
  24. package/dist/config.js +116 -0
  25. package/dist/config.js.map +1 -1
  26. package/dist/host/approval_queue.d.ts +9 -0
  27. package/dist/host/approval_queue.d.ts.map +1 -0
  28. package/dist/host/approval_queue.js +63 -0
  29. package/dist/host/approval_queue.js.map +1 -0
  30. package/dist/host/auto_approve.d.ts +22 -0
  31. package/dist/host/auto_approve.d.ts.map +1 -0
  32. package/dist/host/auto_approve.js +36 -0
  33. package/dist/host/auto_approve.js.map +1 -0
  34. package/dist/host/ndjson.d.ts +3 -0
  35. package/dist/host/ndjson.d.ts.map +1 -0
  36. package/dist/host/ndjson.js +68 -0
  37. package/dist/host/ndjson.js.map +1 -0
  38. package/dist/host/protocol_server.d.ts +9 -0
  39. package/dist/host/protocol_server.d.ts.map +1 -0
  40. package/dist/host/protocol_server.js +101 -0
  41. package/dist/host/protocol_server.js.map +1 -0
  42. package/dist/host/runtime.d.ts +30 -0
  43. package/dist/host/runtime.d.ts.map +1 -0
  44. package/dist/host/runtime.js +603 -0
  45. package/dist/host/runtime.js.map +1 -0
  46. package/dist/model_pricing.d.ts +14 -1
  47. package/dist/model_pricing.d.ts.map +1 -1
  48. package/dist/model_pricing.js +52 -0
  49. package/dist/model_pricing.js.map +1 -1
  50. package/dist/repo_map.d.ts +3 -0
  51. package/dist/repo_map.d.ts.map +1 -0
  52. package/dist/repo_map.js +29 -0
  53. package/dist/repo_map.js.map +1 -0
  54. package/dist/sessions.d.ts +22 -15
  55. package/dist/sessions.d.ts.map +1 -1
  56. package/dist/sessions.js +16 -1
  57. package/dist/sessions.js.map +1 -1
  58. package/dist/skills.d.ts +2 -2
  59. package/dist/skills.js +2 -2
  60. package/dist/ui/model_selector.d.ts +2 -2
  61. package/dist/ui/model_selector.d.ts.map +1 -1
  62. package/dist/ui/model_selector.js +25 -16
  63. package/dist/ui/model_selector.js.map +1 -1
  64. package/dist/ui/provider_connect.d.ts +6 -3
  65. package/dist/ui/provider_connect.d.ts.map +1 -1
  66. package/dist/ui/provider_connect.js +41 -14
  67. package/dist/ui/provider_connect.js.map +1 -1
  68. package/dist/ui/renderer.d.ts +4 -0
  69. package/dist/ui/renderer.d.ts.map +1 -1
  70. package/dist/ui/renderer.js +36 -0
  71. package/dist/ui/renderer.js.map +1 -1
  72. package/dist/ui/session_screen.d.ts +32 -0
  73. package/dist/ui/session_screen.d.ts.map +1 -0
  74. package/dist/ui/session_screen.js +148 -0
  75. package/dist/ui/session_screen.js.map +1 -0
  76. package/dist/ui/session_terminal.d.ts +46 -0
  77. package/dist/ui/session_terminal.d.ts.map +1 -0
  78. package/dist/ui/session_terminal.js +342 -0
  79. package/dist/ui/session_terminal.js.map +1 -0
  80. package/dist/ui/welcome.d.ts +11 -0
  81. package/dist/ui/welcome.d.ts.map +1 -1
  82. package/dist/ui/welcome.js +49 -32
  83. package/dist/ui/welcome.js.map +1 -1
  84. package/dist/vendor/contracts/events.d.ts +159 -0
  85. package/dist/vendor/contracts/events.d.ts.map +1 -1
  86. package/dist/vendor/contracts/events.js +12 -0
  87. package/dist/vendor/contracts/events.js.map +1 -1
  88. package/dist/vendor/contracts/host_protocol.d.ts +3545 -0
  89. package/dist/vendor/contracts/host_protocol.d.ts.map +1 -0
  90. package/dist/vendor/contracts/host_protocol.js +292 -0
  91. package/dist/vendor/contracts/host_protocol.js.map +1 -0
  92. package/dist/vendor/contracts/provider.d.ts +1 -0
  93. package/dist/vendor/contracts/provider.d.ts.map +1 -1
  94. package/dist/vendor/contracts/provider.js +6 -0
  95. package/dist/vendor/contracts/provider.js.map +1 -1
  96. package/dist/vendor/core/agent.d.ts +2 -1
  97. package/dist/vendor/core/agent.d.ts.map +1 -1
  98. package/dist/vendor/core/agent.js +145 -31
  99. package/dist/vendor/core/agent.js.map +1 -1
  100. package/dist/vendor/providers/model_discovery.d.ts +2 -2
  101. package/dist/vendor/providers/model_discovery.d.ts.map +1 -1
  102. package/dist/vendor/providers/model_discovery.js +4 -2
  103. package/dist/vendor/providers/model_discovery.js.map +1 -1
  104. package/dist/vendor/providers/nvidia/nvidia_adapter.d.ts.map +1 -1
  105. package/dist/vendor/providers/nvidia/nvidia_adapter.js +1 -0
  106. package/dist/vendor/providers/nvidia/nvidia_adapter.js.map +1 -1
  107. package/dist/vendor/providers/nvidia/sse_parser.d.ts +2 -1
  108. package/dist/vendor/providers/nvidia/sse_parser.d.ts.map +1 -1
  109. package/dist/vendor/providers/nvidia/sse_parser.js +30 -16
  110. package/dist/vendor/providers/nvidia/sse_parser.js.map +1 -1
  111. package/dist/web_search_route.d.ts +16 -0
  112. package/dist/web_search_route.d.ts.map +1 -0
  113. package/dist/web_search_route.js +60 -0
  114. package/dist/web_search_route.js.map +1 -0
  115. package/package.json +28 -28
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAyB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAuB,eAAe,EAAqB,MAAM,kBAAkB,CAAC;AAE3F,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACjD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,mBAAmB,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAgC9D;AAoCD,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAkB5E;AAED,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWrE;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAgB1F;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAUxF;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAK9F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAM7F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAMvE;AAED,wBAAsB,yBAAyB,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAKnI;AAED,wBAAsB,2BAA2B,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAIrI;AAED,kGAAkG;AAClG,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB3G"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,8 +1,105 @@
1
1
  import fs from 'node:fs';
2
+ import { z } from 'zod';
2
3
  import path from 'node:path';
3
4
  import os from 'node:os';
4
5
  import { McpServerConfigSchema } from './vendor/contracts/index.js';
5
6
  import { credentialReference, resolveCredential } from './credentials.js';
7
+ export const CONNECT_PROVIDER_PRESET_IDS = [
8
+ 'nvidia-nim', 'openrouter', 'agnes-ai', 'orcarouter', 'ollama', 'lm-studio', 'openai-compatible',
9
+ ];
10
+ /**
11
+ * The free-tier declaration for a connection id, or `undefined` when the id has
12
+ * no preset. An undeclared provider contributes no free evidence at all.
13
+ */
14
+ export function freeModelPolicyFor(connectionId) {
15
+ const preset = connectionId ? findProviderPreset(connectionId) : undefined;
16
+ if (!preset)
17
+ return undefined;
18
+ return {
19
+ freeModelAliases: preset.freeModelAliases,
20
+ freeIdSuffixes: preset.freeIdSuffixes,
21
+ freeCatalog: preset.freeCatalog,
22
+ };
23
+ }
24
+ export const CONNECT_PROVIDER_PRESET_META = [
25
+ {
26
+ id: 'nvidia-nim',
27
+ label: 'NVIDIA NIM',
28
+ description: 'Free-first routing across Nemotron, LLaMA, DeepSeek and Kimi.',
29
+ kind: 'nvidia-nim',
30
+ baseUrl: 'https://integrate.api.nvidia.com/v1',
31
+ // Every hosted NIM endpoint runs on build.nvidia.com trial credits and the
32
+ // catalog advertises no `pricing`, so without this the free list is empty
33
+ // for the default provider.
34
+ freeCatalog: true,
35
+ requiresApiKey: true,
36
+ },
37
+ {
38
+ id: 'openrouter',
39
+ label: 'OpenRouter',
40
+ description: 'One key for Qwen, DeepSeek, Mistral and free-tier models.',
41
+ kind: 'openai-compatible',
42
+ baseUrl: 'https://openrouter.ai/api/v1',
43
+ requiresApiKey: true,
44
+ },
45
+ {
46
+ id: 'agnes-ai',
47
+ label: 'Agnes AI',
48
+ description: 'Agnes Flash and Code endpoints.',
49
+ kind: 'openai-compatible',
50
+ baseUrl: 'https://apihub.agnes-ai.com/v1',
51
+ // Every Agnes AI endpoint is free, and the catalog advertises no `pricing`
52
+ // to prove it per model. Declared once as a property of the provider so the
53
+ // whole catalog lands in the free bucket in every surface, instead of a
54
+ // hardcoded model list in one of them.
55
+ freeCatalog: true,
56
+ requiresApiKey: true,
57
+ },
58
+ {
59
+ id: 'orcarouter',
60
+ label: 'OrcaRouter',
61
+ description: 'Adaptive model routing.',
62
+ kind: 'openai-compatible',
63
+ baseUrl: 'https://api.orcarouter.ai/v1',
64
+ defaultModel: 'orcarouter/free',
65
+ // The catalog advertises no pricing, so a free endpoint is identified by its
66
+ // name: every routing endpoint OrcaRouter serves for nothing ends in `free`.
67
+ // Declared as a trailing marker rather than a free-for-all substring, so the
68
+ // rest of the catalog stays metered.
69
+ freeIdSuffixes: ['free'],
70
+ requiresApiKey: true,
71
+ },
72
+ {
73
+ id: 'ollama',
74
+ label: 'Ollama',
75
+ description: 'Models served locally by Ollama.',
76
+ kind: 'openai-compatible',
77
+ baseUrl: 'http://127.0.0.1:11434/v1',
78
+ requiresApiKey: false,
79
+ },
80
+ {
81
+ id: 'lm-studio',
82
+ label: 'LM Studio',
83
+ description: 'Models served by the LM Studio local server.',
84
+ kind: 'openai-compatible',
85
+ baseUrl: 'http://127.0.0.1:1234/v1',
86
+ requiresApiKey: false,
87
+ },
88
+ ];
89
+ /** True for loopback endpoints, which authenticate without an API key. */
90
+ export function isLoopbackBaseUrl(baseUrl) {
91
+ try {
92
+ const url = new URL(baseUrl);
93
+ return (url.protocol === 'http:' &&
94
+ ['127.0.0.1', 'localhost', '[::1]', '::1'].includes(url.hostname));
95
+ }
96
+ catch {
97
+ return false;
98
+ }
99
+ }
100
+ export function findProviderPreset(id) {
101
+ return CONNECT_PROVIDER_PRESET_META.find((preset) => preset.id === id);
102
+ }
6
103
  const CONFIG_DIR_NAME = '.moderado';
7
104
  const CONFIG_FILE_NAME = 'config.json';
8
105
  export function getConfigPath(customHome) {
@@ -28,6 +125,7 @@ export function loadConfig(customHome) {
28
125
  ? parsed.activeConnectionId
29
126
  : undefined,
30
127
  connections: Object.keys(connections).length > 0 ? connections : undefined,
128
+ connectProviders: parseConnectProviders(parsed.connectProviders),
31
129
  mcpServers: parseMcpServers(parsed.mcpServers),
32
130
  typescriptLanguageServer: typeof parsed.typescriptLanguageServer === 'string' ? parsed.typescriptLanguageServer : undefined,
33
131
  webSearchEndpoint: typeof parsed.webSearchEndpoint === 'string' ? parsed.webSearchEndpoint : undefined,
@@ -41,6 +139,24 @@ export function loadConfig(customHome) {
41
139
  return {};
42
140
  }
43
141
  }
142
+ function parseConnectProviders(value) {
143
+ const custom = z.object({
144
+ id: z.string().regex(/^[a-z0-9][a-z0-9_-]{0,31}$/).refine(id => !CONNECT_PROVIDER_PRESET_IDS.includes(id)),
145
+ name: z.string().trim().min(1).max(80),
146
+ baseUrl: z.string().trim().url().refine(value => {
147
+ const url = new URL(value);
148
+ return !url.username && !url.password && (url.protocol === 'https:' || isLoopbackBaseUrl(value));
149
+ }).transform(value => value.replace(/\/+$/, '')),
150
+ defaultModel: z.string().trim().min(1).optional(),
151
+ });
152
+ const schema = z.object({ enabled: z.array(z.enum(CONNECT_PROVIDER_PRESET_IDS)).optional(), custom: z.array(custom).optional() });
153
+ const parsed = schema.safeParse(value);
154
+ if (!parsed.success)
155
+ return undefined;
156
+ if (parsed.data.custom)
157
+ parsed.data.custom = parsed.data.custom.filter((item, index, items) => items.findIndex(other => other.id === item.id) === index);
158
+ return parsed.data;
159
+ }
44
160
  function parseMcpServers(value) {
45
161
  if (!value || typeof value !== 'object')
46
162
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ApprovalDecision, ApprovalRequest, ApprovalStatus, IApprovalHandler } from '@moderado/contracts';
2
+ export declare class ApprovalQueue implements IApprovalHandler {
3
+ private readonly pending;
4
+ private closed;
5
+ requestApproval(request: ApprovalRequest, signal?: AbortSignal): Promise<ApprovalDecision>;
6
+ resolve(requestId: string, status: ApprovalStatus, reason?: string): boolean;
7
+ close(): void;
8
+ }
9
+ //# sourceMappingURL=approval_queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval_queue.d.ts","sourceRoot":"","sources":["../../src/host/approval_queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAS7B,qBAAa,aAAc,YAAW,gBAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,MAAM,CAAS;IAEjB,eAAe,CACnB,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAkC5B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAmB5E,KAAK,IAAI,IAAI;CAad"}
@@ -0,0 +1,63 @@
1
+ export class ApprovalQueue {
2
+ pending = new Map();
3
+ closed = false;
4
+ async requestApproval(request, signal) {
5
+ if (this.closed || signal?.aborted) {
6
+ return {
7
+ requestId: request.requestId,
8
+ status: 'aborted',
9
+ };
10
+ }
11
+ if (this.pending.has(request.requestId)) {
12
+ throw new Error(`Duplicate approval request ID: ${request.requestId}`);
13
+ }
14
+ return new Promise((resolve) => {
15
+ const entry = {
16
+ request,
17
+ resolve,
18
+ signal,
19
+ };
20
+ if (signal) {
21
+ entry.onAbort = () => {
22
+ this.pending.delete(request.requestId);
23
+ resolve({
24
+ requestId: request.requestId,
25
+ status: 'aborted',
26
+ });
27
+ };
28
+ signal.addEventListener('abort', entry.onAbort, { once: true });
29
+ }
30
+ this.pending.set(request.requestId, entry);
31
+ });
32
+ }
33
+ resolve(requestId, status, reason) {
34
+ const entry = this.pending.get(requestId);
35
+ if (!entry) {
36
+ return false;
37
+ }
38
+ this.pending.delete(requestId);
39
+ if (entry.signal && entry.onAbort) {
40
+ entry.signal.removeEventListener('abort', entry.onAbort);
41
+ }
42
+ entry.resolve({
43
+ requestId,
44
+ status,
45
+ reason,
46
+ });
47
+ return true;
48
+ }
49
+ close() {
50
+ this.closed = true;
51
+ for (const [requestId, entry] of this.pending.entries()) {
52
+ if (entry.signal && entry.onAbort) {
53
+ entry.signal.removeEventListener('abort', entry.onAbort);
54
+ }
55
+ entry.resolve({
56
+ requestId,
57
+ status: 'aborted',
58
+ });
59
+ }
60
+ this.pending.clear();
61
+ }
62
+ }
63
+ //# sourceMappingURL=approval_queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval_queue.js","sourceRoot":"","sources":["../../src/host/approval_queue.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,aAAa;IACP,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IACtD,MAAM,GAAG,KAAK,CAAC;IAEvB,KAAK,CAAC,eAAe,CACnB,OAAwB,EACxB,MAAoB;QAEpB,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACnC,OAAO;gBACL,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,SAAS;aAClB,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,EAAE;YAC/C,MAAM,KAAK,GAAoB;gBAC7B,OAAO;gBACP,OAAO;gBACP,MAAM;aACP,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE;oBACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACvC,OAAO,CAAC;wBACN,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAC;gBACL,CAAC,CAAC;gBACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,SAAiB,EAAE,MAAsB,EAAE,MAAe;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,CAAC,OAAO,CAAC;YACZ,SAAS;YACT,MAAM;YACN,MAAM;SACP,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC;YACD,KAAK,CAAC,OAAO,CAAC;gBACZ,SAAS;gBACT,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ import { type ApprovalDecision, type ApprovalRequest, type AutoApproveSettings, type IApprovalHandler } from '@moderado/contracts';
2
+ /**
3
+ * Applies the per-category auto-approve policy in front of the human queue.
4
+ *
5
+ * This is deliberately a decorator rather than a change to the agent loop: the
6
+ * loop's approval boundary already calls an `IApprovalHandler`, so the policy
7
+ * lives entirely on the host side. The core stays unaware that categories exist,
8
+ * and the CLI keeps its own single-switch policy without either one importing
9
+ * the other.
10
+ *
11
+ * An auto-approved action still emits its `approval_request` and
12
+ * `approval_resolved` events, so the transcript shows what ran and that a person
13
+ * was not asked — silently skipping the gate would make an unattended write
14
+ * indistinguishable from a bug.
15
+ */
16
+ export declare class AutoApproveHandler implements IApprovalHandler {
17
+ private readonly delegate;
18
+ private readonly settings;
19
+ constructor(delegate: IApprovalHandler, settings: AutoApproveSettings);
20
+ requestApproval(request: ApprovalRequest, signal?: AbortSignal): Promise<ApprovalDecision>;
21
+ }
22
+ //# sourceMappingURL=auto_approve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto_approve.d.ts","sourceRoot":"","sources":["../../src/host/auto_approve.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAmB,YAAW,gBAAgB;IAEvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,mBAAmB;IAG1C,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAYjG"}
@@ -0,0 +1,36 @@
1
+ import { approvalCategoryForTool, } from '../vendor/contracts/index.js';
2
+ /**
3
+ * Applies the per-category auto-approve policy in front of the human queue.
4
+ *
5
+ * This is deliberately a decorator rather than a change to the agent loop: the
6
+ * loop's approval boundary already calls an `IApprovalHandler`, so the policy
7
+ * lives entirely on the host side. The core stays unaware that categories exist,
8
+ * and the CLI keeps its own single-switch policy without either one importing
9
+ * the other.
10
+ *
11
+ * An auto-approved action still emits its `approval_request` and
12
+ * `approval_resolved` events, so the transcript shows what ran and that a person
13
+ * was not asked — silently skipping the gate would make an unattended write
14
+ * indistinguishable from a bug.
15
+ */
16
+ export class AutoApproveHandler {
17
+ delegate;
18
+ settings;
19
+ constructor(delegate, settings) {
20
+ this.delegate = delegate;
21
+ this.settings = settings;
22
+ }
23
+ async requestApproval(request, signal) {
24
+ const category = approvalCategoryForTool(request.toolName);
25
+ // No category means no declared trust level, so it falls through to the human.
26
+ if (category && this.settings[category]) {
27
+ return {
28
+ requestId: request.requestId,
29
+ status: 'approved',
30
+ reason: `Auto-approved: the '${category}' category is enabled in Moderado settings.`,
31
+ };
32
+ }
33
+ return this.delegate.requestApproval(request, signal);
34
+ }
35
+ }
36
+ //# sourceMappingURL=auto_approve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto_approve.js","sourceRoot":"","sources":["../../src/host/auto_approve.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAKxB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IAFnB,YACmB,QAA0B,EAC1B,QAA6B;QAD7B,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,aAAQ,GAAR,QAAQ,CAAqB;IAC7C,CAAC;IAEJ,KAAK,CAAC,eAAe,CAAC,OAAwB,EAAE,MAAoB;QAClE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3D,+EAA+E;QAC/E,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,OAAO;gBACL,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,uBAAuB,QAAQ,6CAA6C;aACrF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export declare function readHostMessages(input: NodeJS.ReadableStream, maxLineBytes?: number): AsyncIterable<unknown>;
2
+ export declare function writeHostMessage(output: NodeJS.WritableStream, message: unknown): Promise<void>;
3
+ //# sourceMappingURL=ndjson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndjson.d.ts","sourceRoot":"","sources":["../../src/host/ndjson.ts"],"names":[],"mappings":"AAAA,wBAAuB,gBAAgB,CACrC,KAAK,EAAE,MAAM,CAAC,cAAc,EAC5B,YAAY,SAAY,GACvB,aAAa,CAAC,OAAO,CAAC,CAsDxB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAqBf"}
@@ -0,0 +1,68 @@
1
+ export async function* readHostMessages(input, maxLineBytes = 1_048_576) {
2
+ let chunks = [];
3
+ let bufferedBytes = 0;
4
+ for await (const chunk of input) {
5
+ const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
6
+ let start = 0;
7
+ for (let i = 0; i < buf.length; i++) {
8
+ if (bufferedBytes + (i - start) > maxLineBytes) {
9
+ throw new Error(`Line exceeds maximum allowed size of ${maxLineBytes} bytes`);
10
+ }
11
+ if (buf[i] === 0x0a) {
12
+ // Found '\n'
13
+ const slice = buf.subarray(start, i);
14
+ chunks.push(slice);
15
+ bufferedBytes += slice.length;
16
+ if (bufferedBytes > maxLineBytes) {
17
+ throw new Error(`Line exceeds maximum allowed size of ${maxLineBytes} bytes`);
18
+ }
19
+ const lineBuf = Buffer.concat(chunks, bufferedBytes);
20
+ chunks = [];
21
+ bufferedBytes = 0;
22
+ start = i + 1;
23
+ let str = lineBuf.toString('utf8');
24
+ if (str.endsWith('\r')) {
25
+ str = str.slice(0, -1);
26
+ }
27
+ if (str.trim().length === 0) {
28
+ continue;
29
+ }
30
+ yield JSON.parse(str);
31
+ }
32
+ }
33
+ if (start < buf.length) {
34
+ const remaining = buf.subarray(start);
35
+ chunks.push(remaining);
36
+ bufferedBytes += remaining.length;
37
+ if (bufferedBytes > maxLineBytes) {
38
+ throw new Error(`Line exceeds maximum allowed size of ${maxLineBytes} bytes`);
39
+ }
40
+ }
41
+ }
42
+ if (bufferedBytes > 0) {
43
+ throw new Error('Unexpected EOF: incomplete line in stream');
44
+ }
45
+ }
46
+ export async function writeHostMessage(output, message) {
47
+ const line = JSON.stringify(message) + '\n';
48
+ const canContinue = output.write(line, 'utf8');
49
+ if (!canContinue) {
50
+ await new Promise((resolve, reject) => {
51
+ const onDrain = () => {
52
+ cleanup();
53
+ resolve();
54
+ };
55
+ const onError = (err) => {
56
+ cleanup();
57
+ reject(err);
58
+ };
59
+ const cleanup = () => {
60
+ output.off('drain', onDrain);
61
+ output.off('error', onError);
62
+ };
63
+ output.on('drain', onDrain);
64
+ output.on('error', onError);
65
+ });
66
+ }
67
+ }
68
+ //# sourceMappingURL=ndjson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndjson.js","sourceRoot":"","sources":["../../src/host/ndjson.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type HostNotification, type HostRequest, type InitializeRequest, type InitializeResult } from '@moderado/contracts';
2
+ export interface HostSessionRuntime {
3
+ initialize(request: InitializeRequest): Promise<InitializeResult>;
4
+ dispatch(request: HostRequest): Promise<unknown>;
5
+ close(): Promise<void>;
6
+ }
7
+ export type HostSessionFactory = (emit: (notification: HostNotification) => Promise<void>) => HostSessionRuntime | Promise<HostSessionRuntime>;
8
+ export declare function serveHostProtocol(input: NodeJS.ReadableStream, output: NodeJS.WritableStream, sessionFactory: HostSessionFactory, signal?: AbortSignal): Promise<void>;
9
+ //# sourceMappingURL=protocol_server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol_server.d.ts","sourceRoot":"","sources":["../../src/host/protocol_server.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClE,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,KACpD,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEtD,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,CAAC,cAAc,EAC5B,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,cAAc,EAAE,kBAAkB,EAClC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA0Gf"}
@@ -0,0 +1,101 @@
1
+ import { HostRequestSchema, } from '../vendor/contracts/index.js';
2
+ import { readHostMessages, writeHostMessage } from './ndjson.js';
3
+ export async function serveHostProtocol(input, output, sessionFactory, signal) {
4
+ const emit = async (notification) => {
5
+ await writeHostMessage(output, notification);
6
+ };
7
+ const runtime = await sessionFactory(emit);
8
+ const inFlightRequestIds = new Set();
9
+ const sendResponse = async (id, ok, resultOrError) => {
10
+ if (ok) {
11
+ await writeHostMessage(output, {
12
+ type: 'response',
13
+ id,
14
+ ok: true,
15
+ result: resultOrError.result,
16
+ });
17
+ }
18
+ else {
19
+ await writeHostMessage(output, {
20
+ type: 'response',
21
+ id,
22
+ ok: false,
23
+ error: resultOrError.error,
24
+ });
25
+ }
26
+ };
27
+ try {
28
+ for await (const raw of readHostMessages(input)) {
29
+ if (signal?.aborted) {
30
+ break;
31
+ }
32
+ const hasStringId = typeof raw?.id === 'string' && raw.id.length > 0;
33
+ const rawId = hasStringId ? raw.id : undefined;
34
+ // Check for unsupported protocol version in initialize
35
+ if (raw?.method === 'initialize') {
36
+ const proto = raw?.params?.protocolVersion;
37
+ if (proto !== 1) {
38
+ if (rawId) {
39
+ await sendResponse(rawId, false, {
40
+ error: {
41
+ code: 'UNSUPPORTED_VERSION',
42
+ message: `Unsupported protocol version ${proto}. Expected 1.`,
43
+ },
44
+ });
45
+ }
46
+ break;
47
+ }
48
+ }
49
+ const parseResult = HostRequestSchema.safeParse(raw);
50
+ if (!parseResult.success) {
51
+ if (rawId) {
52
+ await sendResponse(rawId, false, {
53
+ error: {
54
+ code: 'INVALID_REQUEST',
55
+ message: parseResult.error.message,
56
+ },
57
+ });
58
+ }
59
+ continue;
60
+ }
61
+ const request = parseResult.data;
62
+ if (inFlightRequestIds.has(request.id)) {
63
+ await sendResponse(request.id, false, {
64
+ error: {
65
+ code: 'BUSY',
66
+ message: `Request ID ${request.id} is already in flight`,
67
+ },
68
+ });
69
+ continue;
70
+ }
71
+ inFlightRequestIds.add(request.id);
72
+ (async () => {
73
+ try {
74
+ let result;
75
+ if (request.method === 'initialize') {
76
+ result = await runtime.initialize(request);
77
+ }
78
+ else {
79
+ result = await runtime.dispatch(request);
80
+ }
81
+ await sendResponse(request.id, true, { result });
82
+ }
83
+ catch (err) {
84
+ await sendResponse(request.id, false, {
85
+ error: {
86
+ code: err.code || 'INTERNAL_ERROR',
87
+ message: err.message || 'Internal host error',
88
+ },
89
+ });
90
+ }
91
+ finally {
92
+ inFlightRequestIds.delete(request.id);
93
+ }
94
+ })();
95
+ }
96
+ }
97
+ finally {
98
+ await runtime.close();
99
+ }
100
+ }
101
+ //# sourceMappingURL=protocol_server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol_server.js","sourceRoot":"","sources":["../../src/host/protocol_server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { HostNotification, HostRequest, InitializeRequest, InitializeResult, IProviderAdapter, IToolRegistry } from '@moderado/contracts';
2
+ import { AgentLoop } from '@moderado/core';
3
+ import { CredentialStore } from '../credentials.js';
4
+ import { SessionStore } from '../sessions.js';
5
+ import { ApprovalQueue } from './approval_queue.js';
6
+ export interface HostRuntimeDependencies {
7
+ provider?: IProviderAdapter;
8
+ credentialStore?: CredentialStore;
9
+ customHome?: string;
10
+ tools?: IToolRegistry;
11
+ sessionStore?: SessionStore;
12
+ agentLoop?: AgentLoop;
13
+ }
14
+ export interface CreateHostRuntimeOptions {
15
+ workspaceRoot: string;
16
+ emit: (notification: HostNotification) => Promise<void>;
17
+ dependencies?: HostRuntimeDependencies;
18
+ providerId?: string;
19
+ modelId?: string;
20
+ }
21
+ export interface HostRuntime {
22
+ readonly approvalQueue: ApprovalQueue;
23
+ readonly canonicalWorkspaceRoot: string;
24
+ initialize(request?: InitializeRequest): Promise<InitializeResult>;
25
+ dispatch(request: HostRequest): Promise<unknown>;
26
+ waitForActiveGeneration?(): Promise<void>;
27
+ close(): Promise<void>;
28
+ }
29
+ export declare function createHostRuntime(options: CreateHostRuntimeOptions): Promise<HostRuntime>;
30
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/host/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EAId,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,SAAS,EAA0C,MAAM,gBAAgB,CAAC;AAuBnF,OAAO,EAAE,eAAe,EAAyB,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAiB,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAIjF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnE,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,uBAAuB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAyCD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC,CAunB/F"}