@crosscom/toolkit 0.1.1 → 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/README.md +22 -0
- package/dist/cli.js +105 -0
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +9 -0
- package/dist/client.js +4 -0
- package/dist/client.js.map +1 -1
- package/dist/hooks.d.ts +10 -0
- package/dist/hooks.js +152 -0
- package/dist/hooks.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -65,6 +65,28 @@ terminals with different identities by overriding `CROSSCOM_IDENTITY` per Claude
|
|
|
65
65
|
crosscom whoami
|
|
66
66
|
crosscom send "My /users endpoint returns {id,email,displayName}"
|
|
67
67
|
crosscom inbox # add --wait to long-poll in auto mode
|
|
68
|
+
crosscom attention # read-only peek at what's waiting for this terminal
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Attention hooks (never miss a message)
|
|
72
|
+
|
|
73
|
+
`crosscom setup` (and `crosscom cleanup`) install two Claude Code hooks in
|
|
74
|
+
`~/.claude/settings.json` so a session notices CrossCom traffic on its own —
|
|
75
|
+
no human relay needed:
|
|
76
|
+
|
|
77
|
+
- **Stop** — when the agent tries to go idle while DMs, tracked requests, queued
|
|
78
|
+
work, or mentions are waiting, the hook blocks the stop once and tells it to
|
|
79
|
+
collect them with `crosscom_standby` first.
|
|
80
|
+
- **UserPromptSubmit** — every turn starts with a `[CrossCom] … waiting` note
|
|
81
|
+
when something is pending.
|
|
82
|
+
|
|
83
|
+
Both use the read-only `/agent/attention` peek: nothing is consumed, marked
|
|
84
|
+
seen, or claimed, and unconfigured machines/sessions are skipped silently
|
|
85
|
+
(hooks always fail open). Manage them explicitly with:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
crosscom hooks # install / refresh
|
|
89
|
+
crosscom hooks --remove # uninstall
|
|
68
90
|
```
|
|
69
91
|
|
|
70
92
|
## How a terminal receives messages
|
package/dist/cli.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createInterface } from 'node:readline/promises';
|
|
3
3
|
import { stdin, stdout } from 'node:process';
|
|
4
|
+
import { execSync } from 'node:child_process';
|
|
5
|
+
import { rmSync, existsSync } from 'node:fs';
|
|
6
|
+
import { homedir } from 'node:os';
|
|
7
|
+
import { join } from 'node:path';
|
|
4
8
|
import { CrossComClient } from './client.js';
|
|
5
9
|
import { loadConfig, saveConfig } from './config.js';
|
|
6
10
|
import { runStdioServer } from './server.js';
|
|
11
|
+
import { installHooks, uninstallHooks, runHook } from './hooks.js';
|
|
7
12
|
const DEFAULT_SERVER_URL = 'https://crosscom-api.theradio.in';
|
|
8
13
|
/** Gradient welcome banner (skipped when not a TTY or NO_COLOR is set). */
|
|
9
14
|
function banner() {
|
|
@@ -76,6 +81,12 @@ async function cmdSetup(flags) {
|
|
|
76
81
|
console.log(` Config saved to ${path}`);
|
|
77
82
|
if (res.warning)
|
|
78
83
|
console.log(`\n⚠ ${res.warning}`);
|
|
84
|
+
// Attention hooks: make Claude Code sessions notice waiting CrossCom items
|
|
85
|
+
// on their own. Only relevant on machines that actually run Claude Code.
|
|
86
|
+
if (!flags['no-hooks'] && existsSync(join(homedir(), '.claude'))) {
|
|
87
|
+
if (installHooks())
|
|
88
|
+
console.log('✓ Claude Code attention hooks installed (~/.claude/settings.json)');
|
|
89
|
+
}
|
|
79
90
|
// The setup script registers with Claude Code itself and passes --no-hint.
|
|
80
91
|
if (!flags['no-hint']) {
|
|
81
92
|
console.log('\nNext: add the toolkit to Claude Code:');
|
|
@@ -88,6 +99,67 @@ async function cmdSetup(flags) {
|
|
|
88
99
|
process.exit(1);
|
|
89
100
|
}
|
|
90
101
|
}
|
|
102
|
+
/** Remove legacy installs/registrations and re-register the npx-based MCP entry. */
|
|
103
|
+
async function cmdCleanup() {
|
|
104
|
+
banner();
|
|
105
|
+
const run = (cmd) => {
|
|
106
|
+
try {
|
|
107
|
+
execSync(cmd, { stdio: 'pipe' });
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const has = (bin) => run(`command -v ${bin}`);
|
|
115
|
+
// 1. Legacy tarball install dir
|
|
116
|
+
const lib = join(homedir(), '.crosscom', 'lib');
|
|
117
|
+
if (existsSync(lib)) {
|
|
118
|
+
rmSync(lib, { recursive: true, force: true });
|
|
119
|
+
console.log('✓ removed legacy install at ~/.crosscom/lib');
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.log('· no legacy install dir found');
|
|
123
|
+
}
|
|
124
|
+
// 2. Deduplicate & modernize MCP registrations per agent CLI
|
|
125
|
+
if (has('claude')) {
|
|
126
|
+
for (const scope of ['user', 'local', 'project'])
|
|
127
|
+
run(`claude mcp remove crosscom -s ${scope}`);
|
|
128
|
+
console.log(run('claude mcp add crosscom -s user -- npx -y @crosscom/toolkit serve')
|
|
129
|
+
? '✓ Claude Code re-registered (npx)'
|
|
130
|
+
: '⚠ Claude Code re-registration failed — run: claude mcp add crosscom -s user -- npx -y @crosscom/toolkit serve');
|
|
131
|
+
}
|
|
132
|
+
if (has('codex')) {
|
|
133
|
+
run('codex mcp remove crosscom');
|
|
134
|
+
console.log(run('codex mcp add crosscom --env CROSSCOM_AGENT=codex -- npx -y @crosscom/toolkit serve')
|
|
135
|
+
? '✓ Codex CLI re-registered (npx)'
|
|
136
|
+
: '⚠ Codex re-registration failed');
|
|
137
|
+
}
|
|
138
|
+
if (has('gemini')) {
|
|
139
|
+
run('gemini mcp remove crosscom -s user');
|
|
140
|
+
console.log(run('gemini mcp add crosscom -s user -e CROSSCOM_AGENT=gemini npx -y @crosscom/toolkit serve')
|
|
141
|
+
? '✓ Gemini CLI re-registered (npx)'
|
|
142
|
+
: '⚠ Gemini re-registration failed');
|
|
143
|
+
}
|
|
144
|
+
// 3. Attention hooks — install/refresh (idempotent)
|
|
145
|
+
if (existsSync(join(homedir(), '.claude'))) {
|
|
146
|
+
if (installHooks())
|
|
147
|
+
console.log('✓ Claude Code attention hooks installed/refreshed');
|
|
148
|
+
}
|
|
149
|
+
// 4. Config sanity — keep the key, but flag stale server URLs
|
|
150
|
+
const config = loadConfig();
|
|
151
|
+
if (!config) {
|
|
152
|
+
console.log(`\n⚠ No usable config — run: npx -y @crosscom/toolkit setup`);
|
|
153
|
+
}
|
|
154
|
+
else if (config.url !== DEFAULT_SERVER_URL) {
|
|
155
|
+
console.log(`\n⚠ Config points at ${config.url}`);
|
|
156
|
+
console.log(` If that server is gone, re-run: npx -y @crosscom/toolkit setup --url ${DEFAULT_SERVER_URL}`);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
console.log(`\n✓ Config OK (${config.url}) — key and identity preserved`);
|
|
160
|
+
}
|
|
161
|
+
console.log('\nCleanup complete. Restart your agent sessions to pick up the new registration.');
|
|
162
|
+
}
|
|
91
163
|
function requireClient() {
|
|
92
164
|
const config = loadConfig();
|
|
93
165
|
if (!config) {
|
|
@@ -123,16 +195,41 @@ async function cmdInbox(flags) {
|
|
|
123
195
|
else
|
|
124
196
|
res.messages.forEach((m) => console.log(`[#${m.seq}] ${m.from} (${m.authorType}): ${m.content}`));
|
|
125
197
|
}
|
|
198
|
+
async function cmdAttention() {
|
|
199
|
+
const a = await requireClient().attention();
|
|
200
|
+
if (a.known === false)
|
|
201
|
+
console.log('This terminal is not registered yet — nothing waiting.');
|
|
202
|
+
else if (a.total === 0)
|
|
203
|
+
console.log('Nothing waiting.');
|
|
204
|
+
else
|
|
205
|
+
console.log(`Waiting for you: ${a.summary}`);
|
|
206
|
+
}
|
|
207
|
+
async function cmdHooks(flags) {
|
|
208
|
+
if (flags.remove === 'true') {
|
|
209
|
+
if (uninstallHooks())
|
|
210
|
+
console.log('✓ CrossCom attention hooks removed from ~/.claude/settings.json');
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
if (installHooks()) {
|
|
214
|
+
console.log('✓ CrossCom attention hooks installed in ~/.claude/settings.json');
|
|
215
|
+
console.log(' Stop → blocks going idle while CrossCom items are waiting');
|
|
216
|
+
console.log(' UserPromptSubmit → surfaces waiting items at the start of every turn');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
126
220
|
function usage() {
|
|
127
221
|
banner();
|
|
128
222
|
console.log(`crosscom — connect this terminal to a CrossCom project
|
|
129
223
|
|
|
130
224
|
Usage:
|
|
131
225
|
crosscom setup [--url URL --key KEY --identity NAME] Configure & bind this terminal
|
|
226
|
+
crosscom cleanup Remove legacy installs, re-register MCP via npx
|
|
132
227
|
crosscom serve Run the MCP server (for Claude Code)
|
|
133
228
|
crosscom whoami Show identity, project, and peers
|
|
134
229
|
crosscom send <message> Post a message to the project channel
|
|
135
230
|
crosscom inbox [--wait] Pull new messages
|
|
231
|
+
crosscom attention Peek at what's waiting (read-only)
|
|
232
|
+
crosscom hooks [--remove] Install/remove Claude Code attention hooks
|
|
136
233
|
`);
|
|
137
234
|
}
|
|
138
235
|
async function main() {
|
|
@@ -141,6 +238,8 @@ async function main() {
|
|
|
141
238
|
switch (command) {
|
|
142
239
|
case 'setup':
|
|
143
240
|
return cmdSetup(flags);
|
|
241
|
+
case 'cleanup':
|
|
242
|
+
return cmdCleanup();
|
|
144
243
|
case 'serve':
|
|
145
244
|
case 'mcp':
|
|
146
245
|
return runStdioServer();
|
|
@@ -150,6 +249,12 @@ async function main() {
|
|
|
150
249
|
return cmdSend(rest);
|
|
151
250
|
case 'inbox':
|
|
152
251
|
return cmdInbox(flags);
|
|
252
|
+
case 'attention':
|
|
253
|
+
return cmdAttention();
|
|
254
|
+
case 'hooks':
|
|
255
|
+
return cmdHooks(flags);
|
|
256
|
+
case 'hook':
|
|
257
|
+
return runHook(rest[0]);
|
|
153
258
|
case undefined:
|
|
154
259
|
case 'help':
|
|
155
260
|
case '--help':
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAmC,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -139,6 +139,15 @@ export declare class CrossComClient {
|
|
|
139
139
|
standby(timeoutSeconds?: number): Promise<Attention & {
|
|
140
140
|
timedOut: boolean;
|
|
141
141
|
}>;
|
|
142
|
+
attention(): Promise<{
|
|
143
|
+
total: number;
|
|
144
|
+
dms: number;
|
|
145
|
+
requests: number;
|
|
146
|
+
queuedWork: number;
|
|
147
|
+
mentions: number;
|
|
148
|
+
summary: string;
|
|
149
|
+
known?: boolean;
|
|
150
|
+
}>;
|
|
142
151
|
history(count: number, channel?: string, dm?: string): Promise<{
|
|
143
152
|
messages: InboxMessage[];
|
|
144
153
|
}>;
|
package/dist/client.js
CHANGED
|
@@ -83,6 +83,10 @@ export class CrossComClient {
|
|
|
83
83
|
standby(timeoutSeconds) {
|
|
84
84
|
return this.req(`/agent/standby${timeoutSeconds ? `?timeoutSeconds=${timeoutSeconds}` : ''}`);
|
|
85
85
|
}
|
|
86
|
+
// Read-only peek — never consumes delivery or touches the terminal row.
|
|
87
|
+
attention() {
|
|
88
|
+
return this.req('/agent/attention');
|
|
89
|
+
}
|
|
86
90
|
history(count, channel, dm) {
|
|
87
91
|
return this.req(`/agent/messages?${qs({ history: String(count), channel, dm })}`);
|
|
88
92
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Install (or refresh) the attention hooks in ~/.claude/settings.json. */
|
|
2
|
+
export declare function installHooks(): boolean;
|
|
3
|
+
/** Remove our attention hooks from ~/.claude/settings.json. */
|
|
4
|
+
export declare function uninstallHooks(): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Hook entrypoint (invoked by Claude Code, JSON payload on stdin). Fails OPEN
|
|
7
|
+
* on every path — missing config, dead network, unknown terminal — because a
|
|
8
|
+
* notification helper must never trap or slow the host session.
|
|
9
|
+
*/
|
|
10
|
+
export declare function runHook(kind: string | undefined): Promise<void>;
|
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join, dirname } from 'node:path';
|
|
4
|
+
import { loadConfigRaw, resolveIdentityFor, claudeSessionId } from './config.js';
|
|
5
|
+
/**
|
|
6
|
+
* Claude Code hooks that make a session *notice* CrossCom traffic on its own:
|
|
7
|
+
* - Stop: blocks going idle while DMs / requests / queued work / mentions are
|
|
8
|
+
* waiting, telling the agent to collect them with crosscom_standby first.
|
|
9
|
+
* - UserPromptSubmit: injects a pending-items line so every turn starts aware.
|
|
10
|
+
* Both call the read-only /agent/attention peek — nothing is consumed, so the
|
|
11
|
+
* items are still delivered normally when the agent picks them up.
|
|
12
|
+
*/
|
|
13
|
+
const SETTINGS_PATH = join(homedir(), '.claude', 'settings.json');
|
|
14
|
+
// Our entries are recognized (for idempotent install/remove) by this substring.
|
|
15
|
+
const HOOK_MARKER = '@crosscom/toolkit hook';
|
|
16
|
+
const HOOK_EVENTS = {
|
|
17
|
+
Stop: 'stop',
|
|
18
|
+
UserPromptSubmit: 'prompt',
|
|
19
|
+
};
|
|
20
|
+
function hookCommand(kind) {
|
|
21
|
+
return `npx -y ${HOOK_MARKER} ${kind}`;
|
|
22
|
+
}
|
|
23
|
+
function readSettings() {
|
|
24
|
+
if (!existsSync(SETTINGS_PATH))
|
|
25
|
+
return { settings: {}, corrupt: false };
|
|
26
|
+
try {
|
|
27
|
+
return { settings: JSON.parse(readFileSync(SETTINGS_PATH, 'utf8')), corrupt: false };
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return { settings: {}, corrupt: true };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function stripOurs(entries) {
|
|
34
|
+
return (entries ?? []).filter((e) => !(e.hooks ?? []).some((h) => (h.command ?? '').includes(HOOK_MARKER)));
|
|
35
|
+
}
|
|
36
|
+
/** Install (or refresh) the attention hooks in ~/.claude/settings.json. */
|
|
37
|
+
export function installHooks() {
|
|
38
|
+
const { settings, corrupt } = readSettings();
|
|
39
|
+
if (corrupt) {
|
|
40
|
+
console.error(`⚠ ${SETTINGS_PATH} is not valid JSON — fix it, then re-run \`crosscom hooks\`.`);
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
const hooks = (settings.hooks ?? {});
|
|
44
|
+
for (const [event, kind] of Object.entries(HOOK_EVENTS)) {
|
|
45
|
+
hooks[event] = [
|
|
46
|
+
...stripOurs(hooks[event]),
|
|
47
|
+
{ hooks: [{ type: 'command', command: hookCommand(kind), timeout: 30 }] },
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
settings.hooks = hooks;
|
|
51
|
+
mkdirSync(dirname(SETTINGS_PATH), { recursive: true });
|
|
52
|
+
writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n');
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
/** Remove our attention hooks from ~/.claude/settings.json. */
|
|
56
|
+
export function uninstallHooks() {
|
|
57
|
+
const { settings, corrupt } = readSettings();
|
|
58
|
+
if (corrupt) {
|
|
59
|
+
console.error(`⚠ ${SETTINGS_PATH} is not valid JSON — fix it manually.`);
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
if (!settings.hooks)
|
|
63
|
+
return true;
|
|
64
|
+
const hooks = settings.hooks;
|
|
65
|
+
for (const event of Object.keys(HOOK_EVENTS)) {
|
|
66
|
+
const kept = stripOurs(hooks[event]);
|
|
67
|
+
if (kept.length > 0)
|
|
68
|
+
hooks[event] = kept;
|
|
69
|
+
else
|
|
70
|
+
delete hooks[event];
|
|
71
|
+
}
|
|
72
|
+
if (Object.keys(hooks).length === 0)
|
|
73
|
+
delete settings.hooks;
|
|
74
|
+
writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n');
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
function readStdinToEnd(timeoutMs) {
|
|
78
|
+
return new Promise((resolve) => {
|
|
79
|
+
if (process.stdin.isTTY)
|
|
80
|
+
return resolve('');
|
|
81
|
+
let data = '';
|
|
82
|
+
const timer = setTimeout(() => resolve(data), timeoutMs);
|
|
83
|
+
process.stdin.setEncoding('utf8');
|
|
84
|
+
process.stdin.on('data', (chunk) => (data += chunk));
|
|
85
|
+
process.stdin.on('end', () => {
|
|
86
|
+
clearTimeout(timer);
|
|
87
|
+
resolve(data);
|
|
88
|
+
});
|
|
89
|
+
process.stdin.on('error', () => {
|
|
90
|
+
clearTimeout(timer);
|
|
91
|
+
resolve(data);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Hook entrypoint (invoked by Claude Code, JSON payload on stdin). Fails OPEN
|
|
97
|
+
* on every path — missing config, dead network, unknown terminal — because a
|
|
98
|
+
* notification helper must never trap or slow the host session.
|
|
99
|
+
*/
|
|
100
|
+
export async function runHook(kind) {
|
|
101
|
+
if (kind !== 'stop' && kind !== 'prompt') {
|
|
102
|
+
console.error('Usage: crosscom hook <stop|prompt> (invoked by Claude Code hooks)');
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
let payload = {};
|
|
107
|
+
try {
|
|
108
|
+
payload = JSON.parse(await readStdinToEnd(2000));
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
/* no/invalid stdin — fall back to env */
|
|
112
|
+
}
|
|
113
|
+
// Already continued once because of us — let the session stop this time.
|
|
114
|
+
if (kind === 'stop' && payload.stop_hook_active)
|
|
115
|
+
return;
|
|
116
|
+
const sessionId = payload.session_id || claudeSessionId();
|
|
117
|
+
const cfg = loadConfigRaw();
|
|
118
|
+
if (!cfg.url || !cfg.key || !sessionId)
|
|
119
|
+
return;
|
|
120
|
+
const identity = resolveIdentityFor(sessionId);
|
|
121
|
+
const controller = new AbortController();
|
|
122
|
+
const timer = setTimeout(() => controller.abort(), 4000);
|
|
123
|
+
const res = await fetch(`${cfg.url}/agent/attention`, {
|
|
124
|
+
headers: { 'X-CrossCom-Key': cfg.key, 'X-CrossCom-Terminal': identity },
|
|
125
|
+
signal: controller.signal,
|
|
126
|
+
});
|
|
127
|
+
clearTimeout(timer);
|
|
128
|
+
if (!res.ok)
|
|
129
|
+
return;
|
|
130
|
+
const data = (await res.json());
|
|
131
|
+
if (!data.known || !data.total)
|
|
132
|
+
return;
|
|
133
|
+
if (kind === 'stop') {
|
|
134
|
+
console.log(JSON.stringify({
|
|
135
|
+
decision: 'block',
|
|
136
|
+
reason: `CrossCom: ${data.summary} waiting for this terminal ("${identity}"). Collect them with crosscom_standby, handle each item (answer requests with crosscom_answer, reply to DMs with crosscom_dm), then finish.`,
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
console.log(JSON.stringify({
|
|
141
|
+
hookSpecificOutput: {
|
|
142
|
+
hookEventName: 'UserPromptSubmit',
|
|
143
|
+
additionalContext: `[CrossCom] ${data.summary} waiting for this terminal ("${identity}") — collect with crosscom_standby after handling the user's request.`,
|
|
144
|
+
},
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
/* fail open */
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crosscom/toolkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Connect your AI coding agent (Claude Code, Codex CLI, Gemini CLI, Cursor…) to CrossCom — agents collaborate across machines, humans govern everything.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|