@h-ear/openclaw 1.0.17 → 1.1.5-dev.202604290216
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/SKILL.md +26 -10
- package/dist/cli.d.ts +10 -12
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +245 -110
- package/dist/cli.js.map +1 -1
- package/dist/commands/classify-batch.d.ts +2 -0
- package/dist/commands/classify-batch.d.ts.map +1 -1
- package/dist/commands/classify-batch.js +4 -0
- package/dist/commands/classify-batch.js.map +1 -1
- package/dist/commands/classify.d.ts +17 -5
- package/dist/commands/classify.d.ts.map +1 -1
- package/dist/commands/classify.js +93 -3
- package/dist/commands/classify.js.map +1 -1
- package/dist/commands/job-events.d.ts +6 -0
- package/dist/commands/job-events.d.ts.map +1 -1
- package/dist/commands/job-events.js +6 -0
- package/dist/commands/job-events.js.map +1 -1
- package/dist/commands/job-report.d.ts +3 -0
- package/dist/commands/job-report.d.ts.map +1 -0
- package/dist/commands/job-report.js +6 -0
- package/dist/commands/job-report.js.map +1 -0
- package/dist/commands/sounds.d.ts +1 -0
- package/dist/commands/sounds.d.ts.map +1 -1
- package/dist/commands/sounds.js +1 -0
- package/dist/commands/sounds.js.map +1 -1
- package/dist/commands/webhooks.d.ts +3 -1
- package/dist/commands/webhooks.d.ts.map +1 -1
- package/dist/commands/webhooks.js +9 -1
- package/dist/commands/webhooks.js.map +1 -1
- package/dist/formatter.d.ts +4 -1
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +35 -11
- package/dist/formatter.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -4
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +67 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +331 -0
- package/dist/manifest.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for the `h-ear` CLI command surface.
|
|
3
|
+
*
|
|
4
|
+
* Each entry binds:
|
|
5
|
+
* - The CLI path the user types (e.g. ["job", "events"])
|
|
6
|
+
* - A schema name from @h-ear/core (Zod shape + description, shared with mcp-server)
|
|
7
|
+
* - A handler that calls the underlying library command
|
|
8
|
+
*
|
|
9
|
+
* Consumed by:
|
|
10
|
+
* - cli.ts → dispatcher, top-level help, per-subcommand help, --list-tools --json
|
|
11
|
+
* - scripts/doc.shared-generate.mjs → bakes the SKILL.md commands table
|
|
12
|
+
*
|
|
13
|
+
* Why this exists: the CLI surface, the SKILL.md the LLM reads, and the JSON
|
|
14
|
+
* the LLM gets from `h-ear --list-tools` MUST agree, or qwen2.5:14b (and any
|
|
15
|
+
* tool-using model) starts inventing flags. By making a single manifest the
|
|
16
|
+
* authority, drift is impossible.
|
|
17
|
+
*/
|
|
18
|
+
import type { HearApiClient } from '@h-ear/core';
|
|
19
|
+
export interface ParsedArgs {
|
|
20
|
+
/** Positional values, indexed by their declared name. */
|
|
21
|
+
positionals: Record<string, string | undefined>;
|
|
22
|
+
/** Flag values, raw strings (numbers parsed in the handler). */
|
|
23
|
+
flags: Record<string, string | undefined>;
|
|
24
|
+
/** Boolean flags that were present. */
|
|
25
|
+
bools: Record<string, boolean>;
|
|
26
|
+
}
|
|
27
|
+
export interface CommandPositional {
|
|
28
|
+
/** Positional name as the user types it: `<jobId>`. */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Schema key this positional binds to (for help text). */
|
|
31
|
+
schemaKey: string;
|
|
32
|
+
/** Whether this positional is required. Defaults to true. */
|
|
33
|
+
required?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface CommandFlag {
|
|
36
|
+
/** Flag name without leading dashes: "limit" → --limit. */
|
|
37
|
+
name: string;
|
|
38
|
+
/** Schema key this flag binds to. */
|
|
39
|
+
schemaKey: string;
|
|
40
|
+
/** Type hint for parsing — string is left as-is, number is parseFloat'd. */
|
|
41
|
+
kind: 'string' | 'number' | 'boolean';
|
|
42
|
+
}
|
|
43
|
+
export interface CommandSpec {
|
|
44
|
+
/** CLI path, e.g. ["jobs"] or ["job", "events"] or ["webhook", "list"]. */
|
|
45
|
+
cliPath: string[];
|
|
46
|
+
/** Key in toolShapes/toolDescriptions in @h-ear/core, e.g. "getJobEvents". */
|
|
47
|
+
schemaName: string;
|
|
48
|
+
/** One-line summary for top-level help. Pulled from schema if omitted. */
|
|
49
|
+
summary: string;
|
|
50
|
+
/** Positional args declared in CLI order. */
|
|
51
|
+
positionals?: CommandPositional[];
|
|
52
|
+
/** Flag args. */
|
|
53
|
+
flags?: CommandFlag[];
|
|
54
|
+
/** Concrete examples — the LLM reads these to learn the syntax. */
|
|
55
|
+
examples: string[];
|
|
56
|
+
/** Calls the underlying library command and returns formatted markdown. */
|
|
57
|
+
handler: (client: HearApiClient, parsed: ParsedArgs) => Promise<string>;
|
|
58
|
+
}
|
|
59
|
+
export declare const COMMANDS: CommandSpec[];
|
|
60
|
+
/** Find the longest-prefix manifest entry matching the user's argv tokens. */
|
|
61
|
+
export declare function findCommand(argv: string[]): {
|
|
62
|
+
spec: CommandSpec;
|
|
63
|
+
remaining: string[];
|
|
64
|
+
} | null;
|
|
65
|
+
/** Render the manifest as MCP-style JSON for `--list-tools --json`. */
|
|
66
|
+
export declare function listToolsJson(): unknown;
|
|
67
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAoBjD,MAAM,WAAW,UAAU;IACvB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAC9B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IACxB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,WAAW;IACxB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,iBAAiB;IACjB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,2EAA2E;IAC3E,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3E;AAuBD,eAAO,MAAM,QAAQ,EAAE,WAAW,EAwPjC,CAAC;AAIF,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAS7F;AAED,uEAAuE;AACvE,wBAAgB,aAAa,IAAI,OAAO,CAyBvC"}
|
package/dist/manifest.js
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for the `h-ear` CLI command surface.
|
|
3
|
+
*
|
|
4
|
+
* Each entry binds:
|
|
5
|
+
* - The CLI path the user types (e.g. ["job", "events"])
|
|
6
|
+
* - A schema name from @h-ear/core (Zod shape + description, shared with mcp-server)
|
|
7
|
+
* - A handler that calls the underlying library command
|
|
8
|
+
*
|
|
9
|
+
* Consumed by:
|
|
10
|
+
* - cli.ts → dispatcher, top-level help, per-subcommand help, --list-tools --json
|
|
11
|
+
* - scripts/doc.shared-generate.mjs → bakes the SKILL.md commands table
|
|
12
|
+
*
|
|
13
|
+
* Why this exists: the CLI surface, the SKILL.md the LLM reads, and the JSON
|
|
14
|
+
* the LLM gets from `h-ear --list-tools` MUST agree, or qwen2.5:14b (and any
|
|
15
|
+
* tool-using model) starts inventing flags. By making a single manifest the
|
|
16
|
+
* authority, drift is impossible.
|
|
17
|
+
*/
|
|
18
|
+
import { toolDescriptions, toolShapes } from '@h-ear/core';
|
|
19
|
+
import { healthCommand } from './commands/health.js';
|
|
20
|
+
import { soundsCommand } from './commands/sounds.js';
|
|
21
|
+
import { usageCommand } from './commands/usage.js';
|
|
22
|
+
import { classifySyncCommand, classifyFileCommand } from './commands/classify.js';
|
|
23
|
+
import { jobsCommand, jobDetailCommand } from './commands/jobs.js';
|
|
24
|
+
import { jobEventsCommand } from './commands/job-events.js';
|
|
25
|
+
import { jobAudioCommand } from './commands/job-audio.js';
|
|
26
|
+
import { jobWaveformCommand } from './commands/job-waveform.js';
|
|
27
|
+
import { jobReportCommand } from './commands/job-report.js';
|
|
28
|
+
import { webhookListCommand, webhookDetailCommand, webhookCreateCommand, webhookPingCommand, webhookDeliveriesCommand, webhookUpdateCommand, webhookDeleteCommand, } from './commands/webhooks.js';
|
|
29
|
+
// ─── Helpers for handlers ────────────────────────────────────────────────────
|
|
30
|
+
function num(v) {
|
|
31
|
+
if (v === undefined)
|
|
32
|
+
return undefined;
|
|
33
|
+
const n = parseFloat(v);
|
|
34
|
+
return Number.isFinite(n) ? n : undefined;
|
|
35
|
+
}
|
|
36
|
+
function int(v) {
|
|
37
|
+
const n = num(v);
|
|
38
|
+
return n === undefined ? undefined : Math.trunc(n);
|
|
39
|
+
}
|
|
40
|
+
function need(parsed, name) {
|
|
41
|
+
const v = parsed.positionals[name];
|
|
42
|
+
if (v === undefined || v === '')
|
|
43
|
+
throw new Error(`Missing required positional <${name}>`);
|
|
44
|
+
return v;
|
|
45
|
+
}
|
|
46
|
+
// ─── Manifest ────────────────────────────────────────────────────────────────
|
|
47
|
+
export const COMMANDS = [
|
|
48
|
+
{
|
|
49
|
+
cliPath: ['health'],
|
|
50
|
+
schemaName: 'healthCheck',
|
|
51
|
+
summary: 'Check H-ear API health and liveness (no auth required).',
|
|
52
|
+
examples: ['h-ear health'],
|
|
53
|
+
handler: (client) => healthCommand(client),
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
cliPath: ['usage'],
|
|
57
|
+
schemaName: 'usage',
|
|
58
|
+
summary: 'Show API usage statistics (minutes, calls, quota).',
|
|
59
|
+
examples: ['h-ear usage'],
|
|
60
|
+
handler: (client) => usageCommand(client),
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
cliPath: ['sounds'],
|
|
64
|
+
schemaName: 'listClasses',
|
|
65
|
+
summary: 'List supported sound classes (521+ across 3 taxonomies).',
|
|
66
|
+
positionals: [{ name: 'search', schemaKey: 'category', required: false }],
|
|
67
|
+
flags: [
|
|
68
|
+
{ name: 'limit', schemaKey: 'limit', kind: 'number' },
|
|
69
|
+
{ name: 'offset', schemaKey: 'offset', kind: 'number' },
|
|
70
|
+
{ name: 'taxonomy', schemaKey: 'taxonomy', kind: 'string' },
|
|
71
|
+
],
|
|
72
|
+
examples: [
|
|
73
|
+
'h-ear sounds # default 20 from yamnet-521',
|
|
74
|
+
'h-ear sounds Animal --limit 5 # 5 animal classes',
|
|
75
|
+
'h-ear sounds --taxonomy species # bird species taxonomy',
|
|
76
|
+
],
|
|
77
|
+
handler: (client, p) => soundsCommand(client, p.positionals.search, {
|
|
78
|
+
limit: int(p.flags.limit),
|
|
79
|
+
offset: int(p.flags.offset),
|
|
80
|
+
taxonomy: p.flags.taxonomy,
|
|
81
|
+
}),
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
cliPath: ['jobs'],
|
|
85
|
+
schemaName: 'listJobs',
|
|
86
|
+
summary: 'List recent classification jobs (paginated).',
|
|
87
|
+
flags: [
|
|
88
|
+
{ name: 'limit', schemaKey: 'limit', kind: 'number' },
|
|
89
|
+
{ name: 'offset', schemaKey: 'offset', kind: 'number' },
|
|
90
|
+
{ name: 'status', schemaKey: 'status', kind: 'string' },
|
|
91
|
+
{ name: 'batchId', schemaKey: 'batchId', kind: 'string' },
|
|
92
|
+
],
|
|
93
|
+
examples: [
|
|
94
|
+
'h-ear jobs # last 10 jobs',
|
|
95
|
+
'h-ear jobs --limit 5 # last 5',
|
|
96
|
+
'h-ear jobs --status completed # only completed',
|
|
97
|
+
],
|
|
98
|
+
handler: (client, p) => jobsCommand(client, {
|
|
99
|
+
limit: int(p.flags.limit),
|
|
100
|
+
offset: int(p.flags.offset),
|
|
101
|
+
status: p.flags.status,
|
|
102
|
+
}),
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
cliPath: ['job'],
|
|
106
|
+
schemaName: 'getJob',
|
|
107
|
+
summary: 'Get detail for one job: status, fileName, eventCount, timestamps.',
|
|
108
|
+
positionals: [{ name: 'jobId', schemaKey: 'jobId' }],
|
|
109
|
+
examples: ['h-ear job job-1777340510821-1453bf9b-...'],
|
|
110
|
+
handler: (client, p) => jobDetailCommand(client, need(p, 'jobId')),
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
cliPath: ['job', 'events'],
|
|
114
|
+
schemaName: 'getJobEvents',
|
|
115
|
+
summary: 'Get noise events for a completed job (timeline order, filterable).',
|
|
116
|
+
positionals: [{ name: 'jobId', schemaKey: 'jobId' }],
|
|
117
|
+
flags: [
|
|
118
|
+
{ name: 'minConfidence', schemaKey: 'minConfidence', kind: 'number' },
|
|
119
|
+
{ name: 'category', schemaKey: 'category', kind: 'string' },
|
|
120
|
+
{ name: 'tier2', schemaKey: 'tier2', kind: 'string' },
|
|
121
|
+
{ name: 'tier3', schemaKey: 'tier3', kind: 'string' },
|
|
122
|
+
{ name: 'startTime', schemaKey: 'startTime', kind: 'number' },
|
|
123
|
+
{ name: 'endTime', schemaKey: 'endTime', kind: 'number' },
|
|
124
|
+
{ name: 'sourceId', schemaKey: 'sourceId', kind: 'string' },
|
|
125
|
+
{ name: 'taxonomy', schemaKey: 'taxonomy', kind: 'string' },
|
|
126
|
+
{ name: 'offset', schemaKey: 'offset', kind: 'number' },
|
|
127
|
+
],
|
|
128
|
+
examples: [
|
|
129
|
+
'h-ear job events job-1777...',
|
|
130
|
+
'h-ear job events job-1777... --minConfidence 0.7',
|
|
131
|
+
'h-ear job events job-1777... --category Animal --tier3 Dog',
|
|
132
|
+
],
|
|
133
|
+
handler: (client, p) => jobEventsCommand(client, need(p, 'jobId'), {
|
|
134
|
+
minConfidence: num(p.flags.minConfidence),
|
|
135
|
+
category: p.flags.category,
|
|
136
|
+
tier2: p.flags.tier2,
|
|
137
|
+
tier3: p.flags.tier3,
|
|
138
|
+
startTime: num(p.flags.startTime),
|
|
139
|
+
endTime: num(p.flags.endTime),
|
|
140
|
+
sourceId: p.flags.sourceId,
|
|
141
|
+
taxonomy: p.flags.taxonomy,
|
|
142
|
+
offset: int(p.flags.offset),
|
|
143
|
+
}),
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
cliPath: ['job', 'audio'],
|
|
147
|
+
schemaName: 'getJobAudio',
|
|
148
|
+
summary: 'Get a 1-hour SAS URL to stream the source audio of a job.',
|
|
149
|
+
positionals: [{ name: 'jobId', schemaKey: 'jobId' }],
|
|
150
|
+
examples: ['h-ear job audio job-1777...'],
|
|
151
|
+
handler: (client, p) => jobAudioCommand(client, need(p, 'jobId')),
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
cliPath: ['job', 'waveform'],
|
|
155
|
+
schemaName: 'getJobWaveform',
|
|
156
|
+
summary: 'Get pre-computed peaks.js waveform + audio URL.',
|
|
157
|
+
positionals: [{ name: 'jobId', schemaKey: 'jobId' }],
|
|
158
|
+
flags: [{ name: 'zoom', schemaKey: 'zoom', kind: 'number' }],
|
|
159
|
+
examples: [
|
|
160
|
+
'h-ear job waveform job-1777...',
|
|
161
|
+
'h-ear job waveform job-1777... --zoom 256 # high detail',
|
|
162
|
+
],
|
|
163
|
+
handler: (client, p) => jobWaveformCommand(client, need(p, 'jobId'), {
|
|
164
|
+
zoom: int(p.flags.zoom),
|
|
165
|
+
}),
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
cliPath: ['job', 'report'],
|
|
169
|
+
schemaName: 'getJobReport',
|
|
170
|
+
summary: 'Get a 7-day SAS URL to download the Excel analysis report.',
|
|
171
|
+
positionals: [{ name: 'jobId', schemaKey: 'jobId' }],
|
|
172
|
+
examples: ['h-ear job report job-1777...'],
|
|
173
|
+
handler: (client, p) => jobReportCommand(client, need(p, 'jobId')),
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
cliPath: ['classify'],
|
|
177
|
+
schemaName: 'classifyAudio',
|
|
178
|
+
summary: 'Classify audio (URL or local file). Polls until complete.',
|
|
179
|
+
positionals: [{ name: 'fileOrUrl', schemaKey: 'filePath' }],
|
|
180
|
+
flags: [
|
|
181
|
+
{ name: 'threshold', schemaKey: 'threshold', kind: 'number' },
|
|
182
|
+
{ name: 'lat', schemaKey: 'latitude', kind: 'number' },
|
|
183
|
+
{ name: 'lng', schemaKey: 'longitude', kind: 'number' },
|
|
184
|
+
{ name: 'callbackUrl', schemaKey: 'callbackUrl', kind: 'string' },
|
|
185
|
+
],
|
|
186
|
+
examples: [
|
|
187
|
+
'h-ear classify https://example.com/audio.mp3',
|
|
188
|
+
'h-ear classify /path/to/local.wav --threshold 0.5',
|
|
189
|
+
'h-ear classify ./demo.mp3 --lat -35.25 --lng 149.05',
|
|
190
|
+
],
|
|
191
|
+
handler: async (client, p) => {
|
|
192
|
+
const target = p.positionals.fileOrUrl;
|
|
193
|
+
if (!target)
|
|
194
|
+
throw new Error('h-ear classify <file-or-url> is required');
|
|
195
|
+
const opts = {
|
|
196
|
+
threshold: num(p.flags.threshold),
|
|
197
|
+
latitude: num(p.flags.lat),
|
|
198
|
+
longitude: num(p.flags.lng),
|
|
199
|
+
callbackUrl: p.flags.callbackUrl,
|
|
200
|
+
};
|
|
201
|
+
const onProgress = (msg) => process.stderr.write(` ${msg}\n`);
|
|
202
|
+
if (target.startsWith('http://') || target.startsWith('https://')) {
|
|
203
|
+
return classifySyncCommand(client, target, opts, onProgress);
|
|
204
|
+
}
|
|
205
|
+
return classifyFileCommand(client, target, { ...opts, waitForResult: true }, onProgress);
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
cliPath: ['webhook', 'list'],
|
|
210
|
+
schemaName: 'listWebhooks',
|
|
211
|
+
summary: 'List enterprise webhook registrations.',
|
|
212
|
+
examples: ['h-ear webhook list'],
|
|
213
|
+
handler: (client) => webhookListCommand(client),
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
cliPath: ['webhook', 'get'],
|
|
217
|
+
schemaName: 'getWebhook',
|
|
218
|
+
summary: 'Show one webhook (URL, events, filter config, delivery stats).',
|
|
219
|
+
positionals: [{ name: 'webhookId', schemaKey: 'webhookId' }],
|
|
220
|
+
examples: ['h-ear webhook get wh_abc123'],
|
|
221
|
+
handler: (client, p) => webhookDetailCommand(client, need(p, 'webhookId')),
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
cliPath: ['webhook', 'create'],
|
|
225
|
+
schemaName: 'createWebhook',
|
|
226
|
+
summary: 'Create an enterprise webhook (returns signing secret ONCE).',
|
|
227
|
+
positionals: [{ name: 'url', schemaKey: 'url' }],
|
|
228
|
+
flags: [
|
|
229
|
+
{ name: 'description', schemaKey: 'description', kind: 'string' },
|
|
230
|
+
],
|
|
231
|
+
examples: [
|
|
232
|
+
'h-ear webhook create https://my.host/hook',
|
|
233
|
+
'h-ear webhook create https://my.host/hook --description "alerts"',
|
|
234
|
+
],
|
|
235
|
+
handler: (client, p) => webhookCreateCommand(client, need(p, 'url'), {
|
|
236
|
+
description: p.flags.description,
|
|
237
|
+
}),
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
cliPath: ['webhook', 'update'],
|
|
241
|
+
schemaName: 'updateWebhook',
|
|
242
|
+
summary: 'Update webhook URL, status (active/paused), or filters.',
|
|
243
|
+
positionals: [{ name: 'webhookId', schemaKey: 'webhookId' }],
|
|
244
|
+
flags: [
|
|
245
|
+
{ name: 'url', schemaKey: 'url', kind: 'string' },
|
|
246
|
+
{ name: 'status', schemaKey: 'status', kind: 'string' },
|
|
247
|
+
{ name: 'description', schemaKey: 'description', kind: 'string' },
|
|
248
|
+
],
|
|
249
|
+
examples: [
|
|
250
|
+
'h-ear webhook update wh_abc123 --status paused',
|
|
251
|
+
'h-ear webhook update wh_abc123 --url https://new.host/hook',
|
|
252
|
+
],
|
|
253
|
+
handler: (client, p) => webhookUpdateCommand(client, need(p, 'webhookId'), {
|
|
254
|
+
url: p.flags.url,
|
|
255
|
+
status: p.flags.status,
|
|
256
|
+
description: p.flags.description,
|
|
257
|
+
}),
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
cliPath: ['webhook', 'delete'],
|
|
261
|
+
schemaName: 'deleteWebhook',
|
|
262
|
+
summary: 'Permanently delete a webhook (cannot be undone).',
|
|
263
|
+
positionals: [{ name: 'webhookId', schemaKey: 'webhookId' }],
|
|
264
|
+
examples: ['h-ear webhook delete wh_abc123'],
|
|
265
|
+
handler: (client, p) => webhookDeleteCommand(client, need(p, 'webhookId')),
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
cliPath: ['webhook', 'ping'],
|
|
269
|
+
schemaName: 'pingWebhook',
|
|
270
|
+
summary: 'Send a test ping to a webhook (verify connectivity + signing).',
|
|
271
|
+
positionals: [{ name: 'webhookId', schemaKey: 'webhookId' }],
|
|
272
|
+
examples: ['h-ear webhook ping wh_abc123'],
|
|
273
|
+
handler: (client, p) => webhookPingCommand(client, need(p, 'webhookId')),
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
cliPath: ['webhook', 'deliveries'],
|
|
277
|
+
schemaName: 'listWebhookDeliveries',
|
|
278
|
+
summary: 'Audit trail: recent delivery attempts for a webhook.',
|
|
279
|
+
positionals: [{ name: 'webhookId', schemaKey: 'webhookId' }],
|
|
280
|
+
flags: [{ name: 'limit', schemaKey: 'limit', kind: 'number' }],
|
|
281
|
+
examples: [
|
|
282
|
+
'h-ear webhook deliveries wh_abc123',
|
|
283
|
+
'h-ear webhook deliveries wh_abc123 --limit 50',
|
|
284
|
+
],
|
|
285
|
+
handler: (client, p) => webhookDeliveriesCommand(client, need(p, 'webhookId'), {
|
|
286
|
+
limit: int(p.flags.limit),
|
|
287
|
+
}),
|
|
288
|
+
},
|
|
289
|
+
];
|
|
290
|
+
// ─── Lookups & introspection ─────────────────────────────────────────────────
|
|
291
|
+
/** Find the longest-prefix manifest entry matching the user's argv tokens. */
|
|
292
|
+
export function findCommand(argv) {
|
|
293
|
+
// Sort by depth descending so "job events" beats "job"
|
|
294
|
+
const byDepth = [...COMMANDS].sort((a, b) => b.cliPath.length - a.cliPath.length);
|
|
295
|
+
for (const spec of byDepth) {
|
|
296
|
+
if (argv.length < spec.cliPath.length)
|
|
297
|
+
continue;
|
|
298
|
+
const matches = spec.cliPath.every((p, i) => argv[i] === p);
|
|
299
|
+
if (matches)
|
|
300
|
+
return { spec, remaining: argv.slice(spec.cliPath.length) };
|
|
301
|
+
}
|
|
302
|
+
return null;
|
|
303
|
+
}
|
|
304
|
+
/** Render the manifest as MCP-style JSON for `--list-tools --json`. */
|
|
305
|
+
export function listToolsJson() {
|
|
306
|
+
return COMMANDS.map(spec => {
|
|
307
|
+
const shape = toolShapes[spec.schemaName];
|
|
308
|
+
const params = {};
|
|
309
|
+
if (shape) {
|
|
310
|
+
for (const [key, zod] of Object.entries(shape)) {
|
|
311
|
+
// .description() lives on the zod object's _def; defensively read it.
|
|
312
|
+
const def = zod._def;
|
|
313
|
+
params[key] = {
|
|
314
|
+
description: def?.description ?? '',
|
|
315
|
+
type: def?.typeName ?? 'unknown',
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return {
|
|
320
|
+
name: spec.cliPath.join(' '),
|
|
321
|
+
schemaName: spec.schemaName,
|
|
322
|
+
summary: spec.summary,
|
|
323
|
+
description: toolDescriptions[spec.schemaName] ?? spec.summary,
|
|
324
|
+
positionals: spec.positionals ?? [],
|
|
325
|
+
flags: spec.flags ?? [],
|
|
326
|
+
examples: spec.examples,
|
|
327
|
+
params,
|
|
328
|
+
};
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@h-ear/openclaw",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.5-dev.202604290216",
|
|
4
4
|
"description": "OpenClaw skill for H-ear World audio classification — sound intelligence in WhatsApp, Telegram, Slack, Discord, and Teams",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|