@intutic/cli 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +309 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/benchmark.d.ts +31 -0
- package/dist/commands/benchmark.d.ts.map +1 -0
- package/dist/commands/benchmark.js +211 -0
- package/dist/commands/benchmark.js.map +1 -0
- package/dist/commands/connect.d.ts +8 -6
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +322 -82
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/enterprise-install.d.ts +36 -0
- package/dist/commands/enterprise-install.d.ts.map +1 -0
- package/dist/commands/enterprise-install.js +289 -0
- package/dist/commands/enterprise-install.js.map +1 -0
- package/dist/commands/eval.d.ts +13 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +67 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/exec.d.ts +34 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +114 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/exec.test.d.ts +2 -0
- package/dist/commands/exec.test.d.ts.map +1 -0
- package/dist/commands/exec.test.js +29 -0
- package/dist/commands/exec.test.js.map +1 -0
- package/dist/commands/export.d.ts +21 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +116 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +28 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-daemon.d.ts +61 -0
- package/dist/commands/install-daemon.d.ts.map +1 -0
- package/dist/commands/install-daemon.js +691 -0
- package/dist/commands/install-daemon.js.map +1 -0
- package/dist/commands/install-daemon.test.d.ts +2 -0
- package/dist/commands/install-daemon.test.d.ts.map +1 -0
- package/dist/commands/install-daemon.test.js +93 -0
- package/dist/commands/install-daemon.test.js.map +1 -0
- package/dist/commands/login.js +2 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/mdm.d.ts +23 -0
- package/dist/commands/mdm.d.ts.map +1 -0
- package/dist/commands/mdm.js +134 -0
- package/dist/commands/mdm.js.map +1 -0
- package/dist/commands/sop-audit.d.ts +17 -0
- package/dist/commands/sop-audit.d.ts.map +1 -0
- package/dist/commands/sop-audit.js +136 -0
- package/dist/commands/sop-audit.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +53 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/syncContext.d.ts +18 -0
- package/dist/commands/syncContext.d.ts.map +1 -0
- package/dist/commands/syncContext.js +37 -0
- package/dist/commands/syncContext.js.map +1 -0
- package/dist/commands/traces.d.ts +13 -0
- package/dist/commands/traces.d.ts.map +1 -1
- package/dist/commands/traces.js +104 -10
- package/dist/commands/traces.js.map +1 -1
- package/dist/commands/whoami.js +1 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config/keychain.d.ts +28 -0
- package/dist/config/keychain.d.ts.map +1 -0
- package/dist/config/keychain.js +99 -0
- package/dist/config/keychain.js.map +1 -0
- package/dist/config/store.d.ts +3 -3
- package/dist/config/store.d.ts.map +1 -1
- package/dist/config/store.js +30 -6
- package/dist/config/store.js.map +1 -1
- package/dist/harness/aider.d.ts +4 -3
- package/dist/harness/aider.d.ts.map +1 -1
- package/dist/harness/aider.js +13 -27
- package/dist/harness/aider.js.map +1 -1
- package/dist/harness/claudeDesktop.d.ts +18 -0
- package/dist/harness/claudeDesktop.d.ts.map +1 -0
- package/dist/harness/claudeDesktop.js +69 -0
- package/dist/harness/claudeDesktop.js.map +1 -0
- package/dist/harness/cline.d.ts +13 -0
- package/dist/harness/cline.d.ts.map +1 -0
- package/dist/harness/cline.js +75 -0
- package/dist/harness/cline.js.map +1 -0
- package/dist/harness/codex.d.ts +4 -4
- package/dist/harness/codex.d.ts.map +1 -1
- package/dist/harness/codex.js +33 -21
- package/dist/harness/codex.js.map +1 -1
- package/dist/harness/continue.d.ts +14 -0
- package/dist/harness/continue.d.ts.map +1 -0
- package/dist/harness/continue.js +97 -0
- package/dist/harness/continue.js.map +1 -0
- package/dist/harness/cursor.d.ts +13 -1
- package/dist/harness/cursor.d.ts.map +1 -1
- package/dist/harness/cursor.js +59 -3
- package/dist/harness/cursor.js.map +1 -1
- package/dist/harness/detector.d.ts +1 -1
- package/dist/harness/detector.d.ts.map +1 -1
- package/dist/harness/detector.js +13 -1
- package/dist/harness/detector.js.map +1 -1
- package/dist/harness/goose.d.ts +13 -0
- package/dist/harness/goose.d.ts.map +1 -0
- package/dist/harness/goose.js +45 -0
- package/dist/harness/goose.js.map +1 -0
- package/dist/harness/n8n.d.ts +8 -4
- package/dist/harness/n8n.d.ts.map +1 -1
- package/dist/harness/n8n.js +108 -13
- package/dist/harness/n8n.js.map +1 -1
- package/dist/harness/openWebUI.d.ts +13 -0
- package/dist/harness/openWebUI.d.ts.map +1 -0
- package/dist/harness/openWebUI.js +25 -0
- package/dist/harness/openWebUI.js.map +1 -0
- package/dist/harness/openhands.d.ts +3 -3
- package/dist/harness/openhands.d.ts.map +1 -1
- package/dist/harness/openhands.js +13 -9
- package/dist/harness/openhands.js.map +1 -1
- package/dist/harness/rooCode.d.ts +14 -0
- package/dist/harness/rooCode.d.ts.map +1 -0
- package/dist/harness/rooCode.js +77 -0
- package/dist/harness/rooCode.js.map +1 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +6 -0
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/vscodeSettingsWriter.d.ts +40 -0
- package/dist/harness/vscodeSettingsWriter.d.ts.map +1 -0
- package/dist/harness/vscodeSettingsWriter.js +116 -0
- package/dist/harness/vscodeSettingsWriter.js.map +1 -0
- package/dist/harness/windsurf.d.ts +13 -1
- package/dist/harness/windsurf.d.ts.map +1 -1
- package/dist/harness/windsurf.js +58 -3
- package/dist/harness/windsurf.js.map +1 -1
- package/dist/lib/api.d.ts +2 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +3 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/envInjector.d.ts +24 -0
- package/dist/lib/envInjector.d.ts.map +1 -0
- package/dist/lib/envInjector.js +146 -0
- package/dist/lib/envInjector.js.map +1 -0
- package/dist/lib/envInjector.test.d.ts +2 -0
- package/dist/lib/envInjector.test.d.ts.map +1 -0
- package/dist/lib/envInjector.test.js +32 -0
- package/dist/lib/envInjector.test.js.map +1 -0
- package/dist/lib/gitHooks.d.ts +19 -0
- package/dist/lib/gitHooks.d.ts.map +1 -0
- package/dist/lib/gitHooks.js +58 -0
- package/dist/lib/gitHooks.js.map +1 -0
- package/dist/lib/onboarding.d.ts +17 -0
- package/dist/lib/onboarding.d.ts.map +1 -0
- package/dist/lib/onboarding.js +164 -0
- package/dist/lib/onboarding.js.map +1 -0
- package/dist/lib/process.d.ts +53 -0
- package/dist/lib/process.d.ts.map +1 -0
- package/dist/lib/process.js +181 -0
- package/dist/lib/process.js.map +1 -0
- package/dist/lib/process.test.d.ts +2 -0
- package/dist/lib/process.test.d.ts.map +1 -0
- package/dist/lib/process.test.js +44 -0
- package/dist/lib/process.test.js.map +1 -0
- package/package.json +39 -17
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Harness detector — auto-detect which AI harnesses are present.
|
|
3
3
|
*
|
|
4
|
-
* Instantiates all
|
|
4
|
+
* Instantiates all 14 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;
|
|
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;AAiBjD,uCAAuC;AACvC,eAAO,MAAM,YAAY,EAAE,eAAe,EAezC,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"}
|
package/dist/harness/detector.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Harness detector — auto-detect which AI harnesses are present.
|
|
3
3
|
*
|
|
4
|
-
* Instantiates all
|
|
4
|
+
* Instantiates all 14 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
|
|
@@ -16,6 +16,12 @@ import { aiderAdapter } from './aider.js';
|
|
|
16
16
|
import { openhandsAdapter } from './openhands.js';
|
|
17
17
|
import { codexAdapter } from './codex.js';
|
|
18
18
|
import { n8nAdapter } from './n8n.js';
|
|
19
|
+
import { clineAdapter } from './cline.js';
|
|
20
|
+
import { rooCodeAdapter } from './rooCode.js';
|
|
21
|
+
import { continueAdapter } from './continue.js';
|
|
22
|
+
import { claudeDesktopAdapter } from './claudeDesktop.js';
|
|
23
|
+
import { gooseAdapter } from './goose.js';
|
|
24
|
+
import { openWebUIAdapter } from './openWebUI.js';
|
|
19
25
|
import { join } from 'node:path';
|
|
20
26
|
/** All registered harness adapters. */
|
|
21
27
|
export const ALL_ADAPTERS = [
|
|
@@ -27,6 +33,12 @@ export const ALL_ADAPTERS = [
|
|
|
27
33
|
openhandsAdapter,
|
|
28
34
|
codexAdapter,
|
|
29
35
|
n8nAdapter,
|
|
36
|
+
clineAdapter,
|
|
37
|
+
rooCodeAdapter,
|
|
38
|
+
continueAdapter,
|
|
39
|
+
claudeDesktopAdapter,
|
|
40
|
+
gooseAdapter,
|
|
41
|
+
openWebUIAdapter,
|
|
30
42
|
];
|
|
31
43
|
/**
|
|
32
44
|
* Detect which harnesses are present in a workspace.
|
|
@@ -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,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;
|
|
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,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;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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* goose.ts — Goose adapter (full implementation).
|
|
3
|
+
*
|
|
4
|
+
* Detects the Goose CLI agent, writes SOP rules, injects the Intutic
|
|
5
|
+
* governance plugin (PreToolUse hooks + immutable flags), and merges
|
|
6
|
+
* the proxy URL into ~/.config/goose/config.yaml.
|
|
7
|
+
*
|
|
8
|
+
* HLD §3.14 — Harness Onboarding Matrix
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import type { IHarnessAdapter } from './types.js';
|
|
12
|
+
export declare const gooseAdapter: IHarnessAdapter;
|
|
13
|
+
//# sourceMappingURL=goose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goose.d.ts","sourceRoot":"","sources":["../../src/harness/goose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQjD,eAAO,MAAM,YAAY,EAAE,eA0B1B,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* goose.ts — Goose adapter (full implementation).
|
|
3
|
+
*
|
|
4
|
+
* Detects the Goose CLI agent, writes SOP rules, injects the Intutic
|
|
5
|
+
* governance plugin (PreToolUse hooks + immutable flags), and merges
|
|
6
|
+
* the proxy URL into ~/.config/goose/config.yaml.
|
|
7
|
+
*
|
|
8
|
+
* HLD §3.14 — Harness Onboarding Matrix
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { access } from 'node:fs/promises';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { homedir } from 'node:os';
|
|
14
|
+
import { HarnessType } from '@intutic/shared-types';
|
|
15
|
+
import { hashFile } from '../lib/hash.js';
|
|
16
|
+
import { writeGooseHooks } from '@intutic/sync-daemon/harness/gooseHooks';
|
|
17
|
+
const CONFIG_FILE = '.config/goose/config.yaml';
|
|
18
|
+
const GOOSE_CONFIG = join(homedir(), CONFIG_FILE);
|
|
19
|
+
export const gooseAdapter = {
|
|
20
|
+
type: HarnessType.GOOSE,
|
|
21
|
+
configFileName: CONFIG_FILE,
|
|
22
|
+
async detect(_workspaceRoot) {
|
|
23
|
+
try {
|
|
24
|
+
await access(GOOSE_CONFIG);
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
async writeConfig(_workspaceRoot, sops, proxyUrl) {
|
|
32
|
+
// Write governance plugin + config proxy URL (gooseHooks handles both)
|
|
33
|
+
await writeGooseHooks(proxyUrl);
|
|
34
|
+
return GOOSE_CONFIG;
|
|
35
|
+
},
|
|
36
|
+
async readCurrentHash(_workspaceRoot) {
|
|
37
|
+
try {
|
|
38
|
+
return await hashFile(GOOSE_CONFIG);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=goose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goose.js","sourceRoot":"","sources":["../../src/harness/goose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAA4B,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AAEzE,MAAM,WAAW,GAAG,2BAA2B,CAAA;AAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAA;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAoB;IAC3C,IAAI,EAAE,WAAW,CAAC,KAAK;IACvB,cAAc,EAAE,WAAW;IAE3B,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,KAAK,CAAC,WAAW,CAAC,cAAsB,EAAE,IAAoB,EAAE,QAAgB;QAC9E,uEAAuE;QACvE,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;QAC/B,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,cAAsB;QAC1C,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAA;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAA"}
|
package/dist/harness/n8n.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* n8n adapter —
|
|
2
|
+
* n8n adapter — Real-time REST parameter sync.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Interacts with n8n workflow management API (GET/PUT /api/v1/workflows)
|
|
5
|
+
* to inject Intutic proxy URL and SOP governance rules as workflow variables.
|
|
6
|
+
*
|
|
7
|
+
* Supports local n8n instances by falling back to unauthenticated requests
|
|
8
|
+
* if N8N_API_TOKEN is not provided.
|
|
6
9
|
*
|
|
7
|
-
* Tech Debt: TD-037 — n8n API Adapter
|
|
8
10
|
* HLD §3.14 — Harness Onboarding Matrix
|
|
11
|
+
* Tech Debt: TD-037 — n8n API Adapter
|
|
12
|
+
*
|
|
9
13
|
* @module
|
|
10
14
|
*/
|
|
11
15
|
import type { IHarnessAdapter } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n8n.d.ts","sourceRoot":"","sources":["../../src/harness/n8n.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"n8n.d.ts","sourceRoot":"","sources":["../../src/harness/n8n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAkBjD,eAAO,MAAM,UAAU,EAAE,eAuGxB,CAAA"}
|
package/dist/harness/n8n.js
CHANGED
|
@@ -1,30 +1,125 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* n8n adapter —
|
|
2
|
+
* n8n adapter — Real-time REST parameter sync.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Interacts with n8n workflow management API (GET/PUT /api/v1/workflows)
|
|
5
|
+
* to inject Intutic proxy URL and SOP governance rules as workflow variables.
|
|
6
|
+
*
|
|
7
|
+
* Supports local n8n instances by falling back to unauthenticated requests
|
|
8
|
+
* if N8N_API_TOKEN is not provided.
|
|
6
9
|
*
|
|
7
|
-
* Tech Debt: TD-037 — n8n API Adapter
|
|
8
10
|
* HLD §3.14 — Harness Onboarding Matrix
|
|
11
|
+
* Tech Debt: TD-037 — n8n API Adapter
|
|
12
|
+
*
|
|
9
13
|
* @module
|
|
10
14
|
*/
|
|
15
|
+
import { createHash } from 'node:crypto';
|
|
11
16
|
import { HarnessType } from '@intutic/shared-types';
|
|
17
|
+
// Format SOPs for n8n parameters
|
|
18
|
+
function buildSopsMarkdown(sops) {
|
|
19
|
+
if (sops.length === 0)
|
|
20
|
+
return '';
|
|
21
|
+
return sops.map((sop) => `## ${sop.title}\n\n${sop.content}`).join('\n\n---\n\n') + '\n';
|
|
22
|
+
}
|
|
23
|
+
function getHeaders() {
|
|
24
|
+
const headers = {
|
|
25
|
+
'Content-Type': 'application/json',
|
|
26
|
+
};
|
|
27
|
+
if (process.env.N8N_API_TOKEN) {
|
|
28
|
+
headers['X-N8N-API-KEY'] = process.env.N8N_API_TOKEN;
|
|
29
|
+
}
|
|
30
|
+
return headers;
|
|
31
|
+
}
|
|
12
32
|
export const n8nAdapter = {
|
|
13
33
|
type: HarnessType.N8N,
|
|
14
34
|
configFileName: '',
|
|
15
35
|
async detect(_workspaceRoot) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
36
|
+
const n8nUrl = process.env.N8N_URL || 'http://localhost:5678';
|
|
37
|
+
try {
|
|
38
|
+
const res = await fetch(`${n8nUrl}/api/v1/health`, { signal: AbortSignal.timeout(1000) });
|
|
39
|
+
return res.status === 200 || res.status === 401 || res.status === 403;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return !!process.env.N8N_API_TOKEN;
|
|
43
|
+
}
|
|
19
44
|
},
|
|
20
|
-
async writeConfig(_workspaceRoot,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
45
|
+
async writeConfig(_workspaceRoot, sops, proxyUrl) {
|
|
46
|
+
const n8nUrl = process.env.N8N_URL || 'http://localhost:5678';
|
|
47
|
+
const sopsMarkdown = buildSopsMarkdown(sops);
|
|
48
|
+
try {
|
|
49
|
+
// 1. Get list of workflows
|
|
50
|
+
const listRes = await fetch(`${n8nUrl}/api/v1/workflows`, {
|
|
51
|
+
headers: getHeaders(),
|
|
52
|
+
signal: AbortSignal.timeout(5000),
|
|
53
|
+
});
|
|
54
|
+
if (!listRes.ok) {
|
|
55
|
+
throw new Error(`Failed to list workflows: ${listRes.statusText}`);
|
|
56
|
+
}
|
|
57
|
+
const listData = (await listRes.json());
|
|
58
|
+
const workflows = listData.data || [];
|
|
59
|
+
if (workflows.length === 0) {
|
|
60
|
+
return 'n8n:no_workflows';
|
|
61
|
+
}
|
|
62
|
+
// 2. Inject parameters into variables of each workflow
|
|
63
|
+
for (const w of workflows) {
|
|
64
|
+
const detailRes = await fetch(`${n8nUrl}/api/v1/workflows/${w.id}`, {
|
|
65
|
+
headers: getHeaders(),
|
|
66
|
+
signal: AbortSignal.timeout(5000),
|
|
67
|
+
});
|
|
68
|
+
if (!detailRes.ok)
|
|
69
|
+
continue;
|
|
70
|
+
const detail = (await detailRes.json());
|
|
71
|
+
const settings = detail.settings || {};
|
|
72
|
+
const variables = settings.variables || {};
|
|
73
|
+
// Inject Intutic values
|
|
74
|
+
variables.intutic_proxy_url = proxyUrl;
|
|
75
|
+
variables.intutic_governance_rules = sopsMarkdown;
|
|
76
|
+
settings.variables = variables;
|
|
77
|
+
detail.settings = settings;
|
|
78
|
+
// Save updated workflow
|
|
79
|
+
await fetch(`${n8nUrl}/api/v1/workflows/${w.id}`, {
|
|
80
|
+
method: 'PUT',
|
|
81
|
+
headers: getHeaders(),
|
|
82
|
+
body: JSON.stringify(detail),
|
|
83
|
+
signal: AbortSignal.timeout(5000),
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return `n8n:${workflows.length}_workflows`;
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
console.warn(`[n8n-adapter] failed to sync parameters:`, err);
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
24
92
|
},
|
|
25
93
|
async readCurrentHash(_workspaceRoot) {
|
|
26
|
-
|
|
27
|
-
|
|
94
|
+
const n8nUrl = process.env.N8N_URL || 'http://localhost:5678';
|
|
95
|
+
try {
|
|
96
|
+
const listRes = await fetch(`${n8nUrl}/api/v1/workflows`, {
|
|
97
|
+
headers: getHeaders(),
|
|
98
|
+
signal: AbortSignal.timeout(3000),
|
|
99
|
+
});
|
|
100
|
+
if (!listRes.ok)
|
|
101
|
+
return null;
|
|
102
|
+
const listData = (await listRes.json());
|
|
103
|
+
const workflows = listData.data || [];
|
|
104
|
+
if (workflows.length === 0)
|
|
105
|
+
return null;
|
|
106
|
+
// Fetch the first workflow's variables to compute the hash
|
|
107
|
+
const firstId = workflows[0].id;
|
|
108
|
+
const detailRes = await fetch(`${n8nUrl}/api/v1/workflows/${firstId}`, {
|
|
109
|
+
headers: getHeaders(),
|
|
110
|
+
signal: AbortSignal.timeout(3000),
|
|
111
|
+
});
|
|
112
|
+
if (!detailRes.ok)
|
|
113
|
+
return null;
|
|
114
|
+
const detail = (await detailRes.json());
|
|
115
|
+
const rules = detail.settings?.variables?.intutic_governance_rules || '';
|
|
116
|
+
if (!rules)
|
|
117
|
+
return null;
|
|
118
|
+
return createHash('sha256').update(rules, 'utf-8').digest('hex');
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
28
123
|
},
|
|
29
124
|
};
|
|
30
125
|
//# sourceMappingURL=n8n.js.map
|
package/dist/harness/n8n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n8n.js","sourceRoot":"","sources":["../../src/harness/n8n.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"n8n.js","sourceRoot":"","sources":["../../src/harness/n8n.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenWebUI adapter — detection-only stub for the OpenWebUI interface.
|
|
3
|
+
*
|
|
4
|
+
* OpenWebUI is a Docker-based service and cannot be reliably detected
|
|
5
|
+
* via filesystem checks. Detection always returns false; the harness
|
|
6
|
+
* can be manually enabled via CLI flags or org config.
|
|
7
|
+
*
|
|
8
|
+
* HLD §3.14 — Harness Onboarding Matrix
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import type { IHarnessAdapter } from './types.js';
|
|
12
|
+
export declare const openWebUIAdapter: IHarnessAdapter;
|
|
13
|
+
//# sourceMappingURL=openWebUI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openWebUI.d.ts","sourceRoot":"","sources":["../../src/harness/openWebUI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,gBAAgB,EAAE,eAe9B,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenWebUI adapter — detection-only stub for the OpenWebUI interface.
|
|
3
|
+
*
|
|
4
|
+
* OpenWebUI is a Docker-based service and cannot be reliably detected
|
|
5
|
+
* via filesystem checks. Detection always returns false; the harness
|
|
6
|
+
* can be manually enabled via CLI flags or org config.
|
|
7
|
+
*
|
|
8
|
+
* HLD §3.14 — Harness Onboarding Matrix
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { HarnessType } from '@intutic/shared-types';
|
|
12
|
+
export const openWebUIAdapter = {
|
|
13
|
+
type: HarnessType.OPEN_WEBUI,
|
|
14
|
+
configFileName: '',
|
|
15
|
+
async detect(_workspaceRoot) {
|
|
16
|
+
return false;
|
|
17
|
+
},
|
|
18
|
+
async writeConfig() {
|
|
19
|
+
return null;
|
|
20
|
+
},
|
|
21
|
+
async readCurrentHash() {
|
|
22
|
+
return null;
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=openWebUI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openWebUI.js","sourceRoot":"","sources":["../../src/harness/openWebUI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,WAAW,CAAC,UAAU;IAC5B,cAAc,EAAE,EAAE;IAElB,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenHands adapter
|
|
2
|
+
* openhands.ts — OpenHands adapter (full implementation with hooks + llm.base_url).
|
|
3
3
|
*
|
|
4
|
-
* Writes SOP content into
|
|
5
|
-
*
|
|
4
|
+
* Writes SOP content into config.toml, injects PreToolUse hooks via
|
|
5
|
+
* .openhands/hooks.json, and writes llm.base_url into the [llm] section.
|
|
6
6
|
*
|
|
7
7
|
* HLD §3.14 — Harness Onboarding Matrix
|
|
8
8
|
* @module
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openhands.d.ts","sourceRoot":"","sources":["../../src/harness/openhands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"openhands.d.ts","sourceRoot":"","sources":["../../src/harness/openhands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,eAAO,MAAM,gBAAgB,EAAE,eAuD9B,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenHands adapter
|
|
2
|
+
* openhands.ts — OpenHands adapter (full implementation with hooks + llm.base_url).
|
|
3
3
|
*
|
|
4
|
-
* Writes SOP content into
|
|
5
|
-
*
|
|
4
|
+
* Writes SOP content into config.toml, injects PreToolUse hooks via
|
|
5
|
+
* .openhands/hooks.json, and writes llm.base_url into the [llm] section.
|
|
6
6
|
*
|
|
7
7
|
* HLD §3.14 — Harness Onboarding Matrix
|
|
8
8
|
* @module
|
|
@@ -12,6 +12,7 @@ import { access, writeFile, rename, mkdir } from 'node:fs/promises';
|
|
|
12
12
|
import { HarnessType } from '@intutic/shared-types';
|
|
13
13
|
import { hashFile } from '../lib/hash.js';
|
|
14
14
|
import { newIso } from '@intutic/id';
|
|
15
|
+
import { writeOpenHandsHooks } from '@intutic/sync-daemon/harness/openhandsHooks';
|
|
15
16
|
const CONFIG_FILE = 'config.toml';
|
|
16
17
|
export const openhandsAdapter = {
|
|
17
18
|
type: HarnessType.OPENHANDS,
|
|
@@ -26,14 +27,12 @@ export const openhandsAdapter = {
|
|
|
26
27
|
}
|
|
27
28
|
},
|
|
28
29
|
async writeConfig(workspaceRoot, sops, proxyUrl) {
|
|
29
|
-
if (sops.length === 0)
|
|
30
|
-
return null;
|
|
31
30
|
const filePath = join(workspaceRoot, CONFIG_FILE);
|
|
32
31
|
const tmpPath = filePath + '.intutic-tmp';
|
|
33
|
-
const instructions = sops
|
|
34
|
-
.map((sop) => `## ${sop.title}\n\n${sop.content}`)
|
|
35
|
-
.
|
|
36
|
-
// TOML
|
|
32
|
+
const instructions = sops.length > 0
|
|
33
|
+
? sops.map((sop) => `## ${sop.title}\n\n${sop.content}`).join('\n\n---\n\n')
|
|
34
|
+
: '# Intutic governance active — no SOP rules configured yet.';
|
|
35
|
+
// TOML — [intutic] section for SOP text + [llm] for proxy base_url
|
|
37
36
|
const toml = [
|
|
38
37
|
'# Intutic Governance Rules (auto-generated)',
|
|
39
38
|
'# DO NOT EDIT — managed by intutic sync daemon',
|
|
@@ -45,10 +44,15 @@ export const openhandsAdapter = {
|
|
|
45
44
|
instructions,
|
|
46
45
|
'"""',
|
|
47
46
|
'',
|
|
47
|
+
'[llm]',
|
|
48
|
+
`base_url = "${proxyUrl}"`,
|
|
49
|
+
'',
|
|
48
50
|
].join('\n');
|
|
49
51
|
await mkdir(dirname(filePath), { recursive: true });
|
|
50
52
|
await writeFile(tmpPath, toml, 'utf-8');
|
|
51
53
|
await rename(tmpPath, filePath);
|
|
54
|
+
// Inject .openhands/hooks.json PreToolUse hook
|
|
55
|
+
await writeOpenHandsHooks(workspaceRoot, proxyUrl);
|
|
52
56
|
return filePath;
|
|
53
57
|
},
|
|
54
58
|
async readCurrentHash(workspaceRoot) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openhands.js","sourceRoot":"","sources":["../../src/harness/openhands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"openhands.js","sourceRoot":"","sources":["../../src/harness/openhands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AAEjF,MAAM,WAAW,GAAG,aAAa,CAAA;AAEjC,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,WAAW,CAAC,SAAS;IAC3B,cAAc,EAAE,WAAW;IAE3B,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;YAC9C,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,IAAoB,EAAE,QAAgB;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAA;QAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,KAAK,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YAC5E,CAAC,CAAC,4DAA4D,CAAA;QAEhE,mEAAmE;QACnE,MAAM,IAAI,GAAG;YACX,6CAA6C;YAC7C,gDAAgD;YAChD,gBAAgB,MAAM,EAAE,EAAE;YAC1B,EAAE;YACF,WAAW;YACX,gBAAgB,QAAQ,GAAG;YAC3B,oBAAoB;YACpB,YAAY;YACZ,KAAK;YACL,EAAE;YACF,OAAO;YACP,eAAe,QAAQ,GAAG;YAC1B,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEZ,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QACvC,MAAM,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAE/B,+CAA+C;QAC/C,MAAM,mBAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;QAElD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACzC,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rooCode.ts — Roo Code adapter (full implementation).
|
|
3
|
+
*
|
|
4
|
+
* Detects the Roo Code VS Code extension, writes Intutic governance rules
|
|
5
|
+
* as .roorules, and configures the proxy base URL via VS Code settings +
|
|
6
|
+
* .env.intutic sidecar. Roo Code's notification hooks are not yet blocking
|
|
7
|
+
* so we rely on proxy (Vector B) and drift guard (Vector C).
|
|
8
|
+
*
|
|
9
|
+
* HLD §3.14 — Harness Onboarding Matrix
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import type { IHarnessAdapter } from './types.js';
|
|
13
|
+
export declare const rooCodeAdapter: IHarnessAdapter;
|
|
14
|
+
//# sourceMappingURL=rooCode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rooCode.d.ts","sourceRoot":"","sources":["../../src/harness/rooCode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,eAAO,MAAM,cAAc,EAAE,eA6D5B,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rooCode.ts — Roo Code adapter (full implementation).
|
|
3
|
+
*
|
|
4
|
+
* Detects the Roo Code VS Code extension, writes Intutic governance rules
|
|
5
|
+
* as .roorules, and configures the proxy base URL via VS Code settings +
|
|
6
|
+
* .env.intutic sidecar. Roo Code's notification hooks are not yet blocking
|
|
7
|
+
* so we rely on proxy (Vector B) and drift guard (Vector C).
|
|
8
|
+
*
|
|
9
|
+
* HLD §3.14 — Harness Onboarding Matrix
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import { access, readdir, writeFile, rename, mkdir } from 'node:fs/promises';
|
|
13
|
+
import { join, dirname } from 'node:path';
|
|
14
|
+
import { homedir } from 'node:os';
|
|
15
|
+
import { HarnessType } from '@intutic/shared-types';
|
|
16
|
+
import { hashFile } from '../lib/hash.js';
|
|
17
|
+
import { newIso } from '@intutic/id';
|
|
18
|
+
import { injectRooCodeProxySettings } from './vscodeSettingsWriter.js';
|
|
19
|
+
const CONFIG_FILE = '.roorules';
|
|
20
|
+
export const rooCodeAdapter = {
|
|
21
|
+
type: HarnessType.ROO_CODE,
|
|
22
|
+
configFileName: CONFIG_FILE,
|
|
23
|
+
async detect(workspaceRoot) {
|
|
24
|
+
// Check for .roomodes or .roorules in workspace
|
|
25
|
+
for (const marker of ['.roomodes', '.roorules']) {
|
|
26
|
+
try {
|
|
27
|
+
await access(join(workspaceRoot, marker));
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// fall through
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Check for VS Code extension directory
|
|
35
|
+
try {
|
|
36
|
+
const extensionsDir = join(homedir(), '.vscode', 'extensions');
|
|
37
|
+
const entries = await readdir(extensionsDir);
|
|
38
|
+
return entries.some((entry) => entry.startsWith('rooveterinaryinc.roo-cline-'));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
async writeConfig(workspaceRoot, sops, proxyUrl) {
|
|
45
|
+
// 1. Write .roorules governance text
|
|
46
|
+
const filePath = join(workspaceRoot, CONFIG_FILE);
|
|
47
|
+
const instructions = sops.length > 0
|
|
48
|
+
? sops.map((sop) => `## ${sop.title}\n\n${sop.content}`).join('\n\n---\n\n')
|
|
49
|
+
: '# Intutic governance active — no SOP rules configured yet.';
|
|
50
|
+
const content = [
|
|
51
|
+
'# Intutic Governance Rules (auto-generated)',
|
|
52
|
+
'# DO NOT EDIT — managed by intutic sync daemon',
|
|
53
|
+
`# Last sync: ${newIso()}`,
|
|
54
|
+
'# NOTE: Roo Code notification hooks are not blocking.',
|
|
55
|
+
'# Governance is enforced via proxy (Vector B) and drift guard (Vector C).',
|
|
56
|
+
'',
|
|
57
|
+
instructions,
|
|
58
|
+
'',
|
|
59
|
+
].join('\n');
|
|
60
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
61
|
+
const tmp = filePath + '.intutic-tmp';
|
|
62
|
+
await writeFile(tmp, content, 'utf-8');
|
|
63
|
+
await rename(tmp, filePath);
|
|
64
|
+
// 2. Inject proxy URL into VS Code settings + .env.intutic sidecar
|
|
65
|
+
await injectRooCodeProxySettings(workspaceRoot, proxyUrl);
|
|
66
|
+
return filePath;
|
|
67
|
+
},
|
|
68
|
+
async readCurrentHash(workspaceRoot) {
|
|
69
|
+
try {
|
|
70
|
+
return await hashFile(join(workspaceRoot, CONFIG_FILE));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=rooCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rooCode.js","sourceRoot":"","sources":["../../src/harness/rooCode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;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,mDAAmD;IACnD,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;;;OAGG;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;AAED,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;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,mDAAmD;IACnD,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;;;OAGG;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;AAED,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAkB5D,CAAA"}
|
package/dist/harness/types.js
CHANGED
|
@@ -21,5 +21,11 @@ export const HARNESS_CONFIG_FILES = {
|
|
|
21
21
|
'openclaw': '', // Phase 2 — TD-037
|
|
22
22
|
'hermes': '', // Phase 2 — TD-037
|
|
23
23
|
'pi': '', // Phase 2 — TD-037
|
|
24
|
+
'cline': '',
|
|
25
|
+
'roo-code': '',
|
|
26
|
+
'continue': '',
|
|
27
|
+
'claude-desktop': '',
|
|
28
|
+
'goose': '',
|
|
29
|
+
'open-webui': '',
|
|
24
30
|
};
|
|
25
31
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqBH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAgC;IAC/D,QAAQ,EAAE,cAAc;IACxB,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,uBAAuB;IACtC,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,EAAE,EAAE,6CAA6C;IACxD,UAAU,EAAE,EAAE,EAAE,mBAAmB;IACnC,QAAQ,EAAE,EAAE,EAAE,mBAAmB;IACjC,IAAI,EAAE,EAAE,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqBH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAgC;IAC/D,QAAQ,EAAE,cAAc;IACxB,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,uBAAuB;IACtC,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,EAAE,EAAE,6CAA6C;IACxD,UAAU,EAAE,EAAE,EAAE,mBAAmB;IACnC,QAAQ,EAAE,EAAE,EAAE,mBAAmB;IACjC,IAAI,EAAE,EAAE,EAAE,mBAAmB;IAC7B,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,EAAE;IACpB,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,EAAE;CACjB,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vscodeSettingsWriter.ts — VS Code settings.json proxy injection.
|
|
3
|
+
*
|
|
4
|
+
* Shared by the Cline and Roo Code adapters. Merges Intutic proxy
|
|
5
|
+
* API base URL keys into:
|
|
6
|
+
* - macOS: ~/Library/Application Support/Code/User/settings.json
|
|
7
|
+
* - Linux: ~/.config/Code/User/settings.json
|
|
8
|
+
* - Workspace: <workspaceRoot>/.vscode/settings.json
|
|
9
|
+
*
|
|
10
|
+
* Also writes ~/.intutic/.env.intutic with exported env vars for
|
|
11
|
+
* shells that source it before launching VS Code.
|
|
12
|
+
*
|
|
13
|
+
* LLD #14 — Phase 3 cross-harness defence
|
|
14
|
+
* HLD §3.14 — Three-Tier Defense Cascade
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Settings keys injected for each harness.
|
|
20
|
+
* These are checked during drift detection and restored on tamper.
|
|
21
|
+
*/
|
|
22
|
+
export declare const CLINE_PROXY_KEYS: readonly ["cline.apiBase", "cline.openAiBaseUrl"];
|
|
23
|
+
export declare const ROO_CODE_PROXY_KEYS: readonly ["roo-cline.openAiBaseUrl", "roo-cline.apiBase"];
|
|
24
|
+
/**
|
|
25
|
+
* Merge Intutic proxy URL into VS Code user + workspace settings.json
|
|
26
|
+
* for the Cline extension.
|
|
27
|
+
*/
|
|
28
|
+
export declare function injectClineProxySettings(workspaceRoot: string, proxyUrl: string): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Merge Intutic proxy URL into VS Code user + workspace settings.json
|
|
31
|
+
* for the Roo Code extension.
|
|
32
|
+
*/
|
|
33
|
+
export declare function injectRooCodeProxySettings(workspaceRoot: string, proxyUrl: string): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Write (or update) ~/.intutic/.env.intutic with proxy env vars.
|
|
36
|
+
* Users/CI pipelines can `source ~/.intutic/.env.intutic` to get proxy routing
|
|
37
|
+
* for any harness that respects OPENAI_BASE_URL / ANTHROPIC_BASE_URL.
|
|
38
|
+
*/
|
|
39
|
+
export declare function writeEnvSidecar(proxyUrl: string): Promise<void>;
|
|
40
|
+
//# sourceMappingURL=vscodeSettingsWriter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscodeSettingsWriter.d.ts","sourceRoot":"","sources":["../../src/harness/vscodeSettingsWriter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAsBH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,mDAAoD,CAAA;AACjF,eAAO,MAAM,mBAAmB,2DAA4D,CAAA;AAE5F;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBrE"}
|