@intutic/cli 2.0.0 → 2.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 (225) hide show
  1. package/dist/cli.js +131 -130
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/attenuate.d.ts.map +1 -1
  4. package/dist/commands/attenuate.js +4 -2
  5. package/dist/commands/attenuate.js.map +1 -1
  6. package/dist/commands/budget.d.ts.map +1 -1
  7. package/dist/commands/budget.js +2 -2
  8. package/dist/commands/budget.js.map +1 -1
  9. package/dist/commands/connect.d.ts.map +1 -1
  10. package/dist/commands/connect.js +138 -49
  11. package/dist/commands/connect.js.map +1 -1
  12. package/dist/commands/disconnect.d.ts +25 -0
  13. package/dist/commands/disconnect.d.ts.map +1 -0
  14. package/dist/commands/disconnect.js +252 -0
  15. package/dist/commands/disconnect.js.map +1 -0
  16. package/dist/commands/doctor.d.ts +19 -1
  17. package/dist/commands/doctor.d.ts.map +1 -1
  18. package/dist/commands/doctor.js +33 -41
  19. package/dist/commands/doctor.js.map +1 -1
  20. package/dist/commands/enforce.d.ts +10 -0
  21. package/dist/commands/enforce.d.ts.map +1 -1
  22. package/dist/commands/enforce.js +36 -0
  23. package/dist/commands/enforce.js.map +1 -1
  24. package/dist/commands/env.d.ts +1 -1
  25. package/dist/commands/env.d.ts.map +1 -1
  26. package/dist/commands/env.js +2 -7
  27. package/dist/commands/env.js.map +1 -1
  28. package/dist/commands/exec.d.ts +7 -8
  29. package/dist/commands/exec.d.ts.map +1 -1
  30. package/dist/commands/exec.js +59 -60
  31. package/dist/commands/exec.js.map +1 -1
  32. package/dist/commands/gateway.d.ts +2 -0
  33. package/dist/commands/gateway.d.ts.map +1 -1
  34. package/dist/commands/gateway.js +16 -3
  35. package/dist/commands/gateway.js.map +1 -1
  36. package/dist/commands/guardrails.d.ts.map +1 -1
  37. package/dist/commands/guardrails.js +18 -1
  38. package/dist/commands/guardrails.js.map +1 -1
  39. package/dist/commands/init.d.ts +5 -2
  40. package/dist/commands/init.d.ts.map +1 -1
  41. package/dist/commands/init.js +38 -22
  42. package/dist/commands/init.js.map +1 -1
  43. package/dist/commands/install-daemon.d.ts +1 -1
  44. package/dist/commands/install-daemon.d.ts.map +1 -1
  45. package/dist/commands/install-daemon.js +5 -3
  46. package/dist/commands/install-daemon.js.map +1 -1
  47. package/dist/commands/integrity.d.ts +31 -2
  48. package/dist/commands/integrity.d.ts.map +1 -1
  49. package/dist/commands/integrity.js +116 -3
  50. package/dist/commands/integrity.js.map +1 -1
  51. package/dist/commands/judge.d.ts +8 -4
  52. package/dist/commands/judge.d.ts.map +1 -1
  53. package/dist/commands/judge.js +41 -21
  54. package/dist/commands/judge.js.map +1 -1
  55. package/dist/commands/login.d.ts +1 -0
  56. package/dist/commands/login.d.ts.map +1 -1
  57. package/dist/commands/login.js +16 -1
  58. package/dist/commands/login.js.map +1 -1
  59. package/dist/commands/predict-cost.d.ts +1 -2
  60. package/dist/commands/predict-cost.d.ts.map +1 -1
  61. package/dist/commands/predict-cost.js +1 -4
  62. package/dist/commands/predict-cost.js.map +1 -1
  63. package/dist/commands/setup.d.ts +1 -2
  64. package/dist/commands/setup.d.ts.map +1 -1
  65. package/dist/commands/setup.js +11 -68
  66. package/dist/commands/setup.js.map +1 -1
  67. package/dist/commands/skill.d.ts +1 -0
  68. package/dist/commands/skill.d.ts.map +1 -1
  69. package/dist/commands/skill.js +17 -3
  70. package/dist/commands/skill.js.map +1 -1
  71. package/dist/commands/start.d.ts.map +1 -1
  72. package/dist/commands/start.js +5 -1
  73. package/dist/commands/start.js.map +1 -1
  74. package/dist/commands/syncContext.d.ts.map +1 -1
  75. package/dist/commands/syncContext.js +15 -5
  76. package/dist/commands/syncContext.js.map +1 -1
  77. package/dist/config/paths.d.ts +25 -3
  78. package/dist/config/paths.d.ts.map +1 -1
  79. package/dist/config/paths.js +47 -7
  80. package/dist/config/paths.js.map +1 -1
  81. package/dist/harness/agentFramework.d.ts +25 -0
  82. package/dist/harness/agentFramework.d.ts.map +1 -0
  83. package/dist/harness/agentFramework.js +37 -0
  84. package/dist/harness/agentFramework.js.map +1 -0
  85. package/dist/harness/agentcore.d.ts +6 -3
  86. package/dist/harness/agentcore.d.ts.map +1 -1
  87. package/dist/harness/agentcore.js +7 -4
  88. package/dist/harness/agentcore.js.map +1 -1
  89. package/dist/harness/agenticOrchestrator.d.ts +3 -5
  90. package/dist/harness/agenticOrchestrator.d.ts.map +1 -1
  91. package/dist/harness/agenticOrchestrator.js +3 -5
  92. package/dist/harness/agenticOrchestrator.js.map +1 -1
  93. package/dist/harness/aiSdkHarness.d.ts +1 -1
  94. package/dist/harness/aiSdkHarness.js +1 -1
  95. package/dist/harness/aiSdkWorkflow.d.ts +1 -1
  96. package/dist/harness/aiSdkWorkflow.d.ts.map +1 -1
  97. package/dist/harness/aiSdkWorkflow.js +5 -3
  98. package/dist/harness/aiSdkWorkflow.js.map +1 -1
  99. package/dist/harness/aider.d.ts +4 -3
  100. package/dist/harness/aider.d.ts.map +1 -1
  101. package/dist/harness/aider.js +7 -6
  102. package/dist/harness/aider.js.map +1 -1
  103. package/dist/harness/antigravity.d.ts +4 -2
  104. package/dist/harness/antigravity.d.ts.map +1 -1
  105. package/dist/harness/antigravity.js +15 -12
  106. package/dist/harness/antigravity.js.map +1 -1
  107. package/dist/harness/base.d.ts +5 -1
  108. package/dist/harness/base.d.ts.map +1 -1
  109. package/dist/harness/base.js +9 -8
  110. package/dist/harness/base.js.map +1 -1
  111. package/dist/harness/cline.d.ts +10 -4
  112. package/dist/harness/cline.d.ts.map +1 -1
  113. package/dist/harness/cline.js +40 -32
  114. package/dist/harness/cline.js.map +1 -1
  115. package/dist/harness/codex.d.ts +10 -4
  116. package/dist/harness/codex.d.ts.map +1 -1
  117. package/dist/harness/codex.js +30 -32
  118. package/dist/harness/codex.js.map +1 -1
  119. package/dist/harness/continue.d.ts +8 -5
  120. package/dist/harness/continue.d.ts.map +1 -1
  121. package/dist/harness/continue.js +27 -63
  122. package/dist/harness/continue.js.map +1 -1
  123. package/dist/harness/cursor.d.ts.map +1 -1
  124. package/dist/harness/cursor.js +2 -6
  125. package/dist/harness/cursor.js.map +1 -1
  126. package/dist/harness/detector.d.ts +1 -1
  127. package/dist/harness/detector.d.ts.map +1 -1
  128. package/dist/harness/detector.js +3 -1
  129. package/dist/harness/detector.js.map +1 -1
  130. package/dist/harness/dsh.d.ts +2 -2
  131. package/dist/harness/dsh.js +3 -3
  132. package/dist/harness/dsh.js.map +1 -1
  133. package/dist/harness/eve.d.ts +1 -1
  134. package/dist/harness/eve.js +1 -1
  135. package/dist/harness/githubCopilot.d.ts +4 -2
  136. package/dist/harness/githubCopilot.d.ts.map +1 -1
  137. package/dist/harness/githubCopilot.js +13 -8
  138. package/dist/harness/githubCopilot.js.map +1 -1
  139. package/dist/harness/grok.d.ts.map +1 -1
  140. package/dist/harness/grok.js +4 -6
  141. package/dist/harness/grok.js.map +1 -1
  142. package/dist/harness/jsSdkGatedAdapter.d.ts.map +1 -1
  143. package/dist/harness/jsSdkGatedAdapter.js +8 -9
  144. package/dist/harness/jsSdkGatedAdapter.js.map +1 -1
  145. package/dist/harness/langgraph.d.ts.map +1 -1
  146. package/dist/harness/langgraph.js +8 -10
  147. package/dist/harness/langgraph.js.map +1 -1
  148. package/dist/harness/muse.d.ts.map +1 -1
  149. package/dist/harness/muse.js +4 -6
  150. package/dist/harness/muse.js.map +1 -1
  151. package/dist/harness/n8n.d.ts +12 -2
  152. package/dist/harness/n8n.d.ts.map +1 -1
  153. package/dist/harness/n8n.js +66 -3
  154. package/dist/harness/n8n.js.map +1 -1
  155. package/dist/harness/openWebUI.d.ts +7 -2
  156. package/dist/harness/openWebUI.d.ts.map +1 -1
  157. package/dist/harness/openWebUI.js +15 -4
  158. package/dist/harness/openWebUI.js.map +1 -1
  159. package/dist/harness/openaiAgents.d.ts.map +1 -1
  160. package/dist/harness/openaiAgents.js +4 -1
  161. package/dist/harness/openaiAgents.js.map +1 -1
  162. package/dist/harness/opencode.d.ts +3 -2
  163. package/dist/harness/opencode.d.ts.map +1 -1
  164. package/dist/harness/opencode.js +7 -8
  165. package/dist/harness/opencode.js.map +1 -1
  166. package/dist/harness/openhands.d.ts +3 -2
  167. package/dist/harness/openhands.d.ts.map +1 -1
  168. package/dist/harness/openhands.js +40 -27
  169. package/dist/harness/openhands.js.map +1 -1
  170. package/dist/harness/rooCode.d.ts +6 -5
  171. package/dist/harness/rooCode.d.ts.map +1 -1
  172. package/dist/harness/rooCode.js +13 -18
  173. package/dist/harness/rooCode.js.map +1 -1
  174. package/dist/harness/sdkGatedAdapter.d.ts.map +1 -1
  175. package/dist/harness/sdkGatedAdapter.js +8 -9
  176. package/dist/harness/sdkGatedAdapter.js.map +1 -1
  177. package/dist/harness/trueforge.js +2 -2
  178. package/dist/harness/trueforge.js.map +1 -1
  179. package/dist/harness/types.d.ts.map +1 -1
  180. package/dist/harness/types.js +4 -1
  181. package/dist/harness/types.js.map +1 -1
  182. package/dist/harness/windsurf.d.ts +4 -2
  183. package/dist/harness/windsurf.d.ts.map +1 -1
  184. package/dist/harness/windsurf.js +14 -11
  185. package/dist/harness/windsurf.js.map +1 -1
  186. package/dist/harness/xirp.d.ts +5 -7
  187. package/dist/harness/xirp.d.ts.map +1 -1
  188. package/dist/harness/xirp.js +5 -7
  189. package/dist/harness/xirp.js.map +1 -1
  190. package/dist/lib/envInjector.d.ts +16 -6
  191. package/dist/lib/envInjector.d.ts.map +1 -1
  192. package/dist/lib/envInjector.js +99 -88
  193. package/dist/lib/envInjector.js.map +1 -1
  194. package/dist/lib/localProxy.d.ts +19 -0
  195. package/dist/lib/localProxy.d.ts.map +1 -0
  196. package/dist/lib/localProxy.js +33 -0
  197. package/dist/lib/localProxy.js.map +1 -0
  198. package/dist/lib/onboarding.d.ts +1 -1
  199. package/dist/lib/onboarding.d.ts.map +1 -1
  200. package/dist/lib/onboarding.js +21 -27
  201. package/dist/lib/onboarding.js.map +1 -1
  202. package/dist/lib/otelPropagation.d.ts +1 -1
  203. package/dist/lib/otelPropagation.js +1 -1
  204. package/dist/lib/policySnapshot.d.ts +2 -1
  205. package/dist/lib/policySnapshot.d.ts.map +1 -1
  206. package/dist/lib/policySnapshot.js +11 -4
  207. package/dist/lib/policySnapshot.js.map +1 -1
  208. package/dist/lib/sandbox/image.d.ts +27 -0
  209. package/dist/lib/sandbox/image.d.ts.map +1 -0
  210. package/dist/lib/sandbox/image.js +54 -0
  211. package/dist/lib/sandbox/image.js.map +1 -0
  212. package/dist/lib/sandbox/oci.d.ts +1 -0
  213. package/dist/lib/sandbox/oci.d.ts.map +1 -1
  214. package/dist/lib/sandbox/oci.js +4 -0
  215. package/dist/lib/sandbox/oci.js.map +1 -1
  216. package/dist/lib/sandbox/types.d.ts +5 -0
  217. package/dist/lib/sandbox/types.d.ts.map +1 -1
  218. package/package.json +6 -5
  219. package/resources/sandbox/Dockerfile +30 -0
  220. package/resources/sandbox/entrypoint.sh +108 -0
  221. package/resources/sandbox/firecracker-launch.sh +120 -0
  222. package/dist/harness/vscodeSettingsWriter.d.ts +0 -40
  223. package/dist/harness/vscodeSettingsWriter.d.ts.map +0 -1
  224. package/dist/harness/vscodeSettingsWriter.js +0 -116
  225. package/dist/harness/vscodeSettingsWriter.js.map +0 -1
