@intutic/cli 2.8.1 → 2.9.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/README.md +9 -5
- package/dist/cli.js +24 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/connect.d.ts +2 -26
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +5 -54
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/disconnect.d.ts +7 -4
- package/dist/commands/disconnect.d.ts.map +1 -1
- package/dist/commands/disconnect.js +28 -15
- package/dist/commands/disconnect.js.map +1 -1
- package/dist/commands/doctor.d.ts +12 -3
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +59 -10
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/gates.d.ts +26 -0
- package/dist/commands/gates.d.ts.map +1 -0
- package/dist/commands/gates.js +121 -0
- package/dist/commands/gates.js.map +1 -0
- package/dist/commands/init.d.ts +6 -3
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +32 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/start.d.ts +10 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +74 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +13 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/harness/aider.d.ts.map +1 -1
- package/dist/harness/aider.js +3 -2
- package/dist/harness/aider.js.map +1 -1
- package/dist/harness/codex.d.ts.map +1 -1
- package/dist/harness/codex.js +3 -2
- package/dist/harness/codex.js.map +1 -1
- package/dist/harness/continue.d.ts.map +1 -1
- package/dist/harness/continue.js +4 -1
- package/dist/harness/continue.js.map +1 -1
- package/dist/harness/dsh.d.ts.map +1 -1
- package/dist/harness/dsh.js +2 -2
- package/dist/harness/dsh.js.map +1 -1
- package/dist/harness/goose.d.ts.map +1 -1
- package/dist/harness/goose.js +2 -2
- package/dist/harness/goose.js.map +1 -1
- package/dist/harness/grok.d.ts.map +1 -1
- package/dist/harness/grok.js +2 -2
- package/dist/harness/grok.js.map +1 -1
- package/dist/harness/hermes.d.ts.map +1 -1
- package/dist/harness/hermes.js +2 -2
- package/dist/harness/hermes.js.map +1 -1
- package/dist/harness/openhands.d.ts.map +1 -1
- package/dist/harness/openhands.js +5 -3
- package/dist/harness/openhands.js.map +1 -1
- package/dist/harness/pi.d.ts.map +1 -1
- package/dist/harness/pi.js +2 -2
- package/dist/harness/pi.js.map +1 -1
- package/dist/harness/types.d.ts +15 -4
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/windsurf.d.ts.map +1 -1
- package/dist/harness/windsurf.js +2 -2
- package/dist/harness/windsurf.js.map +1 -1
- package/dist/harness/writeHarnessConfigs.d.ts +41 -0
- package/dist/harness/writeHarnessConfigs.d.ts.map +1 -0
- package/dist/harness/writeHarnessConfigs.js +69 -0
- package/dist/harness/writeHarnessConfigs.js.map +1 -0
- package/dist/lib/gitHooks.d.ts.map +1 -1
- package/dist/lib/gitHooks.js +10 -7
- package/dist/lib/gitHooks.js.map +1 -1
- package/dist/lib/localGates.d.ts +62 -0
- package/dist/lib/localGates.d.ts.map +1 -0
- package/dist/lib/localGates.js +145 -0
- package/dist/lib/localGates.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,145 @@
|
|
|
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 * as node_fs from 'node:fs/promises';
|
|
17
|
+
import * as node_path from 'node:path';
|
|
18
|
+
import { homedir } from 'node:os';
|
|
19
|
+
import { gateKindForHarness, HarnessType } from '@intutic/shared-types';
|
|
20
|
+
import { buildSnapshotRules, findGateFile, loadLocalSopEntries, localHoldTokensFor, localResolvedPolicy, noteProxyUrl, SNAPSHOT_JSON, SNAPSHOT_RULES, updatePreToolUseHooks, writeLocalPolicySnapshot, writeRuntimeEnv, } from '@intutic/sync-daemon';
|
|
21
|
+
import { getAdapter } from '../harness/detector.js';
|
|
22
|
+
import { writeHarnessConfigs } from '../harness/writeHarnessConfigs.js';
|
|
23
|
+
import { loadCredentials } from '../config/store.js';
|
|
24
|
+
import { localProxyPort } from './localProxy.js';
|
|
25
|
+
/** The hook events log is rotated past this size; nothing drains it without a control plane. */
|
|
26
|
+
export const HOOK_EVENTS_ROTATE_BYTES = 10 * 1024 * 1024;
|
|
27
|
+
function snapshotDir() {
|
|
28
|
+
return node_path.join(homedir(), '.intutic', 'hooks');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Who wrote the policy snapshot the gates read: `local` (this module, marked
|
|
32
|
+
* `source: local`), `connect` (any other snapshot), or `none`.
|
|
33
|
+
*/
|
|
34
|
+
export async function gatesSource() {
|
|
35
|
+
let text;
|
|
36
|
+
try {
|
|
37
|
+
text = await node_fs.readFile(node_path.join(snapshotDir(), SNAPSHOT_JSON), 'utf-8');
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return 'none';
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
return JSON.parse(text).source === 'local' ? 'local' : 'connect';
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return 'connect';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Whether the snapshot on this machine is one this module wrote. */
|
|
50
|
+
export async function localGatesInstalled() {
|
|
51
|
+
return (await gatesSource()) === 'local';
|
|
52
|
+
}
|
|
53
|
+
/** Whether `runtime.env` still holds an API key, from a control plane this machine no longer has a login for. */
|
|
54
|
+
async function staleRuntimeKey(envPath) {
|
|
55
|
+
let text;
|
|
56
|
+
try {
|
|
57
|
+
text = await node_fs.readFile(envPath, 'utf-8');
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return text.split('\n').some((line) => /^INTUTIC_API_KEY=\S/.test(line.trim()));
|
|
63
|
+
}
|
|
64
|
+
/** Keeps one previous log (`.1`) once the live one passes {@link HOOK_EVENTS_ROTATE_BYTES}. */
|
|
65
|
+
async function rotateHookEvents(workspaceRoot, dryRun) {
|
|
66
|
+
const log = node_path.join(workspaceRoot, '.intutic', 'events', 'hook-events.jsonl');
|
|
67
|
+
try {
|
|
68
|
+
if ((await node_fs.stat(log)).size <= HOOK_EVENTS_ROTATE_BYTES)
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
if (!dryRun)
|
|
75
|
+
await node_fs.rename(log, `${log}.1`);
|
|
76
|
+
return `${log}.1`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Writes (or with `dryRun`, reports) the local gates. See the module note for
|
|
80
|
+
* what it does not do.
|
|
81
|
+
*/
|
|
82
|
+
export async function installLocalGates(opts) {
|
|
83
|
+
const root = opts.workspaceRoot;
|
|
84
|
+
const harnesses = [...opts.harnesses];
|
|
85
|
+
const dryRun = Boolean(opts.dryRun);
|
|
86
|
+
const warn = opts.warn ?? (() => undefined);
|
|
87
|
+
const proxyUrl = `http://127.0.0.1:${localProxyPort()}`;
|
|
88
|
+
const home = homedir();
|
|
89
|
+
const files = [];
|
|
90
|
+
// The same reads connect makes: the rules files' SOPs (honouring the
|
|
91
|
+
// session's selection), and every local SOP's review_before: tokens.
|
|
92
|
+
const sops = await loadLocalSopEntries(root, harnesses, {
|
|
93
|
+
onError: (err) => warn(`Could not read every local SOP in .intutic/sops; the rules files are written without the ones that failed: ${err instanceof Error ? err.message : String(err)}`),
|
|
94
|
+
});
|
|
95
|
+
const holdTokens = await localHoldTokensFor(root, [], undefined, harnesses);
|
|
96
|
+
let snapshot;
|
|
97
|
+
if (dryRun) {
|
|
98
|
+
snapshot = { digest: '', ruleCount: buildSnapshotRules(localResolvedPolicy(), holdTokens, 'block').length };
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
snapshot = await writeLocalPolicySnapshot({ localHoldTokens: holdTokens, snapshotDir: snapshotDir() });
|
|
102
|
+
}
|
|
103
|
+
files.push(node_path.join(snapshotDir(), SNAPSHOT_RULES), node_path.join(snapshotDir(), SNAPSHOT_JSON));
|
|
104
|
+
if (dryRun) {
|
|
105
|
+
for (const h of harnesses) {
|
|
106
|
+
const file = getAdapter(h)?.configFileName;
|
|
107
|
+
if (file && sops.some((sop) => sop.harnessTargets.includes(h)))
|
|
108
|
+
files.push(node_path.resolve(root, file));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// disconnect recognises the base URLs it is written into by it.
|
|
113
|
+
if (opts.routing)
|
|
114
|
+
await noteProxyUrl(proxyUrl);
|
|
115
|
+
await writeHarnessConfigs(harnesses, root, sops, proxyUrl, false, {
|
|
116
|
+
routing: opts.routing,
|
|
117
|
+
onRulesFile: (path) => files.push(path),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (harnesses.includes(HarnessType.CLAUDE_CODE)) {
|
|
121
|
+
if (!dryRun)
|
|
122
|
+
await updatePreToolUseHooks(root, [], undefined);
|
|
123
|
+
files.push(node_path.join(root, '.claude', 'settings.json'));
|
|
124
|
+
if (!process.env['VITEST'] && !process.env['INTUTIC_SKIP_GLOBAL_HOOKS'])
|
|
125
|
+
files.push(node_path.join(home, '.claude', 'settings.json'));
|
|
126
|
+
}
|
|
127
|
+
// A key left by an earlier connect makes every gate post its events to that
|
|
128
|
+
// control plane. With no login here, nothing should.
|
|
129
|
+
const runtimeEnv = node_path.join(home, '.intutic', 'env', 'runtime.env');
|
|
130
|
+
if ((await loadCredentials()) === null && (await staleRuntimeKey(runtimeEnv))) {
|
|
131
|
+
if (!dryRun)
|
|
132
|
+
await writeRuntimeEnv({ controlPlaneUrl: '', apiKey: '', workspaceId: '', envPath: runtimeEnv });
|
|
133
|
+
files.push(runtimeEnv);
|
|
134
|
+
}
|
|
135
|
+
const rotated = await rotateHookEvents(root, dryRun);
|
|
136
|
+
if (rotated)
|
|
137
|
+
files.push(rotated);
|
|
138
|
+
const gates = [];
|
|
139
|
+
for (const harness of harnesses) {
|
|
140
|
+
const kind = gateKindForHarness(harness);
|
|
141
|
+
gates.push({ harness, kind, path: kind === 'hook' ? await findGateFile(harness, root, home) : null });
|
|
142
|
+
}
|
|
143
|
+
return { files: [...new Set(files)], gates, snapshot, holdTokens, proxyUrl };
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=localGates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localGates.js","sourceRoot":"","sources":["../../src/lib/localGates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEvE,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,GAChB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,gGAAgG;AAChG,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;AAiCxD,SAAS,WAAW;IAClB,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAA;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAA;IACf,CAAC;IACD,IAAI,CAAC;QACH,OAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAA0B,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,OAAO,CAAC,MAAM,WAAW,EAAE,CAAC,KAAK,OAAO,CAAA;AAC1C,CAAC;AAED,iHAAiH;AACjH,KAAK,UAAU,eAAe,CAAC,OAAe;IAC5C,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACjF,CAAC;AAED,+FAA+F;AAC/F,KAAK,UAAU,gBAAgB,CAAC,aAAqB,EAAE,MAAe;IACpE,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAA;IACpF,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,wBAAwB;YAAE,OAAO,IAAI,CAAA;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,CAAA;IAClD,OAAO,GAAG,GAAG,IAAI,CAAA;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAuB;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAA;IAC/B,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAC3C,MAAM,QAAQ,GAAG,oBAAoB,cAAc,EAAE,EAAE,CAAA;IACvD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,qEAAqE;IACrE,qEAAqE;IACrE,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,SAA0B,EAAE;QACvE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CACf,IAAI,CAAC,8GAA8G,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;KACzK,CAAC,CAAA;IACF,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,SAA0B,CAAC,CAAA;IAE5F,IAAI,QAA+C,CAAA;IACnD,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,mBAAmB,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IAC7G,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,MAAM,wBAAwB,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;IACxG,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC,CAAA;IAEvG,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,cAAc,CAAA;YAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAgB,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAC1H,CAAC;IACH,CAAC;SAAM,CAAC;QACN,gEAAgE;QAChE,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAA;QAC9C,MAAM,mBAAmB,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YAChE,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SACxC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM;YAAE,MAAM,qBAAqB,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;QAC7D,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAA;QAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAA;IACvI,CAAC;IAED,4EAA4E;IAC5E,qDAAqD;IACrD,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;IACzE,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC9E,IAAI,CAAC,MAAM;YAAE,MAAM,eAAe,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;QAC7G,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACpD,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAEhC,MAAM,KAAK,GAAgB,EAAE,CAAA;IAC7B,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAsB,CAAC,CAAA;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACvG,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;AAC9E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intutic/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"description": "Intutic CLI — sync daemon, harness detection, and workspace management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"ioredis": "^5.11.1",
|
|
41
41
|
"picocolors": "^1",
|
|
42
42
|
"yaml": "^2.9.0",
|
|
43
|
-
"@intutic/shared-types": "2.
|
|
44
|
-
"@intutic/
|
|
45
|
-
"@intutic/
|
|
46
|
-
"@intutic/
|
|
43
|
+
"@intutic/shared-types": "2.9.0",
|
|
44
|
+
"@intutic/logger": "2.9.0",
|
|
45
|
+
"@intutic/sync-daemon": "2.9.0",
|
|
46
|
+
"@intutic/id": "2.9.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"typescript": "^5.5",
|