@intutic/cli 2.8.1 → 2.9.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 (74) hide show
  1. package/README.md +9 -5
  2. package/dist/cli.js +24 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/connect.d.ts +2 -26
  5. package/dist/commands/connect.d.ts.map +1 -1
  6. package/dist/commands/connect.js +5 -54
  7. package/dist/commands/connect.js.map +1 -1
  8. package/dist/commands/disconnect.d.ts +7 -4
  9. package/dist/commands/disconnect.d.ts.map +1 -1
  10. package/dist/commands/disconnect.js +28 -15
  11. package/dist/commands/disconnect.js.map +1 -1
  12. package/dist/commands/doctor.d.ts +12 -3
  13. package/dist/commands/doctor.d.ts.map +1 -1
  14. package/dist/commands/doctor.js +59 -10
  15. package/dist/commands/doctor.js.map +1 -1
  16. package/dist/commands/gates.d.ts +26 -0
  17. package/dist/commands/gates.d.ts.map +1 -0
  18. package/dist/commands/gates.js +121 -0
  19. package/dist/commands/gates.js.map +1 -0
  20. package/dist/commands/init.d.ts +6 -3
  21. package/dist/commands/init.d.ts.map +1 -1
  22. package/dist/commands/init.js +32 -5
  23. package/dist/commands/init.js.map +1 -1
  24. package/dist/commands/start.d.ts +10 -0
  25. package/dist/commands/start.d.ts.map +1 -1
  26. package/dist/commands/start.js +74 -1
  27. package/dist/commands/start.js.map +1 -1
  28. package/dist/commands/status.d.ts.map +1 -1
  29. package/dist/commands/status.js +13 -3
  30. package/dist/commands/status.js.map +1 -1
  31. package/dist/harness/aider.d.ts.map +1 -1
  32. package/dist/harness/aider.js +3 -2
  33. package/dist/harness/aider.js.map +1 -1
  34. package/dist/harness/codex.d.ts.map +1 -1
  35. package/dist/harness/codex.js +3 -2
  36. package/dist/harness/codex.js.map +1 -1
  37. package/dist/harness/continue.d.ts.map +1 -1
  38. package/dist/harness/continue.js +4 -1
  39. package/dist/harness/continue.js.map +1 -1
  40. package/dist/harness/dsh.d.ts.map +1 -1
  41. package/dist/harness/dsh.js +2 -2
  42. package/dist/harness/dsh.js.map +1 -1
  43. package/dist/harness/goose.d.ts.map +1 -1
  44. package/dist/harness/goose.js +2 -2
  45. package/dist/harness/goose.js.map +1 -1
  46. package/dist/harness/grok.d.ts.map +1 -1
  47. package/dist/harness/grok.js +2 -2
  48. package/dist/harness/grok.js.map +1 -1
  49. package/dist/harness/hermes.d.ts.map +1 -1
  50. package/dist/harness/hermes.js +2 -2
  51. package/dist/harness/hermes.js.map +1 -1
  52. package/dist/harness/openhands.d.ts.map +1 -1
  53. package/dist/harness/openhands.js +5 -3
  54. package/dist/harness/openhands.js.map +1 -1
  55. package/dist/harness/pi.d.ts.map +1 -1
  56. package/dist/harness/pi.js +2 -2
  57. package/dist/harness/pi.js.map +1 -1
  58. package/dist/harness/types.d.ts +15 -4
  59. package/dist/harness/types.d.ts.map +1 -1
  60. package/dist/harness/windsurf.d.ts.map +1 -1
  61. package/dist/harness/windsurf.js +2 -2
  62. package/dist/harness/windsurf.js.map +1 -1
  63. package/dist/harness/writeHarnessConfigs.d.ts +41 -0
  64. package/dist/harness/writeHarnessConfigs.d.ts.map +1 -0
  65. package/dist/harness/writeHarnessConfigs.js +69 -0
  66. package/dist/harness/writeHarnessConfigs.js.map +1 -0
  67. package/dist/lib/gitHooks.d.ts.map +1 -1
  68. package/dist/lib/gitHooks.js +10 -7
  69. package/dist/lib/gitHooks.js.map +1 -1
  70. package/dist/lib/localGates.d.ts +62 -0
  71. package/dist/lib/localGates.d.ts.map +1 -0
  72. package/dist/lib/localGates.js +145 -0
  73. package/dist/lib/localGates.js.map +1 -0
  74. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/harness/codex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAcjD,eAAO,MAAM,YAAY,EAAE,eAkD1B,CAAA"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/harness/codex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAA;AActE,eAAO,MAAM,YAAY,EAAE,eAkD1B,CAAA"}
@@ -52,10 +52,11 @@ export const codexAdapter = {
52
52
  catch { /* ignore */ }
53
53
  return false;
54
54
  },