@@ -1,29 +1,36 @@
1
1
  /**
2
- * cline.ts — Cline adapter (full implementation).
2
+ * cline.ts — Cline adapter.
3
3
  *
4
- * Detects the Cline VS Code extension, writes Intutic governance rules
5
- * as .clinerules (flat file), injects the PreToolUse blocking hook into .cline/hooks/,
6
- * and configures the proxy base URL via VS Code settings + .env.intutic sidecar.
4
+ * Detects the Cline VS Code extension, writes Intutic governance rules to
5
+ * `.clinerules/intutic-governance.md` and installs the PreToolUse gate at
6
+ * `.clinerules/hooks/PreToolUse` (see clineHooks.ts — `.clinerules` is a
7
+ * directory so both fit; a flat `.clinerules` an earlier version wrote is
8
+ * converted, one the user wrote is left alone).
9
+ *
10
+ * Cline keeps its API provider and base URL in its own settings panel, not in
11
+ * any file this adapter can write, so routing Cline through the proxy is a
12
+ * manual step (see the Cline integration page).
7
13
  *
8
14
  * HLD §3.14 — Harness Onboarding Matrix
9
15
  * @module
10
16
  */
11
- import { access, readdir, writeFile, rename, mkdir } from 'node:fs/promises';
12
- import { join, dirname } from 'node:path';
17
+ import { access, readdir } from 'node:fs/promises';
18
+ import { join } from 'node:path';
13
19
  import { homedir } from 'node:os';
