@harnesskit/collector 0.1.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 +123 -0
- package/dist/cli-lib.d.ts +6 -0
- package/dist/cli-lib.js +232 -0
- package/dist/cli-lib.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -0
- package/dist/hooks/claude-code-transform.d.ts +1 -0
- package/dist/hooks/claude-code-transform.js +361 -0
- package/dist/hooks/claude-code-transform.js.map +1 -0
- package/dist/hooks/claude-code.d.ts +1 -0
- package/dist/hooks/claude-code.js +7 -0
- package/dist/hooks/claude-code.js.map +1 -0
- package/dist/hooks/codex-transform.d.ts +1 -0
- package/dist/hooks/codex-transform.js +239 -0
- package/dist/hooks/codex-transform.js.map +1 -0
- package/dist/hooks/codex.d.ts +1 -0
- package/dist/hooks/codex.js +7 -0
- package/dist/hooks/codex.js.map +1 -0
- package/dist/hooks/opencode-transform.d.ts +1 -0
- package/dist/hooks/opencode-transform.js +198 -0
- package/dist/hooks/opencode-transform.js.map +1 -0
- package/dist/hooks/opencode.d.ts +1 -0
- package/dist/hooks/opencode.js +7 -0
- package/dist/hooks/opencode.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/buffer.d.ts +10 -0
- package/dist/lib/buffer.js +55 -0
- package/dist/lib/buffer.js.map +1 -0
- package/dist/lib/collector.d.ts +31 -0
- package/dist/lib/collector.js +266 -0
- package/dist/lib/collector.js.map +1 -0
- package/dist/lib/config.d.ts +24 -0
- package/dist/lib/config.js +63 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/io.d.ts +2 -0
- package/dist/lib/io.js +34 -0
- package/dist/lib/io.js.map +1 -0
- package/dist/lib/redaction.d.ts +13 -0
- package/dist/lib/redaction.js +131 -0
- package/dist/lib/redaction.js.map +1 -0
- package/package.json +40 -0
package/README.md
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# HarnessKit Collector
|
|
2
|
+
|
|
3
|
+
CLI for forwarding ingestion events to the API.
|
|
4
|
+
|
|
5
|
+
## Quickstart
|
|
6
|
+
|
|
7
|
+
Build the CLI:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm --filter @harnesskit/collector build
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
One-time install (writes `~/.harnesskit/config.json` and enables the OpenCode plugin):
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
curl -sSL http://localhost:3001/install/opencode | bash -s -- \
|
|
17
|
+
--api-key $API_KEY \
|
|
18
|
+
--project-id $PROJECT_ID
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Claude Code install (writes config and adds hooks to `~/.claude/settings.json`):
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
curl -sSL http://localhost:3001/install/claude-code | bash -s -- \
|
|
25
|
+
--api-key $API_KEY \
|
|
26
|
+
--project-id $PROJECT_ID
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Send events (JSON array or NDJSON):
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
cat events.json | pnpm --filter @harnesskit/collector dev -- ingest
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Hook usage (streams JSON array or NDJSON):
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
harnesskit-opencode-hook
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
From this repo without installing a global bin:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pnpm --filter @harnesskit/collector exec harnesskit-opencode-hook
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Environment variables:
|
|
48
|
+
|
|
49
|
+
- `HARNESSKIT_API_URL`
|
|
50
|
+
- `HARNESSKIT_API_KEY`
|
|
51
|
+
- `HARNESSKIT_PROJECT_ID`
|
|
52
|
+
- `HARNESSKIT_TOOL_SOURCE`
|
|
53
|
+
- `HARNESSKIT_VERSION`
|
|
54
|
+
- `HARNESSKIT_BUFFER_PATH`
|
|
55
|
+
- `HARNESSKIT_MAX_RETRIES`
|
|
56
|
+
- `HARNESSKIT_RETRY_BASE_MS`
|
|
57
|
+
- `HARNESSKIT_RETRY_MAX_MS`
|
|
58
|
+
- `HARNESSKIT_REDACT_ALLOWLIST`
|
|
59
|
+
- `HARNESSKIT_REDACT_DENYLIST`
|
|
60
|
+
- `HARNESSKIT_REDACT_KEYS`
|
|
61
|
+
- `HARNESSKIT_REDACT_MAX_STRING`
|
|
62
|
+
- `HARNESSKIT_REDACT_MAX_DEPTH`
|
|
63
|
+
|
|
64
|
+
Config file: `~/.harnesskit/config.json`
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"apiUrl": "http://localhost:3001",
|
|
69
|
+
"apiKey": "...",
|
|
70
|
+
"projectId": "...",
|
|
71
|
+
"toolSource": "claude_code"
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Hook Wrappers
|
|
76
|
+
|
|
77
|
+
The hook entrypoints set `tool_source` when it is missing on events:
|
|
78
|
+
|
|
79
|
+
- `harnesskit-claude-hook`
|
|
80
|
+
- `harnesskit-codex-hook`
|
|
81
|
+
- `harnesskit-opencode-hook`
|
|
82
|
+
|
|
83
|
+
Pipe event JSON into the hook binary and it will forward to the API.
|
|
84
|
+
|
|
85
|
+
OpenCode example (pipe the OpenCode JSON event stream):
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
opencode <your args> | harnesskit-opencode-hook
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## OpenCode plugin (recommended)
|
|
92
|
+
|
|
93
|
+
OpenCode can load an npm plugin that streams events directly to HarnessKit.
|
|
94
|
+
The installer above adds it automatically. To do it manually, add this to your
|
|
95
|
+
OpenCode config (`~/.config/opencode/opencode.json`):
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"$schema": "https://opencode.ai/config.json",
|
|
100
|
+
"plugin": ["@harnesskit/opencode"]
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Make sure `~/.harnesskit/config.json` contains `apiUrl`, `apiKey`, and `projectId`,
|
|
105
|
+
or export `HARNESSKIT_API_URL`, `HARNESSKIT_API_KEY`, and `HARNESSKIT_PROJECT_ID`.
|
|
106
|
+
|
|
107
|
+
## Buffering & Retry
|
|
108
|
+
|
|
109
|
+
When the API is unavailable, batches are buffered to disk and retried on the next run.
|
|
110
|
+
The default buffer file is `~/.harnesskit/queue.ndjson`.
|
|
111
|
+
|
|
112
|
+
## Redaction
|
|
113
|
+
|
|
114
|
+
Client-side redaction applies to action payloads before sending. It can:
|
|
115
|
+
|
|
116
|
+
- Denylist or allowlist file paths
|
|
117
|
+
- Redact values by key names (e.g., secrets/tokens)
|
|
118
|
+
- Truncate long strings and deep payloads
|
|
119
|
+
Print redacted events without sending:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
pnpm --filter @harnesskit/collector dev -- --file events.json --dry-run --print-redacted
|
|
123
|
+
```
|
package/dist/cli-lib.js
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { loadConfig, resolveConfig, writeConfig } from './lib/config.js';
|
|
2
|
+
import { runCollector } from './lib/collector.js';
|
|
3
|
+
import { parseInput, readInput } from './lib/io.js';
|
|
4
|
+
const parseArgs = (argv) => {
|
|
5
|
+
const args = {
|
|
6
|
+
command: argv[0] === 'hook' ? 'hook' : argv[0] === 'init' ? 'init' : 'ingest',
|
|
7
|
+
mode: 'auto',
|
|
8
|
+
batchSize: 50,
|
|
9
|
+
dryRun: false,
|
|
10
|
+
failOnError: false,
|
|
11
|
+
force: false,
|
|
12
|
+
};
|
|
13
|
+
const addList = (existing, value) => {
|
|
14
|
+
if (!value) {
|
|
15
|
+
return existing;
|
|
16
|
+
}
|
|
17
|
+
const items = value
|
|
18
|
+
.split(',')
|
|
19
|
+
.map((item) => item.trim())
|
|
20
|
+
.filter(Boolean);
|
|
21
|
+
return existing ? [...existing, ...items] : items;
|
|
22
|
+
};
|
|
23
|
+
const startIndex = ['hook', 'ingest', 'init'].includes(argv[0] ?? '') ? 1 : 0;
|
|
24
|
+
for (let index = startIndex; index < argv.length; index += 1) {
|
|
25
|
+
const key = argv[index];
|
|
26
|
+
const value = argv[index + 1];
|
|
27
|
+
if (!key || !key.startsWith('--')) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
switch (key) {
|
|
31
|
+
case '--api-url':
|
|
32
|
+
args.apiUrl = value;
|
|
33
|
+
index += 1;
|
|
34
|
+
break;
|
|
35
|
+
case '--api-key':
|
|
36
|
+
args.apiKey = value;
|
|
37
|
+
index += 1;
|
|
38
|
+
break;
|
|
39
|
+
case '--project-id':
|
|
40
|
+
args.projectId = value;
|
|
41
|
+
index += 1;
|
|
42
|
+
break;
|
|
43
|
+
case '--tool-source':
|
|
44
|
+
args.toolSource = value;
|
|
45
|
+
index += 1;
|
|
46
|
+
break;
|
|
47
|
+
case '--version':
|
|
48
|
+
args.version = value;
|
|
49
|
+
index += 1;
|
|
50
|
+
break;
|
|
51
|
+
case '--file':
|
|
52
|
+
args.file = value;
|
|
53
|
+
index += 1;
|
|
54
|
+
break;
|
|
55
|
+
case '--mode':
|
|
56
|
+
args.mode = value ?? 'auto';
|
|
57
|
+
index += 1;
|
|
58
|
+
break;
|
|
59
|
+
case '--batch-size':
|
|
60
|
+
args.batchSize = value ? Number(value) : 50;
|
|
61
|
+
index += 1;
|
|
62
|
+
break;
|
|
63
|
+
case '--buffer-path':
|
|
64
|
+
args.bufferPath = value;
|
|
65
|
+
index += 1;
|
|
66
|
+
break;
|
|
67
|
+
case '--max-retries':
|
|
68
|
+
args.maxRetries = value ? Number(value) : undefined;
|
|
69
|
+
index += 1;
|
|
70
|
+
break;
|
|
71
|
+
case '--retry-base-ms':
|
|
72
|
+
args.retryBaseMs = value ? Number(value) : undefined;
|
|
73
|
+
index += 1;
|
|
74
|
+
break;
|
|
75
|
+
case '--retry-max-ms':
|
|
76
|
+
args.retryMaxMs = value ? Number(value) : undefined;
|
|
77
|
+
index += 1;
|
|
78
|
+
break;
|
|
79
|
+
case '--redact-allowlist':
|
|
80
|
+
args.redactAllowlist = addList(args.redactAllowlist, value);
|
|
81
|
+
index += 1;
|
|
82
|
+
break;
|
|
83
|
+
case '--redact-denylist':
|
|
84
|
+
args.redactDenylist = addList(args.redactDenylist, value);
|
|
85
|
+
index += 1;
|
|
86
|
+
break;
|
|
87
|
+
case '--redact-key':
|
|
88
|
+
args.redactKeys = addList(args.redactKeys, value);
|
|
89
|
+
index += 1;
|
|
90
|
+
break;
|
|
91
|
+
case '--redact-max-string':
|
|
92
|
+
args.redactMaxString = value ? Number(value) : undefined;
|
|
93
|
+
index += 1;
|
|
94
|
+
break;
|
|
95
|
+
case '--redact-max-depth':
|
|
96
|
+
args.redactMaxDepth = value ? Number(value) : undefined;
|
|
97
|
+
index += 1;
|
|
98
|
+
break;
|
|
99
|
+
case '--print-redacted':
|
|
100
|
+
args.printRedacted = true;
|
|
101
|
+
break;
|
|
102
|
+
case '--dry-run':
|
|
103
|
+
args.dryRun = true;
|
|
104
|
+
break;
|
|
105
|
+
case '--fail-on-error':
|
|
106
|
+
args.failOnError = true;
|
|
107
|
+
break;
|
|
108
|
+
case '--force':
|
|
109
|
+
args.force = true;
|
|
110
|
+
break;
|
|
111
|
+
case '--config':
|
|
112
|
+
args.configPath = value;
|
|
113
|
+
index += 1;
|
|
114
|
+
break;
|
|
115
|
+
case '--help':
|
|
116
|
+
printHelp();
|
|
117
|
+
process.exit(0);
|
|
118
|
+
default:
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return args;
|
|
123
|
+
};
|
|
124
|
+
const printHelp = () => {
|
|
125
|
+
console.log(`
|
|
126
|
+
Usage:
|
|
127
|
+
harnesskit-collector ingest [options]
|
|
128
|
+
harnesskit-collector hook [options]
|
|
129
|
+
harnesskit-collector init [options]
|
|
130
|
+
|
|
131
|
+
Options:
|
|
132
|
+
--api-url <url> API base URL
|
|
133
|
+
--api-key <key> API key
|
|
134
|
+
--project-id <id> Project ID (applied if missing on events)
|
|
135
|
+
--tool-source <tool> claude_code | codex | opencode
|
|
136
|
+
--version <v> Event version (default v1)
|
|
137
|
+
--file <path> Read events from file (JSON array or NDJSON)
|
|
138
|
+
--mode <mode> auto | sessions | actions
|
|
139
|
+
--batch-size <n> Batch size (default 50)
|
|
140
|
+
--buffer-path <path> Buffer file path (default ~/.harnesskit/queue.ndjson)
|
|
141
|
+
--max-retries <n> Retry attempts for API calls (default 3)
|
|
142
|
+
--retry-base-ms <n> Base backoff delay in ms (default 500)
|
|
143
|
+
--retry-max-ms <n> Max backoff delay in ms (default 5000)
|
|
144
|
+
--redact-allowlist <pattern[,..]> Allowlist file path patterns
|
|
145
|
+
--redact-denylist <pattern[,..]> Denylist file path patterns
|
|
146
|
+
--redact-key <key[,..]> Keys to redact in payloads
|
|
147
|
+
--redact-max-string <n> Max string length before truncation
|
|
148
|
+
--redact-max-depth <n> Max payload depth before truncation
|
|
149
|
+
--print-redacted Print redacted events to stdout
|
|
150
|
+
--dry-run Validate only, no network calls
|
|
151
|
+
--fail-on-error Exit with code 1 on validation errors
|
|
152
|
+
--config <path> Config file path (default ~/.harnesskit/config.json)
|
|
153
|
+
--force Overwrite config file when using init
|
|
154
|
+
--help Show help
|
|
155
|
+
`);
|
|
156
|
+
};
|
|
157
|
+
export const runCollectorCli = async (defaults) => {
|
|
158
|
+
const args = parseArgs(process.argv.slice(2));
|
|
159
|
+
const config = resolveConfig(await loadConfig(args.configPath));
|
|
160
|
+
if (args.command === 'init') {
|
|
161
|
+
const nextConfig = {
|
|
162
|
+
apiUrl: args.apiUrl ?? config.apiUrl,
|
|
163
|
+
apiKey: args.apiKey ?? config.apiKey,
|
|
164
|
+
projectId: args.projectId ?? config.projectId,
|
|
165
|
+
toolSource: args.toolSource ?? config.toolSource,
|
|
166
|
+
version: args.version ?? config.version,
|
|
167
|
+
bufferPath: args.bufferPath ?? config.bufferPath,
|
|
168
|
+
maxRetries: args.maxRetries ?? config.maxRetries,
|
|
169
|
+
retryBaseMs: args.retryBaseMs ?? config.retryBaseMs,
|
|
170
|
+
retryMaxMs: args.retryMaxMs ?? config.retryMaxMs,
|
|
171
|
+
redactAllowlist: args.redactAllowlist ?? config.redactAllowlist,
|
|
172
|
+
redactDenylist: args.redactDenylist ?? config.redactDenylist,
|
|
173
|
+
redactKeys: args.redactKeys ?? config.redactKeys,
|
|
174
|
+
redactMaxString: args.redactMaxString ?? config.redactMaxString,
|
|
175
|
+
redactMaxDepth: args.redactMaxDepth ?? config.redactMaxDepth,
|
|
176
|
+
};
|
|
177
|
+
if (!nextConfig.apiUrl || !nextConfig.apiKey) {
|
|
178
|
+
throw new Error('Missing apiUrl or apiKey. Provide --api-url and --api-key for init.');
|
|
179
|
+
}
|
|
180
|
+
const savedPath = await writeConfig(nextConfig, args.configPath, { force: args.force });
|
|
181
|
+
console.log(`Config saved to ${savedPath}`);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
const merged = {
|
|
185
|
+
apiUrl: args.apiUrl ?? config.apiUrl ?? defaults?.apiUrl,
|
|
186
|
+
apiKey: args.apiKey ?? config.apiKey ?? defaults?.apiKey,
|
|
187
|
+
projectId: args.projectId ?? config.projectId ?? defaults?.projectId,
|
|
188
|
+
toolSource: args.toolSource ?? config.toolSource ?? defaults?.toolSource,
|
|
189
|
+
version: args.version ?? config.version ?? defaults?.version,
|
|
190
|
+
bufferPath: args.bufferPath ?? config.bufferPath ?? defaults?.bufferPath,
|
|
191
|
+
maxRetries: args.maxRetries ?? config.maxRetries ?? defaults?.maxRetries,
|
|
192
|
+
retryBaseMs: args.retryBaseMs ?? config.retryBaseMs ?? defaults?.retryBaseMs,
|
|
193
|
+
retryMaxMs: args.retryMaxMs ?? config.retryMaxMs ?? defaults?.retryMaxMs,
|
|
194
|
+
redaction: {
|
|
195
|
+
allowlistPaths: args.redactAllowlist ?? config.redactAllowlist,
|
|
196
|
+
denylistPaths: args.redactDenylist ?? config.redactDenylist,
|
|
197
|
+
redactKeys: args.redactKeys ?? config.redactKeys,
|
|
198
|
+
maxStringLength: args.redactMaxString ?? config.redactMaxString,
|
|
199
|
+
maxDepth: args.redactMaxDepth ?? config.redactMaxDepth,
|
|
200
|
+
},
|
|
201
|
+
printRedacted: args.printRedacted ?? defaults?.printRedacted ?? false,
|
|
202
|
+
mode: args.mode ?? defaults?.mode ?? 'auto',
|
|
203
|
+
batchSize: args.batchSize ?? defaults?.batchSize ?? 50,
|
|
204
|
+
dryRun: args.dryRun ?? defaults?.dryRun ?? false,
|
|
205
|
+
failOnError: args.failOnError ?? defaults?.failOnError ?? false,
|
|
206
|
+
};
|
|
207
|
+
const input = await readInput(args.file);
|
|
208
|
+
const events = parseInput(input);
|
|
209
|
+
const transformed = defaults?.transform ? defaults.transform(events) : events;
|
|
210
|
+
const result = await runCollector(transformed, merged);
|
|
211
|
+
if (merged.printRedacted && result.events?.length) {
|
|
212
|
+
result.events.forEach((event) => {
|
|
213
|
+
console.log(JSON.stringify(event));
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
if (result.errors.length) {
|
|
217
|
+
result.errors.forEach((error) => {
|
|
218
|
+
console.error(`[${error.index}] ${error.message}`);
|
|
219
|
+
});
|
|
220
|
+
if (merged.failOnError) {
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
const summary = `accepted=${result.accepted} rejected=${result.rejected}`;
|
|
225
|
+
if (merged.printRedacted) {
|
|
226
|
+
console.error(summary);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
console.log(summary);
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
//# sourceMappingURL=cli-lib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-lib.js","sourceRoot":"","sources":["../src/cli-lib.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/cli.js
ADDED
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAChC,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const transformClaudeCodeEvents: (input: unknown[]) => unknown[];
|