55
- async installGate(workspaceRoot, proxyUrl) {
55
+ async installGate(workspaceRoot, proxyUrl, opts) {
56
56
  // Codex user config — persists proxy routing across sessions without env
57
57
  // sourcing. Merged; a config.toml that does not parse is left alone.
58
- await mergeCodexConfig(join(codexHome(), 'config.toml'), openaiBaseUrl(proxyUrl));
58
+ if (opts?.routing !== false)
59
+ await mergeCodexConfig(join(codexHome(), 'config.toml'), openaiBaseUrl(proxyUrl));
59
60
  // The PreToolUse gate. The routing above governs LLM egress only; the
60
61
  // gate is what refuses tool calls.
61
62
  const creds = await loadCredentials();
@@ -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 +1 @@
1
- {"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/harness/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAYjD,eAAO,MAAM,eAAe,EAAE,eA2B7B,CAAA"}
1
+ {"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/harness/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAA;AAYtE,eAAO,MAAM,eAAe,EAAE,eA6B7B,CAAA"}
@@ -49,7 +49,10 @@ export const continueAdapter = {
49
49
  return false;
50
50
  }
51
51
  },
52
- async installGate(workspaceRoot, proxyUrl) {
52
+ /** Continue has no tool-call hook: its "gate" is the routing, so without it there is nothing to write. */
53
+ async installGate(_workspaceRoot, proxyUrl, opts) {
54
+ if (opts?.routing === false)
55
+ return;
53
56
  await mergeContinueConfig(continuePath('config.yaml'), openaiBaseUrl(proxyUrl));
54
57
  },
55
58
  writeConfig(workspaceRoot, sops, proxyUrl) {
@@ -1 +1 @@
1
- {"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/harness/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;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,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAErE,MAAM,UAAU,GAAG,uCAAuC,CAAA;AAE1D;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,UAAU;IAE1B,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,QAAgB;QACvD,MAAM,mBAAmB,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjF,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,iBAAiB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC,CAAA;IAC3I,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IACpD,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/harness/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;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,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAErE,MAAM,UAAU,GAAG,uCAAuC,CAAA;AAE1D;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,UAAU;IAE1B,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,0GAA0G;IAC1G,KAAK,CAAC,WAAW,CAAC,cAAsB,EAAE,QAAgB,EAAE,IAA0B;QACpF,IAAI,IAAI,EAAE,OAAO,KAAK,KAAK;YAAE,OAAM;QACnC,MAAM,mBAAmB,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjF,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,iBAAiB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC,CAAA;IAC3I,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IACpD,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"dsh.d.ts","sourceRoot":"","sources":["../../src/harness/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAIjD,eAAO,MAAM,UAAU,EAAE,eA4DxB,CAAA"}
1
+ {"version":3,"file":"dsh.d.ts","sourceRoot":"","sources":["../../src/harness/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAA;AAItE,eAAO,MAAM,UAAU,EAAE,eA4DxB,CAAA"}
@@ -68,8 +68,8 @@ export const dshAdapter = {
68
68
  // The plugin registration + egress row in each profile patch is the
69
69
  // entirety of what this harness gets, and it happens for every existing
70
70
  // profile, not one file.
71
- async installGate(workspaceRoot, proxyUrl) {
72
- await writeDshHooks(workspaceRoot, proxyUrl, '');
71
+ async installGate(workspaceRoot, proxyUrl, opts) {
72
+ await writeDshHooks(workspaceRoot, proxyUrl, '', opts?.routing !== false);
73
73
  },
74
74
  writeConfig(workspaceRoot, sops, proxyUrl) {
75
75
  return writeAgentsMd(workspaceRoot, sops, proxyUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"dsh.js","sourceRoot":"","sources":["../../src/harness/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;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,MAAM,uCAAuC,CAAA;AACrF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEtE,MAAM,CAAC,MAAM,UAAU,GAAoB;IACzC,IAAI,EAAE,WAAW,CAAC,gBAAgB;IAClC,cAAc,EAAE,SAAS;IAEzB,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,oEAAoE;IACpE,wEAAwE;IACxE,yBAAyB;IACzB,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB;QACvD,MAAM,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"dsh.js","sourceRoot":"","sources":["../../src/harness/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;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,MAAM,uCAAuC,CAAA;AACrF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEtE,MAAM,CAAC,MAAM,UAAU,GAAoB;IACzC,IAAI,EAAE,WAAW,CAAC,gBAAgB;IAClC,cAAc,EAAE,SAAS;IAEzB,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,oEAAoE;IACpE,wEAAwE;IACxE,yBAAyB;IACzB,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB,EAAE,IAA0B;QACnF,MAAM,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,CAAC,CAAA;IAC3E,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"goose.d.ts","sourceRoot":"","sources":["../../src/harness/goose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,eAAO,MAAM,YAAY,EAAE,eAyB1B,CAAA"}
1
+ {"version":3,"file":"goose.d.ts","sourceRoot":"","sources":["../../src/harness/goose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAA;AAOtE,eAAO,MAAM,YAAY,EAAE,eAyB1B,CAAA"}
@@ -33,8 +33,8 @@ export const gooseAdapter = {
33
33
  }
34
34
  },
35
35
  /** The governance plugin and the config proxy URL (gooseHooks handles both). */
36
- async installGate(_workspaceRoot, proxyUrl) {
37
- await writeGooseHooks(proxyUrl);
36
+ async installGate(_workspaceRoot, proxyUrl, opts) {
37
+ await writeGooseHooks(proxyUrl, undefined, undefined, opts?.routing !== false);
38
38
  },
39
39
  writeConfig(workspaceRoot, sops, proxyUrl) {
40
40
  return writeRulesSectionFile(workspaceRoot, RULES_FILE, sops, proxyUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"goose.js","sourceRoot":"","sources":["../../src/harness/goose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;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,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAEzE,MAAM,UAAU,GAAG,aAAa,CAAA;AAChC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,YAAY,GAAoB;IAC3C,IAAI,EAAE,WAAW,CAAC,KAAK;IACvB,cAAc,EAAE,UAAU;IAE1B,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;YAC1B,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,WAAW,CAAC,cAAsB,EAAE,QAAgB;QACxD,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,qBAAqB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACzE,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IACpD,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"goose.js","sourceRoot":"","sources":["../../src/harness/goose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;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,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAEzE,MAAM,UAAU,GAAG,aAAa,CAAA;AAChC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,YAAY,GAAoB;IAC3C,IAAI,EAAE,WAAW,CAAC,KAAK;IACvB,cAAc,EAAE,UAAU;IAE1B,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;YAC1B,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,WAAW,CAAC,cAAsB,EAAE,QAAgB,EAAE,IAA0B;QACpF,MAAM,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,CAAC,CAAA;IAChF,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,qBAAqB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACzE,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IACpD,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"grok.d.ts","sourceRoot":"","sources":["../../src/harness/grok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAIjD,eAAO,MAAM,WAAW,EAAE,eAmCzB,CAAA"}
1
+ {"version":3,"file":"grok.d.ts","sourceRoot":"","sources":["../../src/harness/grok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAA;AAItE,eAAO,MAAM,WAAW,EAAE,eAmCzB,CAAA"}
@@ -52,8 +52,8 @@ export const grokAdapter = {
52
52
  },
53
53
  /** PreToolUse gate (project + user level) + config.toml model base_url
54
54
  * merge (project + user level). */
55
- async installGate(workspaceRoot, proxyUrl) {
56
- await writeGrokHooks(workspaceRoot, proxyUrl, '');
55
+ async installGate(workspaceRoot, proxyUrl, opts) {
56
+ await writeGrokHooks(workspaceRoot, proxyUrl, '', opts?.routing !== false);
57
57
  },
58
58
  writeConfig(workspaceRoot, sops, proxyUrl) {
59
59
  return writeAgentsMd(workspaceRoot, sops, proxyUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"grok.js","sourceRoot":"","sources":["../../src/harness/grok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;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,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,cAAc,EAAE,SAAS;IAEzB,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,oEAAoE;QACpE,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;YAC1C,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,0EAA0E;QAC1E,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACxF,4DAA4D;QAC5D,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;oBAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;oBAAC,OAAO,IAAI,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxB,OAAO,KAAK,CAAA;IACd,CAAC;IAED;wCACoC;IACpC,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB;QACvD,MAAM,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"grok.js","sourceRoot":"","sources":["../../src/harness/grok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;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,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,cAAc,EAAE,SAAS;IAEzB,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,oEAAoE;QACpE,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;YAC1C,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,0EAA0E;QAC1E,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACxF,4DAA4D;QAC5D,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;oBAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;oBAAC,OAAO,IAAI,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxB,OAAO,KAAK,CAAA;IACd,CAAC;IAED;wCACoC;IACpC,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB,EAAE,IAA0B;QACnF,MAAM,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,CAAC,CAAA;IAC5E,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../src/harness/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,eAAO,MAAM,aAAa,EAAE,eA4B3B,CAAA"}
1
+ {"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../src/harness/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAA;AAOtE,eAAO,MAAM,aAAa,EAAE,eA4B3B,CAAA"}
@@ -38,9 +38,9 @@ export const hermesAdapter = {
38
38
  return false;
39
39
  }
40
40
  },
41
- async installGate(workspaceRoot, proxyUrl) {
41
+ async installGate(workspaceRoot, proxyUrl, opts) {
42
42
  const creds = await loadCredentials();
43
- await writeHermesHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local');
43
+ await writeHermesHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local', opts?.routing !== false);
44
44
  },
45
45
  writeConfig(workspaceRoot, sops, proxyUrl) {
46
46
  return writeAgentsMd(workspaceRoot, sops, proxyUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/harness/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE,WAAW,CAAC,MAAM;IACxB,cAAc,EAAE,SAAS;IAEzB,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACpD,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAA;YACzC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACzB,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB;QACvD,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QACrC,MAAM,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,OAAO,CAAC,CAAA;IAChF,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/harness/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE,WAAW,CAAC,MAAM;IACxB,cAAc,EAAE,SAAS;IAEzB,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACpD,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAA;YACzC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACzB,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB,EAAE,IAA0B;QACnF,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QACrC,MAAM,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,CAAC,CAAA;IACzG,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"openhands.d.ts","sourceRoot":"","sources":["../../src/harness/openhands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAWjD,eAAO,MAAM,gBAAgB,EAAE,eAsD9B,CAAA"}
1
+ {"version":3,"file":"openhands.d.ts","sourceRoot":"","sources":["../../src/harness/openhands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAA;AAWtE,eAAO,MAAM,gBAAgB,EAAE,eAuD9B,CAAA"}
@@ -48,10 +48,12 @@ export const openhandsAdapter = {
48
48
  }
49
49
  },
50
50
  /** The .openhands/hooks.json PreToolUse hook. */
51
- async installGate(workspaceRoot, proxyUrl) {
52
- await writeOpenHandsHooks(workspaceRoot, proxyUrl);
51
+ async installGate(workspaceRoot, proxyUrl, opts) {
52
+ await writeOpenHandsHooks(workspaceRoot, proxyUrl, undefined, opts?.routing !== false);
53
53
  },
54
- async writeConfig(workspaceRoot, sops, proxyUrl) {
54
+ async writeConfig(workspaceRoot, sops, proxyUrl, opts) {
55
+ if (opts?.routing === false)
56
+ return writeOwnRulesFile(workspaceRoot, RULES_FILE, sops, proxyUrl);
55
57
  // Merged into the user's config.toml: [llm] base_url; everything else is
56
58
  // kept. A file that does not parse is left alone.
57
59
  const configPath = join(workspaceRoot, CONFIG_FILE);
@@ -1 +1 @@
1
- {"version":3,"file":"openhands.js","sourceRoot":"","sources":["../../src/harness/openhands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openhands.js","sourceRoot":"","sources":["../../src/harness/openhands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../src/harness/pi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQjD,eAAO,MAAM,SAAS,EAAE,eA4BvB,CAAA"}
1
+ {"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../src/harness/pi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAA;AAQtE,eAAO,MAAM,SAAS,EAAE,eA4BvB,CAAA"}
@@ -38,9 +38,9 @@ export const piAdapter = {
38
38
  return false;
39
39
  }
40
40
  },
41
- async installGate(workspaceRoot, proxyUrl) {
41
+ async installGate(workspaceRoot, proxyUrl, opts) {
42
42
  const creds = await loadCredentials();
43
- await writePiHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local');
43
+ await writePiHooks(workspaceRoot, proxyUrl, creds?.workspaceId || 'local', opts?.routing !== false);
44
44
  },
45
45
  writeConfig(workspaceRoot, sops, proxyUrl) {
46
46
  return writeAgentsMd(workspaceRoot, sops, proxyUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"pi.js","sourceRoot":"","sources":["../../src/harness/pi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,kFAAkF;AAClF,MAAM,WAAW,GAAG,KAAK,CAAA;AAEzB,MAAM,CAAC,MAAM,SAAS,GAAoB;IACxC,IAAI,EAAE,WAAW,CAAC,EAAE;IACpB,cAAc,EAAE,SAAS;IAEzB,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAA;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QAChD,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAA;YACrC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;YACrB,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB;QACvD,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QACrC,MAAM,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,OAAO,CAAC,CAAA;IAC5E,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"pi.js","sourceRoot":"","sources":["../../src/harness/pi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,kFAAkF;AAClF,MAAM,WAAW,GAAG,KAAK,CAAA;AAEzB,MAAM,CAAC,MAAM,SAAS,GAAoB;IACxC,IAAI,EAAE,WAAW,CAAC,EAAE;IACpB,cAAc,EAAE,SAAS;IAEzB,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAA;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QAChD,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAA;YACrC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;YACrB,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB,EAAE,IAA0B;QACnF,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QACrC,MAAM,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,CAAC,CAAA;IACrG,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QACvE,OAAO,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
@@ -8,6 +8,16 @@
8
8
  * @module
9
9
  */
10
10
  import type { HarnessType, SyncSopEntry } from '@intutic/shared-types';
11
+ /** How an adapter writes, beyond what to write. */
12
+ export interface HarnessWriteOptions {
13
+ /**
14
+ * Also point the harness's LLM traffic at the proxy (base URLs, HTTP proxy
15
+ * settings). Default true, which is what `intutic connect` does. False
16
+ * (`intutic gates install` without `--route`) writes the gate and the rules
17
+ * only, so a harness keeps working when no proxy is running.
18
+ */
19
+ routing?: boolean;
20
+ }
11
21
  /** Contract implemented by each harness adapter. */
12
22
  export interface IHarnessAdapter {
13
23
  /** Harness type identifier. */
@@ -27,17 +37,18 @@ export interface IHarnessAdapter {
27
37
  * enforces the built-in protections, the destructive-command tier, group
28
38
  * rules and holds, none of which need a rule set, so `intutic connect` runs
29
39
  * this for every configured harness. Absent when the harness has no gate
30
- * Intutic installs.
40
+ * Intutic installs. With `opts.routing` false, the routing is left out.
31
41
  */
32
- installGate?(workspaceRoot: string, proxyUrl: string): Promise<void>;
42
+ installGate?(workspaceRoot: string, proxyUrl: string, opts?: HarnessWriteOptions): Promise<void>;
33
43
  /**
34
44
  * Write the rule sets into the file the harness reads as standing
35
45
  * instructions — the one `HARNESS_RULES_FILES` names, and no other.
36
46
  * `intutic connect` calls it only when a rule set targets the harness, or
37
47
  * on a forced sync. Returns the absolute path written, or null if nothing
38
- * was.
48
+ * was. With `opts.routing` false, a config that also carries routing (Aider,
49
+ * OpenHands) is written without it.
39
50
  */
40
- writeConfig(workspaceRoot: string, sops: SyncSopEntry[], proxyUrl: string): Promise<string | null>;
51
+ writeConfig(workspaceRoot: string, sops: SyncSopEntry[], proxyUrl: string, opts?: HarnessWriteOptions): Promise<string | null>;
41
52
  /** Read SHA-256 hash of current config file content. Returns null if file doesn't exist. */
42
53
  readCurrentHash(workspaceRoot: string): Promise<string | null>;
43
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEtE,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,+DAA+D;IAC/D,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/C;;;;;;;OAOG;IACH,WAAW,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpE;;;;;;OAMG;IACH,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAClG,4FAA4F;IAC5F,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAC/D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEtE,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,+DAA+D;IAC/D,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/C;;;;;;;OAOG;IACH,WAAW,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG;;;;;;;OAOG;IACH,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC9H,4FAA4F;IAC5F,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAC/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"windsurf.d.ts","sourceRoot":"","sources":["../../src/harness/windsurf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAUjD,eAAO,MAAM,eAAe,EAAE,eA6B7B,CAAA"}
1
+ {"version":3,"file":"windsurf.d.ts","sourceRoot":"","sources":["../../src/harness/windsurf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAA;AAUtE,eAAO,MAAM,eAAe,EAAE,eA6B7B,CAAA"}
@@ -50,10 +50,10 @@ export const windsurfAdapter = {
50
50
  * The proxy serves HTTP CONNECT on the same listener as its API, so the
51
51
  * port is the one `intutic connect` and `start` run it on: the port of
52
52
  * INTUTIC_PROXY_URL, 4000 by default. `PORT` is not read. */
53
- async installGate(workspaceRoot, proxyUrl) {
53
+ async installGate(workspaceRoot, proxyUrl, opts) {
54
54
  const proxyPort = localProxyPort();
55
55
  const creds = await loadCredentials();
56
- await writeWindsurfHooks(workspaceRoot, proxyUrl, proxyPort, creds?.workspaceId || 'local');
56
+ await writeWindsurfHooks(workspaceRoot, proxyUrl, proxyPort, creds?.workspaceId || 'local', opts?.routing !== false);
57
57
  },
58
58
  async writeConfig(workspaceRoot, sops, proxyUrl) {
59
59
  await retireLegacyRulesFile(workspaceRoot, LEGACY_FILE);
@@ -1 +1 @@
1
- {"version":3,"file":"windsurf.js","sourceRoot":"","sources":["../../src/harness/windsurf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;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,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGvE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAE5F,MAAM,WAAW,GAAG,uCAAuC,CAAA;AAC3D,MAAM,WAAW,GAAG,gBAAgB,CAAA;AACpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AAEjE,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,KAAK,MAAM,MAAM,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;YAChD,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,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAA;QAAC,CAAC;IAC7E,CAAC;IAED;;;kEAG8D;IAC9D,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB;QACvD,MAAM,SAAS,GAAG,cAAc,EAAE,CAAA;QAClC,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QACrC,MAAM,kBAAkB,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,IAAI,OAAO,CAAC,CAAA;IAC7F,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QAC7E,MAAM,qBAAqB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACvD,OAAO,iBAAiB,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC,CAAA;IAC5I,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;IACrD,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"windsurf.js","sourceRoot":"","sources":["../../src/harness/windsurf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;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,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGvE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAE5F,MAAM,WAAW,GAAG,uCAAuC,CAAA;AAC3D,MAAM,WAAW,GAAG,gBAAgB,CAAA;AACpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AAEjE,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,KAAK,MAAM,MAAM,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;YAChD,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,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAA;QAAC,CAAC;IAC7E,CAAC;IAED;;;kEAG8D;IAC9D,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,QAAgB,EAAE,IAA0B;QACnF,MAAM,SAAS,GAAG,cAAc,EAAE,CAAA;QAClC,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QACrC,MAAM,kBAAkB,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,IAAI,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,CAAC,CAAA;IACtH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QAC7E,MAAM,qBAAqB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACvD,OAAO,iBAAiB,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC,CAAA;IAC5I,CAAC;IAED,eAAe,CAAC,aAAqB;QACnC,OAAO,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;IACrD,CAAC;CACF,CAAA"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * The harness writer `intutic connect` and `intutic gates install` share:
3
+ * each configured harness's gate, and its rules file.
4
+ *
5
+ * @module
6
+ */
7
+ import type { SyncSopEntry } from '@intutic/shared-types';
8
+ import type { HarnessWriteOptions } from './types.js';
9
+ export interface WriteHarnessConfigsOptions extends HarnessWriteOptions {
10
+ /** Called with each rules file an adapter wrote. */
11
+ onRulesFile?: (path: string) => void;
12
+ }
13
+ /**
14
+ * Applies a synced configuration to each configured harness.
15
+ *
16
+ * The gate is installed whatever rule sets the workspace has: it enforces the
17
+ * built-in protections, the destructive-command tier, group rules and holds,
18
+ * none of which need a rule set. Gating it on rule sets left a workspace with
19
+ * none, or with none targeting a harness, with that harness ungoverned. The
20
+ * rules file is written only when a rule set targets the harness, or on a
21
+ * forced sync.
22
+ *
23
+ * Harnesses that read the same file (Codex, Grok Build, OpenCode, Muse Code
24
+ * and others all read `AGENTS.md`) each get every rule set aimed at any of
25
+ * them that is configured here: one section, the same for every writer, so
26
+ * the last writer no longer replaces the others' rules.
27
+ *
28
+ * Claude Code reads its own `.claude/rules/` file at every launch, and also
29
+ * the workspace's `AGENTS.md` when there is no `CLAUDE.md` on the path (or
30
+ * the user chose `claude-md-and-agents-md`; see claudeAgentsMd.ts). When it
31
+ * does, a rule set aimed at both Claude Code and an `AGENTS.md` reader
32
+ * reaches it through `AGENTS.md`, so its own file leaves that rule set out
33
+ * rather than load it twice.
34
+ *
35
+ * `opts.routing` (default true) also points each harness's LLM traffic at
36
+ * `proxyUrl`; false writes gates and rules only.
37
+ *
38
+ * @returns how many rule sets were written into rules files.
39
+ */
40
+ export declare function writeHarnessConfigs(harnesses: readonly string[], workspaceRoot: string, sops: readonly SyncSopEntry[], proxyUrl: string, force: boolean, opts?: WriteHarnessConfigsOptions): Promise<number>;
41
+ //# sourceMappingURL=writeHarnessConfigs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeHarnessConfigs.d.ts","sourceRoot":"","sources":["../../src/harness/writeHarnessConfigs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,MAAM,WAAW,0BAA2B,SAAQ,mBAAmB;IACrE,oDAAoD;IACpD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,SAAS,YAAY,EAAE,EAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,0BAA+B,GACpC,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * The harness writer `intutic connect` and `intutic gates install` share:
3
+ * each configured harness's gate, and its rules file.
4
+ *
5
+ * @module
6
+ */
7
+ import { HarnessType, rulesFileOf } from '@intutic/shared-types';
8
+ import { claudeCodeReadsAgentsMd } from '@intutic/sync-daemon';
9
+ import { getAdapter } from './detector.js';
10
+ /**
11
+ * Applies a synced configuration to each configured harness.
12
+ *
13
+ * The gate is installed whatever rule sets the workspace has: it enforces the
14
+ * built-in protections, the destructive-command tier, group rules and holds,
15
+ * none of which need a rule set. Gating it on rule sets left a workspace with
16
+ * none, or with none targeting a harness, with that harness ungoverned. The
17
+ * rules file is written only when a rule set targets the harness, or on a
18
+ * forced sync.
19
+ *
20
+ * Harnesses that read the same file (Codex, Grok Build, OpenCode, Muse Code
21
+ * and others all read `AGENTS.md`) each get every rule set aimed at any of
22
+ * them that is configured here: one section, the same for every writer, so
23
+ * the last writer no longer replaces the others' rules.
24
+ *
25
+ * Claude Code reads its own `.claude/rules/` file at every launch, and also
26
+ * the workspace's `AGENTS.md` when there is no `CLAUDE.md` on the path (or
27
+ * the user chose `claude-md-and-agents-md`; see claudeAgentsMd.ts). When it
28
+ * does, a rule set aimed at both Claude Code and an `AGENTS.md` reader
29
+ * reaches it through `AGENTS.md`, so its own file leaves that rule set out
30
+ * rather than load it twice.
31
+ *
32
+ * `opts.routing` (default true) also points each harness's LLM traffic at
33
+ * `proxyUrl`; false writes gates and rules only.
34
+ *
35
+ * @returns how many rule sets were written into rules files.
36
+ */
37
+ export async function writeHarnessConfigs(harnesses, workspaceRoot, sops, proxyUrl, force, opts = {}) {
38
+ const writeOpts = { routing: opts.routing !== false };
39
+ let written = 0;
40
+ const writtenFiles = new Set();
41
+ const agentsMdReaders = harnesses.filter((h) => rulesFileOf(h) === 'AGENTS.md');
42
+ const claudeFromAgentsMd = harnesses.includes(HarnessType.CLAUDE_CODE) && agentsMdReaders.length > 0 && (await claudeCodeReadsAgentsMd(workspaceRoot));
43
+ for (const harnessType of harnesses) {
44
+ const adapter = getAdapter(harnessType);
45
+ if (!adapter)
46
+ continue;
47
+ await adapter.installGate?.(workspaceRoot, proxyUrl, writeOpts);
48
+ const file = rulesFileOf(harnessType);
49
+ const readers = file === null ? [harnessType] : harnesses.filter((h) => rulesFileOf(h) === file);
50
+ const aimed = sops.filter((sop) => sop.harnessTargets.some((t) => readers.includes(t)));
51
+ const viaAgentsMd = harnessType === HarnessType.CLAUDE_CODE && claudeFromAgentsMd;
52
+ const targetSops = viaAgentsMd ? aimed.filter((sop) => !sop.harnessTargets.some((t) => agentsMdReaders.includes(t))) : aimed;
53
+ // Claude Code's own file is rewritten even when every rule set aimed at
54
+ // it now comes through AGENTS.md, so it stops carrying them.
55
+ if (aimed.length === 0 && !force)
56
+ continue;
57
+ const path = await adapter.writeConfig(workspaceRoot, targetSops, proxyUrl, writeOpts);
58
+ if (!path)
59
+ continue;
60
+ opts.onRulesFile?.(path);
61
+ // A shared file counts once, however many of its readers wrote it.
62
+ if (file === null || !writtenFiles.has(file))
63
+ written += targetSops.length;
64
+ if (file !== null)
65
+ writtenFiles.add(file);
66
+ }
67
+ return written;
68
+ }
69
+ //# sourceMappingURL=writeHarnessConfigs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeHarnessConfigs.js","sourceRoot":"","sources":["../../src/harness/writeHarnessConfigs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gitHooks.d.ts","sourceRoot":"","sources":["../../src/lib/gitHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgJH;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkG7E"}
1
+ {"version":3,"file":"gitHooks.d.ts","sourceRoot":"","sources":["../../src/lib/gitHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiJH;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoG7E"}
@@ -10,7 +10,8 @@
10
10
  */
11
11
  import * as node_fs from 'node:fs/promises';
12
12
  import * as node_path from 'node:path';
13
- import { secretPatternAlternation } from '@intutic/shared-types';
13
+ import { CONTROL_PLANE_PRODUCT_RELEASED, secretPatternAlternation } from '@intutic/shared-types';
14
+ import { loadCredentials } from '../config/store.js';
14
15
  import { writeFileAtomic } from '@intutic/sync-daemon/lib/atomicWrite';
15
16
  import { log } from './logger.js';
16
17
  /** Marker line identifying a post-commit/post-checkout hook as ours — the overwrite guard. */
@@ -150,6 +151,11 @@ async function writeHookIfOursOrAbsent(hooksDir, name, content, marker, warnMess
150
151
  */
151
152
  export async function installGitHooks(workspaceRoot) {
152
153
  const gitDir = node_path.join(workspaceRoot, '.git');
154
+ // `intutic sync-context` sends what these hooks record to a control plane.
155
+ // With none, it is not a workaround worth naming.
156
+ const workaround = CONTROL_PLANE_PRODUCT_RELEASED || (await loadCredentials()) !== null
157
+ ? (why) => `${why}; run \`intutic sync-context\` manually as a workaround, or add Intutic's sync call to your own hook.`
158
+ : () => 'It only records context for a control plane, so nothing is lost without one.';
153
159
  try {
154
160
  const stat = await node_fs.stat(gitDir);
155
161
  if (!stat.isDirectory()) {
@@ -171,11 +177,9 @@ export async function installGitHooks(workspaceRoot) {
171
177
  // submodule sync script) was silently replaced on install. Now a foreign
172
178
  // hook is left standing, and the operator is told so.
173
179
  const postCommitInstalled = await writeHookIfOursOrAbsent(hooksDir, 'post-commit', gitContextSyncContent(), GIT_CONTEXT_MARKER, "A post-commit hook already exists and is not Intutic's — left untouched. " +
174
- 'Branch/commit context will not sync automatically on commit; run ' +
175
- '`intutic sync-context` manually as a workaround, or add Intutic\'s sync call to your own hook.');
180
+ workaround('Branch/commit context will not sync automatically on commit'));
176
181
  const postCheckoutInstalled = await writeHookIfOursOrAbsent(hooksDir, 'post-checkout', gitContextSyncContent(), GIT_CONTEXT_MARKER, "A post-checkout hook already exists and is not Intutic's — left untouched. " +
177
- 'Branch/commit context will not sync automatically on checkout; run ' +
178
- '`intutic sync-context` manually as a workaround, or add Intutic\'s sync call to your own hook.');
182
+ workaround('Branch/commit context will not sync automatically on checkout'));
179
183
  // Pre-commit secret scan. Unlike the two tracking hooks above, this one
180
184
  // must NOT clobber blindly: pre-commit is where husky/lint-staged and
181
185
  // hand-written hooks live, and silently replacing a team's hook to
@@ -195,8 +199,7 @@ export async function installGitHooks(workspaceRoot) {
195
199
  // original addition, since changing existing-install behavior needed its
196
200
  // own review).
197
201
  const postMergeInstalled = await writeHookIfOursOrAbsent(hooksDir, 'post-merge', postMergeContent(), POST_MERGE_MARKER, "A post-merge hook already exists and is not Intutic's — left untouched. " +
198
- 'The governed decisions log will still refresh on the daemon\'s normal poll cycle; run ' +
199
- '`intutic sync-context` manually as a workaround if you need it sooner.');
202
+ workaround("The governed decisions log will still refresh on the daemon's normal poll cycle"));
200
203
  // Summary log line, kept honest: only name a hook as installed if it
201
204
  // actually was. A hook skipped because a foreign hook already exists at
202
205
  // that path already got its own `log.warn` above — this line must never
@@ -1 +1 @@
1
- {"version":3,"file":"gitHooks.js","sourceRoot":"","sources":["../../src/lib/gitHooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitHooks.js","sourceRoot":"","sources":["../../src/lib/gitHooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Harness gates and rules files with no control plane: what
3
+ * `intutic gates install` writes, and `intutic start` refreshes.
4
+ *
5
+ * The same writers `intutic connect` runs, fed from this machine only: the
6
+ * local `.intutic/sops` for the rules files and the `review_before:` tokens,
7
+ * and a policy snapshot compiled from no workspace policy
8
+ * (`writeLocalPolicySnapshot`), which still carries the destructive-command
9
+ * and skill tiers. Nothing here fetches, drains or reports; no MCP server is
10
+ * wrapped and no file is made immutable. The harnesses' LLM traffic is
11
+ * pointed at the local proxy only with `routing`, since a harness routed at a
12
+ * proxy that is not running stops working.
13
+ *
14
+ * @module
15
+ */
16
+ import type { GateKind } from '@intutic/shared-types';
17
+ /** The hook events log is rotated past this size; nothing drains it without a control plane. */
18
+ export declare const HOOK_EVENTS_ROTATE_BYTES: number;
19
+ export interface LocalGatesOptions {
20
+ workspaceRoot: string;
21
+ /** The harnesses to install for: recorded ones, less any disconnected. */
22
+ harnesses: readonly string[];
23
+ /** Also point each harness's LLM traffic at the local proxy. */
24
+ routing: boolean;
25
+ /** Compute and report, write nothing. */
26
+ dryRun?: boolean;
27
+ /** Where warnings go. */
28
+ warn?: (line: string) => void;
29
+ }
30
+ export interface LocalGate {
31
+ harness: string;
32
+ kind: GateKind;
33
+ /** The gate file on disk, for a `hook` gate; null when there is none. */
34
+ path: string | null;
35
+ }
36
+ export interface LocalGatesResult {
37
+ /** Files written (on a dry run, the files that would be). */
38
+ files: string[];
39
+ gates: LocalGate[];
40
+ /** The snapshot written; on a dry run, its rule count and no digest. */
41
+ snapshot: {
42
+ digest: string;
43
+ ruleCount: number;
44
+ };
45
+ /** The `review_before:` tokens compiled into refusals. */
46
+ holdTokens: string[];
47
+ /** The proxy the routing names, written or not. */
48
+ proxyUrl: string;
49
+ }
50
+ /**
51
+ * Who wrote the policy snapshot the gates read: `local` (this module, marked
52
+ * `source: local`), `connect` (any other snapshot), or `none`.
53
+ */
54
+ export declare function gatesSource(): Promise<'local' | 'connect' | 'none'>;
55
+ /** Whether the snapshot on this machine is one this module wrote. */
56
+ export declare function localGatesInstalled(): Promise<boolean>;
57
+ /**
58
+ * Writes (or with `dryRun`, reports) the local gates. See the module note for
59
+ * what it does not do.
60
+ */
61
+ export declare function installLocalGates(opts: LocalGatesOptions): Promise<LocalGatesResult>;
62
+ //# sourceMappingURL=localGates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localGates.d.ts","sourceRoot":"","sources":["../../src/lib/localGates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAmBrD,gGAAgG;AAChG,eAAO,MAAM,wBAAwB,QAAmB,CAAA;AAExD,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,0EAA0E;IAC1E,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAA;IAChB,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,yBAAyB;IACzB,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,QAAQ,CAAA;IACd,yEAAyE;IACzE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,wEAAwE;IACxE,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,0DAA0D;IAC1D,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAA;CACjB;AAMD;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,CAYzE;AAED,qEAAqE;AACrE,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE5D;AAyBD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+D1F"}