14
20
  import { HarnessType } from '@intutic/shared-types';
15
21
  import { hashFile } from '../lib/hash.js';
22
+ import { loadCredentials } from '../config/store.js';
16
23
  import { newIso } from '@intutic/id';
17
- import { writeClineHooks } from '@intutic/sync-daemon/harness/clineHooks';
18
- import { injectClineProxySettings } from './vscodeSettingsWriter.js';
19
- const CONFIG_FILE = '.clinerules';
24
+ import { writeClineHooks, ensureClinerulesDirectory } from '@intutic/sync-daemon/harness/clineHooks';
25
+ import { keepOriginal, writeOwnedFile } from '@intutic/sync-daemon';
26
+ const CONFIG_FILE = '.clinerules/intutic-governance.md';
20
27
  export const clineAdapter = {
21
28
  type: HarnessType.CLINE,
22
29
  configFileName: CONFIG_FILE,
23
30
  async detect(workspaceRoot) {
24
- // Check for .clinerules in workspace
31
+ // Check for .clinerules (file or directory) in workspace
25
32
  try {
26
- await access(join(workspaceRoot, CONFIG_FILE));
33
+ await access(join(workspaceRoot, '.clinerules'));
27
34
  return true;
28
35
  }
29
36
  catch {
@@ -40,27 +47,28 @@ export const clineAdapter = {
40
47
  }
41
48
  },
42
49
  async writeConfig(workspaceRoot, sops, proxyUrl) {
43
- // 1. Write .clinerules text rules
44
- const filePath = join(workspaceRoot, CONFIG_FILE);
45
- const instructions = sops.length > 0
46
- ? sops.map((sop) => `## ${sop.title}\n\n${sop.content}`).join('\n\n---\n\n')
47
- : '# Intutic governance active — no SOP rules configured yet.';
48
- const content = [
49
- '# Intutic Governance Rules (auto-generated)',
50
- '# DO NOT EDIT — managed by intutic sync daemon',
51
- `# Last sync: ${newIso()}`,
52
- '',
53
- instructions,
54
- '',
55
- ].join('\n');
56
- await mkdir(dirname(filePath), { recursive: true });
57
- const tmp = filePath + '.intutic-tmp';
58
- await writeFile(tmp, content, 'utf-8');
59
- await rename(tmp, filePath);
60
- // 2. Write PreToolUse blocking hooks into .cline/hooks/
61
- await writeClineHooks(workspaceRoot, proxyUrl);
62
- // 3. Inject proxy URL into VS Code settings + .env.intutic sidecar
63
- await injectClineProxySettings(workspaceRoot, proxyUrl);
50
+ // 1. Rules, as one file in the .clinerules directory Cline reads.
51
+ let filePath = null;
52
+ // Kept before `.clinerules` is created, so disconnect knows it made the directory.
53
+ await keepOriginal(join(workspaceRoot, CONFIG_FILE), workspaceRoot);
54
+ if (await ensureClinerulesDirectory(workspaceRoot)) {
55
+ filePath = join(workspaceRoot, CONFIG_FILE);
56
+ const instructions = sops.length > 0
57
+ ? sops.map((sop) => `## ${sop.title}\n\n${sop.content}`).join('\n\n---\n\n')
58
+ : '# Intutic governance active — no SOP rules configured yet.';
59
+ const content = [
60
+ '# Intutic Governance Rules (auto-generated)',
61
+ '# DO NOT EDIT — managed by intutic sync daemon',
62
+ `# Last sync: ${newIso()}`,
63
+ '',
64
+ instructions,
65
+ '',
66
+ ].join('\n');
67
+ await writeOwnedFile(filePath, workspaceRoot, content);
68
+ }
69
+ // 2. The PreToolUse gate in .clinerules/hooks/.
70
+ const creds = await loadCredentials();
71
+ await writeClineHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local');
64
72
  return filePath;
65
73
  },
66
74
  async readCurrentHash(workspaceRoot) {
@@ -1 +1 @@
1
- {"version":3,"file":"cline.js","sourceRoot":"","sources":["../../src/harness/cline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cline.js","sourceRoot":"","sources":["../../src/harness/cline.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,15 @@
1
1
  /**
2
- * codex.ts — Codex adapter (updated: also writes ~/.codex/config.toml).
2
+ * codex.ts — Codex adapter.
3
3
  *
4
- * In addition to the workspace .env.intutic file, writes
5
- * ~/.codex/config.toml with model_providers.litellm.base_url so Codex
6
- * routes LLM calls through the Intutic proxy even without env var sourcing.
4
+ * Writes three things:
5
+ * - `.env.intutic` in the workspace, with the proxy base URLs for shells and
6
+ * scripts that source it;
7
+ * - `openai_base_url` in Codex's user config (`$CODEX_HOME/config.toml`,
8
+ * `~/.codex/config.toml` by default), merged into the user's file, so Codex
9
+ * routes LLM calls through the proxy without sourcing anything — see
10
+ * codexConfigMerger.ts;
11
+ * - the PreToolUse gate, registered in `~/.codex/hooks.json` and the
12
+ * project's `.codex/hooks.json` — see codexHooks.ts.
7
13
  *
8
14
  * HLD §3.14 — Harness Onboarding Matrix
9
15
  * @module
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/harness/codex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,eAAO,MAAM,YAAY,EAAE,eAkE1B,CAAA"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/harness/codex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAcjD,eAAO,MAAM,YAAY,EAAE,eAqD1B,CAAA"}
@@ -1,21 +1,32 @@
1
1
  /**
2
- * codex.ts — Codex adapter (updated: also writes ~/.codex/config.toml).
2
+ * codex.ts — Codex adapter.
3
3
  *
4
- * In addition to the workspace .env.intutic file, writes
5
- * ~/.codex/config.toml with model_providers.litellm.base_url so Codex
6
- * routes LLM calls through the Intutic proxy even without env var sourcing.
4
+ * Writes three things:
5
+ * - `.env.intutic` in the workspace, with the proxy base URLs for shells and
6
+ * scripts that source it;
7
+ * - `openai_base_url` in Codex's user config (`$CODEX_HOME/config.toml`,
8
+ * `~/.codex/config.toml` by default), merged into the user's file, so Codex
9
+ * routes LLM calls through the proxy without sourcing anything — see
10
+ * codexConfigMerger.ts;
11
+ * - the PreToolUse gate, registered in `~/.codex/hooks.json` and the
12
+ * project's `.codex/hooks.json` — see codexHooks.ts.
7
13
  *
8
14
  * HLD §3.14 — Harness Onboarding Matrix
9
15
  * @module
10
16
  */
11
- import { join, dirname } from 'node:path';
12
- import { writeFile, rename, mkdir } from 'node:fs/promises';
17
+ import { join } from 'node:path';
13
18
  import { homedir } from 'node:os';
14
- import { HarnessType } from '@intutic/shared-types';
19
+ import { HarnessType, anthropicBaseUrl, openaiBaseUrl, proxyHost } from '@intutic/shared-types';
15
20
  import { hashFile } from '../lib/hash.js';
21
+ import { loadCredentials } from '../config/store.js';
16
22
  import { newIso } from '@intutic/id';
23
+ import { writeCodexHooks, mergeCodexConfig, writeOwnedFile } from '@intutic/sync-daemon';
17
24
  const CONFIG_FILE = '.env.intutic';
18
- const CODEX_CONFIG = join(homedir(), '.codex', 'config.toml');
25
+ /** Codex's user config directory, resolved at call time so CODEX_HOME and
26
+ * HOME changes (and tests that move them) are honoured. */
27
+ function codexHome() {
28
+ return process.env.CODEX_HOME || join(homedir(), '.codex');
29
+ }
19
30
  export const codexAdapter = {
20
31
  type: HarnessType.CODEX,
21
32
  configFileName: CONFIG_FILE,
@@ -45,33 +56,20 @@ export const codexAdapter = {
45
56
  `# Last sync: ${newIso()}`,
46
57
  '# Source this file: source .env.intutic',
47
58
  '',
48
- `export ANTHROPIC_BASE_URL="${proxyUrl}"`,
49
- `export OPENAI_BASE_URL="${proxyUrl}"`,
50
- `export INTUTIC_PROXY_URL="${proxyUrl}"`,
59
+ `export ANTHROPIC_BASE_URL="${anthropicBaseUrl(proxyUrl)}"`,
60
+ `export OPENAI_BASE_URL="${openaiBaseUrl(proxyUrl)}"`,
61
+ `export INTUTIC_PROXY_URL="${proxyHost(proxyUrl)}"`,
51
62
  `export INTUTIC_SOP_COUNT=${sops.length}`,
52
63
  '',
53
64
  ].join('\n');
54
- await mkdir(dirname(filePath), { recursive: true });
55
- const tmpEnv = filePath + '.intutic-tmp';
56
- await writeFile(tmpEnv, envContent, 'utf-8');
57
- await rename(tmpEnv, filePath);
58
- // 2. ~/.codex/config.toml — persists proxy across sessions without env sourcing
59
- const codexToml = [
60
- '# Intutic proxy config (auto-generated)',
61
- '# DO NOT EDIT — managed by intutic sync daemon',
62
- `# Last sync: ${newIso()}`,
63
- '',
64
- '[model_providers.litellm]',
65
- `base_url = "${proxyUrl}"`,
66
- '',
67
- '[model_providers.openai]',
68
- `base_url = "${proxyUrl}"`,
69
- '',
70
- ].join('\n');
71
- await mkdir(dirname(CODEX_CONFIG), { recursive: true });
72
- const tmpToml = CODEX_CONFIG + '.intutic-tmp';
73
- await writeFile(tmpToml, codexToml, 'utf-8');
74
- await rename(tmpToml, CODEX_CONFIG);
65
+ await writeOwnedFile(filePath, workspaceRoot, envContent);
66
+ // 2. Codex user config — persists proxy routing across sessions without
67
+ // env sourcing. Merged; a config.toml that does not parse is left alone.
68
+ await mergeCodexConfig(join(codexHome(), 'config.toml'), openaiBaseUrl(proxyUrl));
69
+ // 3. The PreToolUse gate. The routing above governs LLM egress only; the
70
+ // gate is what refuses tool calls.
71
+ const creds = await loadCredentials();
72
+ await writeCodexHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local');
75
73
  return filePath;
76
74
  },
77
75
  async readCurrentHash(workspaceRoot) {
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/harness/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/harness/codex.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  /**
2
- * continue.ts — Continue adapter (proxy URL injection).
2
+ * continue.ts — Continue adapter.
3
3
  *
4
- * Detects the Continue AI coding assistant and merges the Intutic
5
- * proxy URL as apiBase into each model entry in ~/.continue/config.yaml.
6
- * Continue has no hook system so proxy routing (Vector B) is the only
7
- * available governance mechanism.
4
+ * Detects the Continue AI coding assistant and:
5
+ * - sets `apiBase` on each OpenAI/Anthropic model in `~/.continue/config.yaml`
6
+ * so its LLM calls reach the proxy (merged; see continueConfigMerger.ts);
7
+ * - installs the Continue CLI (`cn`) PreToolUse gate in
8
+ * `~/.continue/settings.json` and `<repo>/.continue/settings.json` (see
9
+ * continueHooks.ts). The IDE extension has no hook system, so for it proxy
10
+ * routing is the only mechanism.
8
11
  *
9
12
  * HLD §3.14 — Harness Onboarding Matrix
10
13
  * @module
@@ -1 +1 @@
1
- {"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/harness/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AASjD,eAAO,MAAM,eAAe,EAAE,eAiE7B,CAAA"}
1
+ {"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/harness/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAWjD,eAAO,MAAM,eAAe,EAAE,eA6B7B,CAAA"}
@@ -1,29 +1,34 @@
1
1
  /**
2
- * continue.ts — Continue adapter (proxy URL injection).
2
+ * continue.ts — Continue adapter.
3
3
  *
4
- * Detects the Continue AI coding assistant and merges the Intutic
5
- * proxy URL as apiBase into each model entry in ~/.continue/config.yaml.
6
- * Continue has no hook system so proxy routing (Vector B) is the only
7
- * available governance mechanism.
4
+ * Detects the Continue AI coding assistant and:
5
+ * - sets `apiBase` on each OpenAI/Anthropic model in `~/.continue/config.yaml`
6
+ * so its LLM calls reach the proxy (merged; see continueConfigMerger.ts);
7
+ * - installs the Continue CLI (`cn`) PreToolUse gate in
8
+ * `~/.continue/settings.json` and `<repo>/.continue/settings.json` (see
9
+ * continueHooks.ts). The IDE extension has no hook system, so for it proxy
10
+ * routing is the only mechanism.
8
11
  *
9
12
  * HLD §3.14 — Harness Onboarding Matrix
10
13
  * @module
11
14
  */
12
- import { access, readdir, readFile, writeFile, rename, mkdir } from 'node:fs/promises';
15
+ import { access, readdir } from 'node:fs/promises';
13
16
  import { join } from 'node:path';
14
17
  import { homedir } from 'node:os';
15
- import { HarnessType } from '@intutic/shared-types';
18
+ import { HarnessType, openaiBaseUrl } from '@intutic/shared-types';
16
19
  import { hashFile } from '../lib/hash.js';
17
- import { newIso } from '@intutic/id';
18
- const home = homedir();
19
- const CONTINUE_DIR = join(home, '.continue');
20
- const CONFIG_YAML = join(CONTINUE_DIR, 'config.yaml');
21
- const CONFIG_JSON = join(CONTINUE_DIR, 'config.json');
20
+ import { loadCredentials } from '../config/store.js';
21
+ import { mergeContinueConfig, writeContinueHooks } from '@intutic/sync-daemon';
22
+ /** `~/.continue/<name>`, resolved at call time so HOME changes (and tests
23
+ * that move HOME) are honoured. */
24
+ function continuePath(name) {
25
+ return join(homedir(), '.continue', name);
26
+ }
22
27
  export const continueAdapter = {
23
28
  type: HarnessType.CONTINUE,
24
- configFileName: CONFIG_YAML,
29
+ configFileName: continuePath('config.yaml'),
25
30
  async detect(_workspaceRoot) {
26
- for (const p of [CONFIG_YAML, CONFIG_JSON]) {
31
+ for (const p of [continuePath('config.yaml'), continuePath('config.json')]) {
27
32
  try {
28
33
  await access(p);
29
34
  return true;
@@ -31,64 +36,23 @@ export const continueAdapter = {
31
36
  catch { /* fall through */ }
32
37
  }
33
38
  try {
34
- const entries = await readdir(join(home, '.vscode', 'extensions'));
39
+ const entries = await readdir(join(homedir(), '.vscode', 'extensions'));
35
40
  return entries.some((e) => e.startsWith('continue.continue-'));
36
41
  }
37
42
  catch {
38
43
  return false;
39
44
  }
40
45
  },
41
- async writeConfig(_workspaceRoot, _sops, proxyUrl) {
42
- // Merge apiBase into each model entry in config.yaml
43
- // Both branches below assign, so an initialiser here would always be dead.
44
- let raw;
45
- try {
46
- raw = await readFile(CONFIG_YAML, 'utf-8');
47
- }
48
- catch {
49
- raw = '';
50
- }
51
- // Inject apiBase under each `- name:` model entry.
52
- // Simple line-based approach that handles the common config.yaml structure.
53
- const lines = raw.split('\n');
54
- const result = [];
55
- let inModels = false;
56
- for (let i = 0; i < lines.length; i++) {
57
- const line = lines[i];
58
- result.push(line);
59
- if (line.trim() === 'models:') {
60
- inModels = true;
61
- continue;
62
- }
63
- if (inModels && line.trim().startsWith('- name:')) {
64
- // After each model entry start, inject apiBase if not already present
65
- const next = lines[i + 1] ?? '';
66
- if (!next.trim().startsWith('apiBase:')) {
67
- result.push(` apiBase: "${proxyUrl}"`);
68
- }
69
- }
70
- if (inModels && line.trim() && !line.startsWith(' ') && !line.trim().startsWith('-') && !line.trim().startsWith('models:')) {
71
- inModels = false;
72
- }
73
- }
74
- // If config.yaml is empty or has no models section yet, write a minimal config
75
- if (!raw.includes('models:')) {
76
- result.push('# Intutic proxy config (auto-generated)');
77
- result.push(`# Last sync: ${newIso()}`);
78
- result.push('models:');
79
- result.push(' - name: "Intutic Governed Model"');
80
- result.push(` apiBase: "${proxyUrl}"`);
81
- }
82
- const content = result.join('\n');
83
- await mkdir(CONTINUE_DIR, { recursive: true });
84
- const tmp = CONFIG_YAML + '.intutic-tmp';
85
- await writeFile(tmp, content, 'utf-8');
86
- await rename(tmp, CONFIG_YAML);
87
- return CONFIG_YAML;
46
+ async writeConfig(workspaceRoot, _sops, proxyUrl) {
47
+ const configYaml = continuePath('config.yaml');
48
+ const routed = await mergeContinueConfig(configYaml, openaiBaseUrl(proxyUrl));
49
+ const creds = await loadCredentials();
50
+ await writeContinueHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local');
51
+ return routed > 0 ? configYaml : null;
88
52
  },
89
53
  async readCurrentHash(_workspaceRoot) {
90
54
  try {
91
- return await hashFile(CONFIG_YAML);
55
+ return await hashFile(continuePath('config.yaml'));
92
56
  }
93
57
  catch {
94
58
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/harness/continue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/harness/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGlE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAE9E;oCACoC;AACpC,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,cAAc,EAAE,YAAY,CAAC,aAAa,CAAC;IAE3C,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,KAAK,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;gBAAC,OAAO,IAAI,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;YACvE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,KAAqB,EAAE,QAAgB;QAC9E,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;QAE7E,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QACrC,MAAM,kBAAkB,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,OAAO,CAAC,CAAA;QAEhF,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,cAAsB;QAC1C,IAAI,CAAC;YAAC,OAAO,MAAM,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;IAClF,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/harness/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AASjD,eAAO,MAAM,aAAa,EAAE,eAgC3B,CAAA"}
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/harness/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQjD,eAAO,MAAM,aAAa,EAAE,eA6B3B,CAAA"}
@@ -16,8 +16,7 @@ import { HarnessType } from '@intutic/shared-types';
16
16
  import { hashFile } from '../lib/hash.js';
17
17
  import { buildMarkdownContent } from './base.js';
18
18
  import { writeCursorHooks } from '@intutic/sync-daemon/harness/cursorHooks';
19
- import { writeFile, rename, mkdir } from 'node:fs/promises';
20
- import { dirname } from 'node:path';
19
+ import { writeOwnedFile } from '@intutic/sync-daemon';
21
20
  const CONFIG_FILE = '.cursorrules';
22
21
  export const cursorAdapter = {
23
22
  type: HarnessType.CURSOR,
@@ -44,10 +43,7 @@ export const cursorAdapter = {
44
43
  // 1. Write .cursorrules markdown governance text
45
44
  const filePath = join(workspaceRoot, CONFIG_FILE);
46
45
  const content = buildMarkdownContent(sops, proxyUrl);
47
- await mkdir(dirname(filePath), { recursive: true });
48
- const tmp = filePath + '.intutic-tmp';
49
- await writeFile(tmp, content, 'utf-8');
50
- await rename(tmp, filePath);
46
+ await writeOwnedFile(filePath, workspaceRoot, content);
51
47
  // 2. Inject hooks.json at project + user level (writeSystemLevel=false;
52
48
  // system level requires sudo execution)
53
49
  await writeCursorHooks(workspaceRoot, proxyUrl, '', false);
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/harness/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,WAAW,GAAG,cAAc,CAAA;AAElC,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE,WAAW,CAAC,MAAM;IACxB,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,qCAAqC;QACrC,KAAK,MAAM,MAAM,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;gBAAC,OAAO,IAAI,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC7F,CAAC;QACD,kDAAkD;QAClD,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAA;QAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QAC7E,iDAAiD;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACpD,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,MAAM,GAAG,GAAG,QAAQ,GAAG,cAAc,CAAA;QACrC,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACtC,MAAM,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAE3B,wEAAwE;QACxE,2CAA2C;QAC3C,MAAM,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;QAE1D,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,IAAI,CAAC;YAAC,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;IACvF,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/harness/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,WAAW,GAAG,cAAc,CAAA;AAElC,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE,WAAW,CAAC,MAAM;IACxB,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,qCAAqC;QACrC,KAAK,MAAM,MAAM,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;gBAAC,OAAO,IAAI,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC7F,CAAC;QACD,kDAAkD;QAClD,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAA;QAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QAC7E,iDAAiD;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACpD,MAAM,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;QAEtD,wEAAwE;QACxE,2CAA2C;QAC3C,MAAM,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;QAE1D,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,IAAI,CAAC;YAAC,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;IACvF,CAAC;CACF,CAAA"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Harness detector — auto-detect which AI harnesses are present.
3
3
  *
4
- * Instantiates all 40 adapters and checks each for presence in
4
+ * Instantiates all 42 adapters and checks each for presence in
5
5
  * the workspace. Returns a DetectedHarness array for reporting.
6
6
  *
7
7
  * HLD §3.14 — Harness Onboarding Matrix
@@ -1 +1 @@
1
- {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/harness/detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AA4CjD,uCAAuC;AACvC,eAAO,MAAM,YAAY,EAAE,eAAe,EA0CzC,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAgBvF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEpE"}
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/harness/detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AA6CjD,uCAAuC;AACvC,eAAO,MAAM,YAAY,EAAE,eAAe,EA2CzC,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAgBvF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEpE"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Harness detector — auto-detect which AI harnesses are present.
3
3
  *
4
- * Instantiates all 40 adapters and checks each for presence in
4
+ * Instantiates all 42 adapters and checks each for presence in
5
5
  * the workspace. Returns a DetectedHarness array for reporting.
6
6
  *
7
7
  * HLD §3.14 — Harness Onboarding Matrix
@@ -42,6 +42,7 @@ import { openaiAgentsAdapter } from './openaiAgents.js';
42
42
  import { pydanticAiAdapter } from './pydanticAi.js';
43
43
  import { smolagentsAdapter } from './smolagents.js';
44
44
  import { strandsAdapter } from './strands.js';
45
+ import { agentFrameworkAdapter } from './agentFramework.js';
45
46
  import { mastraAdapter } from './mastra.js';
46
47
  import { vercelAiSdkAdapter } from './vercelAiSdk.js';
47
48
  import { eveAdapter } from './eve.js';
@@ -86,6 +87,7 @@ export const ALL_ADAPTERS = [
86
87
  pydanticAiAdapter,
87
88
  smolagentsAdapter,
88
89
  strandsAdapter,
90
+ agentFrameworkAdapter,
89
91
  mastraAdapter,
90
92
  vercelAiSdkAdapter,
91
93
  eveAdapter,
@@ -1 +1 @@
1
- {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/harness/detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,uCAAuC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAsB;IAC7C,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,cAAc;IACd,eAAe;IACf,oBAAoB;IACpB,YAAY;IACZ,gBAAgB;IAChB,eAAe;IACf,SAAS;IACT,aAAa;IACb,oBAAoB;IACpB,gBAAgB;IAChB,WAAW;IACX,WAAW;IACX,eAAe;IACf,UAAU;IACV,WAAW;IACX,0BAA0B;IAC1B,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,UAAU;IACV,gBAAgB;IAChB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,cAAc;IACd,aAAa;IACb,kBAAkB;IAClB,UAAU;IACV,gBAAgB;IAChB,mBAAmB;IACnB,oBAAoB;IACpB,gBAAgB;CACjB,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,aAAqB;IACzD,MAAM,OAAO,GAAsB,EAAE,CAAA;IAErC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QACpD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,cAAc;gBAChC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC;gBAC7C,CAAC,CAAC,EAAE;YACN,QAAQ;YACR,WAAW,EAAE,IAAI;SAClB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAClD,CAAC"}
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/harness/detector.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,8 @@
6
6
  * adapter could write governance text into (see `types.ts`'s
7
7
  * `HARNESS_CONFIG_FILES.dsh`). The governance-critical half — the
8
8
  * `tools/pre-execute` Cordis plugin registration (`cordis.patch.yml` per
9
- * profile), the profile's `@intutic/gate` dependency, and the `settings.yaml`
10
- * `llm-pi-ai` proxy route — is delegated entirely to
9
+ * profile), the profile's `@intutic/gate` dependency, and the `llm-deepseek`
10
+ * egress override in that same patch file — is delegated entirely to
11
11
  * `@intutic/sync-daemon`'s `dshHooks.ts`, the same split Goose/Muse Code's
12
12
  * adapters use for their own plugin installation.
13
13
  *
@@ -6,8 +6,8 @@
6
6
  * adapter could write governance text into (see `types.ts`'s
7
7
  * `HARNESS_CONFIG_FILES.dsh`). The governance-critical half — the
8
8
  * `tools/pre-execute` Cordis plugin registration (`cordis.patch.yml` per
9
- * profile), the profile's `@intutic/gate` dependency, and the `settings.yaml`
10
- * `llm-pi-ai` proxy route — is delegated entirely to
9
+ * profile), the profile's `@intutic/gate` dependency, and the `llm-deepseek`
10
+ * egress override in that same patch file — is delegated entirely to
11
11
  * `@intutic/sync-daemon`'s `dshHooks.ts`, the same split Goose/Muse Code's
12
12
  * adapters use for their own plugin installation.
13
13
  *
@@ -70,7 +70,7 @@ export const dshAdapter = {
70
70
  async writeConfig(workspaceRoot, _sops, proxyUrl) {
71
71
  // No rules/markdown file for dsh — `sops` are not consulted here (same
72
72
  // "no text-rules file" posture as goose.ts's own adapter). The plugin
73
- // registration + settings.yaml merge is the entirety of what this
73
+ // registration + egress row in each profile patch is the entirety of what this
74
74
  // harness gets, and it happens for every existing profile, not one file.
75
75
  await writeDshHooks(workspaceRoot, proxyUrl, '');
76
76
  const dshHome = resolveDshHome();
@@ -1 +1 @@
1
- {"version":3,"file":"dsh.js","sourceRoot":"","sources":["../../src/harness/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAEzG,MAAM,CAAC,MAAM,UAAU,GAAoB;IACzC,IAAI,EAAE,WAAW,CAAC,gBAAgB;IAClC,0EAA0E;IAC1E,iEAAiE;IACjE,qEAAqE;IACrE,4DAA4D;IAC5D,uDAAuD;IACvD,cAAc,EAAE,EAAE;IAElB,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;QAEhC,2EAA2E;QAC3E,yEAAyE;QACzE,KAAK,MAAM,MAAM,IAAI,CAAC,eAAe,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,CAAC;YACxE,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;gBACnC,OAAO,IAAI,CAAA;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,sEAAsE;QACtE,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACzF,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;YAC9C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;oBAC5B,OAAO,IAAI,CAAA;gBACb,CAAC;gBAAC,MAAM,CAAC;oBACP,cAAc;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QAED,2EAA2E;QAC3E,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,yEAAyE;QACzE,mEAAmE;QACnE,uEAAuE;QACvE,kEAAkE;QAClE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,KAAqB,EAAE,QAAgB;QAC9E,uEAAuE;QACvE,sEAAsE;QACtE,kEAAkE;QAClE,yEAAyE;QACzE,MAAM,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;QAEhD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;QAChC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAClD,uEAAuE;QACvE,qEAAqE;QACrE,qEAAqE;QACrE,wEAAwE;QACxE,uDAAuD;QACvD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAC/E,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,cAAsB;QAC1C,wEAAwE;QACxE,mEAAmE;QACnE,wEAAwE;QACxE,sEAAsE;QACtE,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"dsh.js","sourceRoot":"","sources":["../../src/harness/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAEzG,MAAM,CAAC,MAAM,UAAU,GAAoB;IACzC,IAAI,EAAE,WAAW,CAAC,gBAAgB;IAClC,0EAA0E;IAC1E,iEAAiE;IACjE,qEAAqE;IACrE,4DAA4D;IAC5D,uDAAuD;IACvD,cAAc,EAAE,EAAE;IAElB,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;QAEhC,2EAA2E;QAC3E,yEAAyE;QACzE,KAAK,MAAM,MAAM,IAAI,CAAC,eAAe,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,CAAC;YACxE,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;gBACnC,OAAO,IAAI,CAAA;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,sEAAsE;QACtE,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACzF,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;YAC9C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;oBAC5B,OAAO,IAAI,CAAA;gBACb,CAAC;gBAAC,MAAM,CAAC;oBACP,cAAc;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QAED,2EAA2E;QAC3E,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,yEAAyE;QACzE,mEAAmE;QACnE,uEAAuE;QACvE,kEAAkE;QAClE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,KAAqB,EAAE,QAAgB;QAC9E,uEAAuE;QACvE,sEAAsE;QACtE,+EAA+E;QAC/E,yEAAyE;QACzE,MAAM,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;QAEhD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;QAChC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAClD,uEAAuE;QACvE,qEAAqE;QACrE,qEAAqE;QACrE,wEAAwE;QACxE,uDAAuD;QACvD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAC/E,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,cAAsB;QAC1C,wEAAwE;QACxE,mEAAmE;QACnE,wEAAwE;QACxE,sEAAsE;QACtE,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA"}
@@ -20,7 +20,7 @@
20
20
  *
21
21
  * PREVIEW-CHURN NOTE (same shield the dsh integration established): eve is a
22
22
  * fast-moving preview product. `@intutic/gate/eve` was verified against
23
- * eve@0.39.1's shipped `.d.ts` — see that module's doc for exactly what was
23
+ * eve@0.71.0's shipped `.d.ts` (first 0.39.1) — see that module's doc for exactly what was
24
24
  * confirmed vs. assumed, and docs/TECH_DEBT.md TD-410/TD-411/TD-412.
25
25
  *
26
26
  * LLM-egress note carried into the generated `.env.intutic`: eve routes
@@ -20,7 +20,7 @@
20
20
  *
21
21
  * PREVIEW-CHURN NOTE (same shield the dsh integration established): eve is a
22
22
  * fast-moving preview product. `@intutic/gate/eve` was verified against
23
- * eve@0.39.1's shipped `.d.ts` — see that module's doc for exactly what was
23
+ * eve@0.71.0's shipped `.d.ts` (first 0.39.1) — see that module's doc for exactly what was
24
24
  * confirmed vs. assumed, and docs/TECH_DEBT.md TD-410/TD-411/TD-412.
25
25
  *
26
26
  * LLM-egress note carried into the generated `.env.intutic`: eve routes
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * githubCopilot.ts — GitHub Copilot adapter.
3
3
  *
4
- * Detects GitHub Copilot presence (.git, .github, or .github/copilot-instructions.md)
5
- * and writes Markdown rules to `.github/copilot-instructions.md`.
4
+ * Detects GitHub Copilot presence (.git, .github, or .github/copilot-instructions.md),
5
+ * writes Markdown rules to `.github/copilot-instructions.md`, and installs the
6
+ * VS Code agent-mode PreToolUse gate (`.github/hooks/intutic-governance.json`
7
+ * and `~/.copilot/hooks/intutic-governance.json`) — see githubCopilotHooks.ts.
6
8
  *
7
9
  * HLD §3.14 — Harness Onboarding Matrix
8
10
  * @module
@@ -1 +1 @@
1
- {"version":3,"file":"githubCopilot.d.ts","sourceRoot":"","sources":["../../src/harness/githubCopilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD,eAAO,MAAM,oBAAoB,EAAE,eAmClC,CAAA"}
1
+ {"version":3,"file":"githubCopilot.d.ts","sourceRoot":"","sources":["../../src/harness/githubCopilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQjD,eAAO,MAAM,oBAAoB,EAAE,eAqClC,CAAA"}