@agentshouse/kit 0.2.1-c1873657edab7 → 0.2.1-c215cacfd4cf4
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 +3 -3
- package/dist/acp.js +57 -6
- package/dist/agents.js +6 -9
- package/dist/authority-main.js +2 -2
- package/dist/bridge.js +1 -1
- package/dist/building.js +46 -0
- package/dist/calls.js +11 -3
- package/dist/clis-main.js +2 -2
- package/dist/clis.js +39 -15
- package/dist/connection.js +20 -29
- package/dist/conversations.js +149 -45
- package/dist/end.js +8 -2
- package/dist/events.js +29 -8
- package/dist/files.js +33 -17
- package/dist/git.js +2 -2
- package/dist/house-cli.js +24 -11
- package/dist/house-main.js +3 -3
- package/dist/instructions.js +4 -4
- package/dist/kit-cli.js +2 -2
- package/dist/kit-main.js +3 -3
- package/dist/login.js +3 -1
- package/dist/mcp.js +2 -0
- package/dist/relay.js +21 -0
- package/dist/resident.js +17 -6
- package/dist/scripts.js +255 -0
- package/dist/sign-in.js +3 -2
- package/dist/silence.js +28 -0
- package/dist/skills.js +38 -12
- package/dist/transcription.js +32 -23
- package/dist/update.js +51 -8
- package/package.json +17 -17
- package/dist/bootstrap.json +0 -24
package/dist/skills.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import { cp, lstat, mkdir, realpath, rm, symlink } from 'node:fs/promises';
|
|
1
|
+
import { cp, lstat, mkdir, realpath, rm, symlink, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { join, relative } from 'node:path';
|
|
4
|
-
import { listSkills } from '@agentshouse/skills';
|
|
4
|
+
import { GUIDE, listSkills } from '@agentshouse/skills';
|
|
5
|
+
import { parse } from 'yaml';
|
|
5
6
|
import { KIT_RELEASE } from './clis.js';
|
|
6
7
|
import { kitHome, readConfiguration, readHome, writeHome } from './home.js';
|
|
7
8
|
const RECORD = 'skill-set.json';
|
|
9
|
+
const ENTRY = 'SKILL.md';
|
|
10
|
+
const FRONTMATTER = /^---\n([\s\S]*?)\n---\n/u;
|
|
11
|
+
const ORIGIN = '<origin>';
|
|
8
12
|
function skillsDirectory() {
|
|
9
13
|
return join(homedir(), '.agents', 'skills');
|
|
10
14
|
}
|
|
@@ -22,9 +26,31 @@ async function present(path) {
|
|
|
22
26
|
throw error;
|
|
23
27
|
}
|
|
24
28
|
}
|
|
25
|
-
|
|
29
|
+
function skillName(text) {
|
|
30
|
+
const front = FRONTMATTER.exec(text);
|
|
31
|
+
const fields = (front === null ? null : parse(front[1]));
|
|
32
|
+
return typeof fields?.name === 'string' && typeof fields.description === 'string' ? fields.name : undefined;
|
|
33
|
+
}
|
|
34
|
+
function skillSet(origin) {
|
|
35
|
+
const upstream = listSkills().map(({ name, directory }) => ({
|
|
36
|
+
name,
|
|
37
|
+
place: (destination) => cp(directory, destination, { recursive: true }),
|
|
38
|
+
}));
|
|
39
|
+
const pages = GUIDE.flatMap(({ text }) => {
|
|
40
|
+
const name = skillName(text);
|
|
41
|
+
if (name === undefined)
|
|
42
|
+
return [];
|
|
43
|
+
const place = async (destination) => {
|
|
44
|
+
await mkdir(destination);
|
|
45
|
+
await writeFile(join(destination, ENTRY), text.replaceAll(ORIGIN, origin));
|
|
46
|
+
};
|
|
47
|
+
return [{ name, place }];
|
|
48
|
+
});
|
|
49
|
+
return [...upstream, ...pages].sort((left, right) => (left.name < right.name ? -1 : 1));
|
|
50
|
+
}
|
|
51
|
+
async function install(origin) {
|
|
26
52
|
const placed = [];
|
|
27
|
-
for (const skill of
|
|
53
|
+
for (const skill of skillSet(origin)) {
|
|
28
54
|
if (!(await present(join(skillsDirectory(), skill.name))) && !(await present(join(claudeDirectory(), skill.name)))) {
|
|
29
55
|
placed.push(skill);
|
|
30
56
|
}
|
|
@@ -35,32 +61,32 @@ async function install() {
|
|
|
35
61
|
await mkdir(claudeDirectory(), { recursive: true });
|
|
36
62
|
const skills = await realpath(skillsDirectory());
|
|
37
63
|
const claude = await realpath(claudeDirectory());
|
|
38
|
-
for (const { name,
|
|
39
|
-
await
|
|
64
|
+
for (const { name, place } of placed) {
|
|
65
|
+
await place(join(skillsDirectory(), name));
|
|
40
66
|
if (claude !== skills)
|
|
41
67
|
await symlink(relative(claude, join(skills, name)), join(claudeDirectory(), name));
|
|
42
68
|
}
|
|
43
|
-
await writeHome(RECORD, { version: KIT_RELEASE, names });
|
|
69
|
+
await writeHome(RECORD, { version: KIT_RELEASE, origin, names });
|
|
44
70
|
}
|
|
45
|
-
export async function placeSkillSet() {
|
|
71
|
+
export async function placeSkillSet(origin) {
|
|
46
72
|
try {
|
|
47
|
-
await replaceSkillSet();
|
|
73
|
+
await replaceSkillSet(origin);
|
|
48
74
|
}
|
|
49
75
|
catch (error) {
|
|
50
76
|
process.stderr.write(`kit: the skills could not be placed: ${error.message}\n`);
|
|
51
77
|
}
|
|
52
78
|
}
|
|
53
|
-
async function replaceSkillSet() {
|
|
79
|
+
async function replaceSkillSet(origin) {
|
|
54
80
|
const accepted = (await readConfiguration()).skills;
|
|
55
81
|
const installed = await readHome(RECORD);
|
|
56
|
-
if (accepted && installed?.version === KIT_RELEASE)
|
|
82
|
+
if (accepted && installed?.version === KIT_RELEASE && installed.origin === origin)
|
|
57
83
|
return;
|
|
58
84
|
for (const name of installed?.names ?? []) {
|
|
59
85
|
await rm(join(claudeDirectory(), name), { recursive: true, force: true });
|
|
60
86
|
await rm(join(skillsDirectory(), name), { recursive: true, force: true });
|
|
61
87
|
}
|
|
62
88
|
if (accepted)
|
|
63
|
-
await install();
|
|
89
|
+
await install(origin);
|
|
64
90
|
else
|
|
65
91
|
await rm(join(kitHome(), RECORD), { force: true });
|
|
66
92
|
}
|
package/dist/transcription.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { createHash } from 'node:crypto';
|
|
2
|
-
import { createReadStream } from 'node:fs';
|
|
3
1
|
import { chmod, mkdir, mkdtemp, readdir, readFile, rename, rm, stat } from 'node:fs/promises';
|
|
4
2
|
import { availableParallelism, tmpdir } from 'node:os';
|
|
5
3
|
import { basename, join } from 'node:path';
|
|
6
|
-
import { pipeline } from 'node:stream/promises';
|
|
7
4
|
import { unlessAborted } from './abort.js';
|
|
5
|
+
import { downloadServed } from './building.js';
|
|
8
6
|
import { failureOf, run } from './clis.js';
|
|
9
7
|
import { downloaded, fetched } from './files.js';
|
|
10
8
|
import { kitHome } from './home.js';
|
|
11
9
|
const RELEASE = 'https://github.com/agentshouse/kit/releases/download/engine-2';
|
|
12
10
|
export const MODEL = {
|
|
13
|
-
|
|
11
|
+
name: 'ggml-parakeet-tdt-0.6b-v3-q4_k.bin',
|
|
12
|
+
from: 'https://huggingface.co/ggml-org/parakeet-GGUF/resolve/35156454d1a39de06863303dd209fd2bed6ee079/ggml-parakeet-tdt-0.6b-v3-q4_k.bin',
|
|
14
13
|
sha256: '8b205b8b39c6535e153de6fb11c51db46125d45c4f16ba496fe41a0fe71b885e',
|
|
14
|
+
bytes: 415_611_879,
|
|
15
15
|
executable: false,
|
|
16
16
|
};
|
|
17
17
|
export const ENGINES = {
|
|
18
18
|
'linux-x64': {
|
|
19
|
-
decoder: {
|
|
20
|
-
engine: {
|
|
19
|
+
decoder: { name: 'ffmpeg-linux-x86_64', from: `${RELEASE}/ffmpeg-linux-x86_64`, sha256: '1f8235d206428305afb89c6e8ab99d100425a0ba61e22bb4c7aff017db8c8de5', bytes: 5_175_832, executable: true },
|
|
20
|
+
engine: { name: 'parakeet-cli-linux-x86_64', from: `${RELEASE}/parakeet-cli-linux-x86_64`, sha256: 'bb2585695992fe1927a33960002cdf51b8a90a96ad65593c3d0a9f1fbc0865c2', bytes: 3_801_616, executable: true },
|
|
21
21
|
},
|
|
22
22
|
'linux-arm64': {
|
|
23
|
-
decoder: {
|
|
24
|
-
engine: {
|
|
23
|
+
decoder: { name: 'ffmpeg-linux-aarch64', from: `${RELEASE}/ffmpeg-linux-aarch64`, sha256: 'a7e08a0fae0179d1078312f6bb13d2a9aa4d4c71a1d82a022953f25dee452f5e', bytes: 4_590_208, executable: true },
|
|
24
|
+
engine: { name: 'parakeet-cli-linux-aarch64', from: `${RELEASE}/parakeet-cli-linux-aarch64`, sha256: 'cbc0bedc8daae97f1ef9dcee4200c06226218e300e0fd62ead1306d22742b7ed', bytes: 3_477_624, executable: true },
|
|
25
25
|
},
|
|
26
26
|
'darwin-arm64': {
|
|
27
|
-
decoder: {
|
|
28
|
-
engine: {
|
|
27
|
+
decoder: { name: 'ffmpeg-darwin-arm64', from: `${RELEASE}/ffmpeg-darwin-arm64`, sha256: '7abe154aaed3d6b49f5167ca7221bb66bed51388925d99a7e4261a41fe52fba6', bytes: 3_696_768, executable: true },
|
|
28
|
+
engine: { name: 'parakeet-cli-darwin-arm64', from: `${RELEASE}/parakeet-cli-darwin-arm64`, sha256: '9a2aafc0922ad7c0b6db6eff1641e96572ba32ac40bf995a1df242ed2febf297', bytes: 1_939_728, executable: true },
|
|
29
29
|
},
|
|
30
30
|
};
|
|
31
31
|
const CHUNK_SECONDS = 20;
|
|
@@ -46,7 +46,7 @@ function installed(artifact) {
|
|
|
46
46
|
return join(directory(), artifact.sha256);
|
|
47
47
|
}
|
|
48
48
|
async function executed(command, args, signal) {
|
|
49
|
-
// A
|
|
49
|
+
// A decode or a transcription runs as long as its audio needs; the setting turning off or the turn's interrupt or end aborts it instead.
|
|
50
50
|
const ran = await run(command, args, 0, false, signal);
|
|
51
51
|
if (ran.status !== 0)
|
|
52
52
|
throw new Error(failureOf(ran, basename(command)));
|
|
@@ -60,11 +60,6 @@ async function threads() {
|
|
|
60
60
|
const allowed = quota === 'max' ? Infinity : Math.ceil(Number(quota) / Number(period));
|
|
61
61
|
return Math.max(1, Math.floor(Math.min(availableParallelism(), allowed) / 2));
|
|
62
62
|
}
|
|
63
|
-
async function sha256(path) {
|
|
64
|
-
const hash = createHash('sha256');
|
|
65
|
-
await pipeline(createReadStream(path), hash);
|
|
66
|
-
return hash.digest('hex');
|
|
67
|
-
}
|
|
68
63
|
function causeOf(error) {
|
|
69
64
|
return error instanceof Error ? error.message : String(error);
|
|
70
65
|
}
|
|
@@ -85,6 +80,25 @@ function ready() {
|
|
|
85
80
|
function pinnedHere() {
|
|
86
81
|
return ENGINES[`${process.platform}-${process.arch}`];
|
|
87
82
|
}
|
|
83
|
+
const DOWNLOADS = 3;
|
|
84
|
+
async function downloadedAgain(artifact, signal) {
|
|
85
|
+
// An artifact arrives at a hundred kilobytes a second or its download ends, so a stalled Building cannot hold the install open.
|
|
86
|
+
const deadlineMs = Math.ceil(artifact.bytes / 100);
|
|
87
|
+
const deadline = AbortSignal.timeout(deadlineMs);
|
|
88
|
+
for (let attempt = 1;; attempt++) {
|
|
89
|
+
try {
|
|
90
|
+
return await downloadServed(artifact.name, artifact.sha256, `${installed(artifact)}.part`, AbortSignal.any([signal, deadline]), artifact.bytes);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (signal.aborted)
|
|
94
|
+
throw error;
|
|
95
|
+
if (deadline.aborted)
|
|
96
|
+
throw new Error(`${artifact.name} did not arrive within ${Math.ceil(deadlineMs / 1000)} seconds`);
|
|
97
|
+
if (attempt === DOWNLOADS)
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
88
102
|
async function install(artifacts, signal) {
|
|
89
103
|
await mkdir(directory(), { recursive: true });
|
|
90
104
|
const pinned = new Set(artifacts.map((artifact) => artifact.sha256));
|
|
@@ -97,13 +111,8 @@ async function install(artifacts, signal) {
|
|
|
97
111
|
if (!(await present(installed(artifact))))
|
|
98
112
|
missing.push(artifact);
|
|
99
113
|
try {
|
|
100
|
-
for (const artifact of missing)
|
|
101
|
-
|
|
102
|
-
// Three retries carry a large download past a dropped connection before the download fails.
|
|
103
|
-
await executed('curl', ['-fsSL', '--retry', '3', '-o', part, artifact.url], signal);
|
|
104
|
-
if ((await sha256(part)) !== artifact.sha256)
|
|
105
|
-
throw new Error(`${artifact.url} does not match its sha256`);
|
|
106
|
-
}
|
|
114
|
+
for (const artifact of missing)
|
|
115
|
+
await downloadedAgain(artifact, signal);
|
|
107
116
|
for (const artifact of missing) {
|
|
108
117
|
if (artifact.executable)
|
|
109
118
|
await chmod(`${installed(artifact)}.part`, 0o755);
|
package/dist/update.js
CHANGED
|
@@ -6,6 +6,13 @@ import { join } from 'node:path';
|
|
|
6
6
|
import { run } from './clis.js';
|
|
7
7
|
import { kitHome, workspaceRoot } from './home.js';
|
|
8
8
|
import { service, throughSudo } from './placement.js';
|
|
9
|
+
import { relayed } from './relay.js';
|
|
10
|
+
const BOOTSTRAP_BYTES = 1_000_000;
|
|
11
|
+
// A bootstrap is at most a million bytes, so two minutes carry it over ten kilobytes a second and no stalled host holds the update queue.
|
|
12
|
+
const BOOTSTRAP_MS = 120_000;
|
|
13
|
+
// A bootstrap's downloads and CLI updates take minutes, so one still running after an hour has hung and is ended before it keeps the Kit offline.
|
|
14
|
+
const RERUN_MS = 60 * 60_000;
|
|
15
|
+
const TIMED_OUT = '124';
|
|
9
16
|
function directory() {
|
|
10
17
|
return join(kitHome(), 'update');
|
|
11
18
|
}
|
|
@@ -31,7 +38,7 @@ function placement() {
|
|
|
31
38
|
return service() === 'user' ? ['--workspace', workspaceRoot()] : ['--linux'];
|
|
32
39
|
}
|
|
33
40
|
function record() {
|
|
34
|
-
return `outcome=$1; shift; bash "$0" "$@"; printf %s "$?" > "$outcome"; ${[...elevated(), 'systemctl', ...manager(), 'start', 'house-kit.service'].join(' ')}`;
|
|
41
|
+
return `outcome=$1; shift; timeout ${RERUN_MS / 1000} bash "$0" "$@"; printf %s "$?" > "$outcome"; ${[...elevated(), 'systemctl', ...manager(), 'start', 'house-kit.service'].join(' ')}`;
|
|
35
42
|
}
|
|
36
43
|
async function pendingCall() {
|
|
37
44
|
try {
|
|
@@ -45,6 +52,8 @@ async function recorded() {
|
|
|
45
52
|
const status = await readFile(outcome(), 'utf8').catch(() => null);
|
|
46
53
|
if (status === null)
|
|
47
54
|
return null;
|
|
55
|
+
if (status.trim() === TIMED_OUT)
|
|
56
|
+
return { refused: `the Kit bootstrap did not finish within ${RERUN_MS / 1000} seconds` };
|
|
48
57
|
return status.trim() === '0' ? {} : { refused: `the Kit bootstrap exited with ${status.trim()}` };
|
|
49
58
|
}
|
|
50
59
|
async function forget(callId) {
|
|
@@ -66,6 +75,17 @@ async function finished(callId) {
|
|
|
66
75
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
67
76
|
}
|
|
68
77
|
}
|
|
78
|
+
async function bounded(body, most) {
|
|
79
|
+
const chunks = [];
|
|
80
|
+
let bytes = 0;
|
|
81
|
+
for await (const chunk of body ?? []) {
|
|
82
|
+
bytes += chunk.length;
|
|
83
|
+
if (bytes > most)
|
|
84
|
+
return null;
|
|
85
|
+
chunks.push(chunk);
|
|
86
|
+
}
|
|
87
|
+
return Buffer.concat(chunks, bytes);
|
|
88
|
+
}
|
|
69
89
|
function rerun(script, callId, flags) {
|
|
70
90
|
return new Promise((resolve) => {
|
|
71
91
|
const [command, ...args] = [
|
|
@@ -94,9 +114,12 @@ function rerun(script, callId, flags) {
|
|
|
94
114
|
}
|
|
95
115
|
export class KitUpdate {
|
|
96
116
|
calls;
|
|
117
|
+
changed;
|
|
118
|
+
waiting = new Map();
|
|
97
119
|
queue = Promise.resolve();
|
|
98
|
-
constructor(calls) {
|
|
120
|
+
constructor(calls, changed) {
|
|
99
121
|
this.calls = calls;
|
|
122
|
+
this.changed = changed;
|
|
100
123
|
}
|
|
101
124
|
async resumed() {
|
|
102
125
|
const callId = await pendingCall();
|
|
@@ -104,8 +127,17 @@ export class KitUpdate {
|
|
|
104
127
|
return;
|
|
105
128
|
await this.enqueue(callId, () => finished(callId));
|
|
106
129
|
}
|
|
107
|
-
|
|
108
|
-
|
|
130
|
+
hold(call) {
|
|
131
|
+
this.waiting.set(call.input_id, call);
|
|
132
|
+
this.changed();
|
|
133
|
+
}
|
|
134
|
+
held() {
|
|
135
|
+
return this.waiting.size > 0;
|
|
136
|
+
}
|
|
137
|
+
apply(resume) {
|
|
138
|
+
const held = [...this.waiting.values()];
|
|
139
|
+
this.waiting.clear();
|
|
140
|
+
void Promise.all(held.map((call) => this.enqueue(call.input_id, () => this.carry(call)))).then(resume);
|
|
109
141
|
}
|
|
110
142
|
enqueue(callId, work) {
|
|
111
143
|
const before = this.queue;
|
|
@@ -119,10 +151,21 @@ export class KitUpdate {
|
|
|
119
151
|
async carry(call) {
|
|
120
152
|
if ((await pendingCall()) === call.input_id)
|
|
121
153
|
return finished(call.input_id);
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
154
|
+
const deadline = AbortSignal.timeout(BOOTSTRAP_MS);
|
|
155
|
+
let script;
|
|
156
|
+
try {
|
|
157
|
+
const answer = await fetch(relayed(call.bootstrap), { signal: deadline });
|
|
158
|
+
if (!answer.ok)
|
|
159
|
+
return { refused: `the Kit bootstrap could not be downloaded: ${answer.status}` };
|
|
160
|
+
script = await bounded(answer.body, BOOTSTRAP_BYTES);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
if (!deadline.aborted)
|
|
164
|
+
throw error;
|
|
165
|
+
return { refused: `the Kit bootstrap did not arrive within ${BOOTSTRAP_MS / 1000} seconds` };
|
|
166
|
+
}
|
|
167
|
+
if (script === null)
|
|
168
|
+
return { refused: `the Kit bootstrap is larger than ${BOOTSTRAP_BYTES} bytes` };
|
|
126
169
|
if (createHash('sha256').update(script).digest('hex') !== call.sha256) {
|
|
127
170
|
return { refused: 'the Kit bootstrap does not match its sha256' };
|
|
128
171
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentshouse/kit",
|
|
3
|
-
"version": "0.2.1-
|
|
3
|
+
"version": "0.2.1-c215cacfd4cf4",
|
|
4
4
|
"description": "Kit connects an Environment to agents.house.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -12,27 +12,27 @@
|
|
|
12
12
|
"kit": "dist/kit-main.js",
|
|
13
13
|
"house": "dist/house-main.js"
|
|
14
14
|
},
|
|
15
|
-
"exports": {
|
|
16
|
-
"./bootstrap": "./dist/bootstrap.json"
|
|
17
|
-
},
|
|
18
15
|
"files": [
|
|
19
16
|
"dist"
|
|
20
17
|
],
|
|
21
18
|
"scripts": {
|
|
22
|
-
"
|
|
19
|
+
"bootstrap-manifest": "node scripts/bootstrap-manifest.mjs",
|
|
20
|
+
"build": "tsc -p tsconfig.build.json",
|
|
23
21
|
"engine": "mkdir -p tmp/engine && docker run --rm -v \"$PWD:/kit\" -w /kit alpine:3.24@sha256:294b683cb724975bec92580e1e685676bd4b50bda910ddb8c51d4cabeaec77e6 sh scripts/engine.sh tmp/engine",
|
|
24
22
|
"follow-skills": "node scripts/follow-skills.mjs",
|
|
23
|
+
"release-files": "node scripts/release-files.mjs",
|
|
25
24
|
"test": "tsc -p tsconfig.json && vitest run"
|
|
26
25
|
},
|
|
27
26
|
"dependencies": {
|
|
28
|
-
"@agentclientprotocol/sdk": "
|
|
29
|
-
"@agentshouse/mdmodel": "0.1.0-
|
|
30
|
-
"@agentshouse/skills": "0.1.0-
|
|
27
|
+
"@agentclientprotocol/sdk": "2.0.1",
|
|
28
|
+
"@agentshouse/mdmodel": "0.1.0-c4f4d37bc9d6a",
|
|
29
|
+
"@agentshouse/skills": "0.1.0-c1884c2b56810",
|
|
30
|
+
"@lydell/node-pty": "1.2.0-beta.15",
|
|
31
31
|
"yaml": "2.9.1"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
|
-
"@agentclientprotocol/claude-agent-acp": "0.
|
|
35
|
-
"@agentclientprotocol/codex-acp": "2.
|
|
34
|
+
"@agentclientprotocol/claude-agent-acp": "0.94.0",
|
|
35
|
+
"@agentclientprotocol/codex-acp": "2.2.2"
|
|
36
36
|
},
|
|
37
37
|
"peerDependenciesMeta": {
|
|
38
38
|
"@agentclientprotocol/claude-agent-acp": {
|
|
@@ -43,26 +43,26 @@
|
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@types/node": "24.
|
|
46
|
+
"@types/node": "24.19.2",
|
|
47
47
|
"@types/ws": "8.18.2",
|
|
48
48
|
"typescript": "7.0.2",
|
|
49
|
-
"vitest": "5.0.
|
|
49
|
+
"vitest": "5.0.5",
|
|
50
50
|
"ws": "8.22.0"
|
|
51
51
|
},
|
|
52
|
-
"packageManager": "npm@11.19.
|
|
52
|
+
"packageManager": "npm@11.19.1",
|
|
53
53
|
"engines": {
|
|
54
|
-
"node": "24.
|
|
55
|
-
"npm": "11.19.
|
|
54
|
+
"node": "24.22.1",
|
|
55
|
+
"npm": "11.19.1"
|
|
56
56
|
},
|
|
57
57
|
"devEngines": {
|
|
58
58
|
"runtime": {
|
|
59
59
|
"name": "node",
|
|
60
|
-
"version": "24.
|
|
60
|
+
"version": "24.22.1",
|
|
61
61
|
"onFail": "error"
|
|
62
62
|
},
|
|
63
63
|
"packageManager": {
|
|
64
64
|
"name": "npm",
|
|
65
|
-
"version": "11.19.
|
|
65
|
+
"version": "11.19.1",
|
|
66
66
|
"onFail": "error"
|
|
67
67
|
}
|
|
68
68
|
}
|
package/dist/bootstrap.json
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 2,
|
|
3
|
-
"version": "0.2.1-c1873657edab7",
|
|
4
|
-
"hosts": {
|
|
5
|
-
"macos": {
|
|
6
|
-
"asset": {
|
|
7
|
-
"name": "connect-linux.sh",
|
|
8
|
-
"url": "https://github.com/agentshouse/kit/releases/download/v0.2.1-c1873657edab7/connect-linux.sh"
|
|
9
|
-
}
|
|
10
|
-
},
|
|
11
|
-
"linux": {
|
|
12
|
-
"asset": {
|
|
13
|
-
"name": "connect-linux.sh",
|
|
14
|
-
"url": "https://github.com/agentshouse/kit/releases/download/v0.2.1-c1873657edab7/connect-linux.sh"
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"windows": {
|
|
18
|
-
"asset": {
|
|
19
|
-
"name": "connect-windows.ps1",
|
|
20
|
-
"url": "https://github.com/agentshouse/kit/releases/download/v0.2.1-c1873657edab7/connect-windows.ps1"
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|