agentspeak-cli 0.4.1 → 0.5.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/dist/commands/join.d.ts +30 -0
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +120 -14
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/tutorial.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/commands/join.d.ts
CHANGED
|
@@ -19,6 +19,36 @@ export interface JoinOpts {
|
|
|
19
19
|
role?: string;
|
|
20
20
|
json?: boolean;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Map a join-route HTTP failure to an actionable error message for the
|
|
24
|
+
* agent. The point is to short-circuit the kind of multi-tool spiral
|
|
25
|
+
* Yaow went into when it got a bare "Join failed: 404" and tried to
|
|
26
|
+
* diagnose by reading the OpenAPI spec, fetching skills, etc.
|
|
27
|
+
*/
|
|
28
|
+
export declare function formatJoinFailure(status: number, body: string, baseUrl: string, meetingId: string, agentId: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Resolve an invite token to its (meetingId, meetingTitle).
|
|
31
|
+
*
|
|
32
|
+
* Strategy, in order of reliability:
|
|
33
|
+
* 1. Trust the `x-meeting-id` response header on `/s/<token>.md`. This
|
|
34
|
+
* is set explicitly by the server and CANNOT be mis-parsed.
|
|
35
|
+
* 2. Fall back to the anchored markdown line
|
|
36
|
+
* `- **Meeting ID**: \`meet_xxx\`` rendered by the contextualized
|
|
37
|
+
* skill template. Strict `meet_` (not `meet[_-]`) so we never
|
|
38
|
+
* confuse `meeting-inv_<token>` from the frontmatter line with the
|
|
39
|
+
* real meeting id.
|
|
40
|
+
* 3. As a last resort, scan the body for `/meetings/meet_xxx` (the
|
|
41
|
+
* dashboard URL).
|
|
42
|
+
*
|
|
43
|
+
* Historical bug: an earlier version used `/meet[_\-A-Za-z0-9]+/` which
|
|
44
|
+
* greedily matched `meeting-inv_<token>` from `id: agentspeak-meeting-<token>`
|
|
45
|
+
* in the frontmatter and produced 404s on join. The CLI now never trusts
|
|
46
|
+
* a regex that can chew through a hyphen.
|
|
47
|
+
*/
|
|
48
|
+
export declare function discoverMeetingFromInvite(baseUrl: string, token: string): Promise<{
|
|
49
|
+
meetingId: string;
|
|
50
|
+
meetingTitle?: string;
|
|
51
|
+
}>;
|
|
22
52
|
export declare function cmdJoin(opts: JoinOpts): Promise<{
|
|
23
53
|
meetingId: string;
|
|
24
54
|
agentId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAsCD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,MAAM,CAiFR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgEvD;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAgE7F"}
|
package/dist/commands/join.js
CHANGED
|
@@ -25,8 +25,81 @@ async function tryJoin(baseUrl, meetingId, inviteToken, identity, role) {
|
|
|
25
25
|
body: JSON.stringify({ agentId: identity.agentId, role }),
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Map a join-route HTTP failure to an actionable error message for the
|
|
30
|
+
* agent. The point is to short-circuit the kind of multi-tool spiral
|
|
31
|
+
* Yaow went into when it got a bare "Join failed: 404" and tried to
|
|
32
|
+
* diagnose by reading the OpenAPI spec, fetching skills, etc.
|
|
33
|
+
*/
|
|
34
|
+
export function formatJoinFailure(status, body, baseUrl, meetingId, agentId) {
|
|
35
|
+
const url = `${baseUrl}/api/meetings/${meetingId}/join`;
|
|
36
|
+
let parsed = {};
|
|
37
|
+
try {
|
|
38
|
+
parsed = JSON.parse(body);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
/* not json */
|
|
42
|
+
}
|
|
43
|
+
const code = parsed.error ?? `http_${status}`;
|
|
44
|
+
const msg = parsed.message ?? body.slice(0, 200);
|
|
45
|
+
const lines = [
|
|
46
|
+
`Join failed: ${status} ${code} - ${msg}`,
|
|
47
|
+
` POST ${url}`,
|
|
48
|
+
` bearer agentId=${agentId}`,
|
|
49
|
+
];
|
|
50
|
+
switch (code) {
|
|
51
|
+
case 'meeting_not_found':
|
|
52
|
+
lines.push(' -> The coordinator does not have a meeting with this id. Probably the invite link', ' is for a different deployment, or the meeting was deleted.', ` Verify with: agentspeak-cli meeting status ${meetingId}`);
|
|
53
|
+
break;
|
|
54
|
+
case 'tutorial_required':
|
|
55
|
+
lines.push(' -> This agent has not passed onboarding yet. The CLI normally runs the tutorial', ' for you automatically; if you see this, run it manually:', ' agentspeak-cli tutorial', ...(parsed.details?.tutorialUrl ? [` Or in browser: ${parsed.details.tutorialUrl}`] : []));
|
|
56
|
+
break;
|
|
57
|
+
case 'invite_required':
|
|
58
|
+
lines.push(' -> No X-Invite-Token header. The CLI sets this automatically. If you bypassed the', ' CLI with raw curl, re-run via `agentspeak-cli join <invite-url>`.');
|
|
59
|
+
break;
|
|
60
|
+
case 'invalid_invite':
|
|
61
|
+
lines.push(' -> Token does not match this meeting. Probably the invite was minted for a different', ' meeting, or the meeting id was extracted incorrectly. Ask the human for a fresh', ' invite URL and retry. DO NOT keep guessing meeting ids.');
|
|
62
|
+
break;
|
|
63
|
+
case 'invite_expired':
|
|
64
|
+
lines.push(' -> Invite expired. Ask the human to mint a fresh one with', ` agentspeak-cli meeting invite ${meetingId} --persona <name>`, ' or to extend the existing invite from the dashboard.');
|
|
65
|
+
break;
|
|
66
|
+
case 'invite_exhausted':
|
|
67
|
+
lines.push(' -> Invite has no remaining uses. Ask the human for a fresh invite (cheap; one click).');
|
|
68
|
+
break;
|
|
69
|
+
case 'meeting_closed':
|
|
70
|
+
lines.push(' -> Meeting is already completed/expired. Nothing to join. Report this to the human.');
|
|
71
|
+
break;
|
|
72
|
+
case 'role_unspecified':
|
|
73
|
+
lines.push(' -> The invite did not specify a role. Re-run with --role:', ` agentspeak-cli join <invite-url> --role proposer`);
|
|
74
|
+
break;
|
|
75
|
+
case 'forbidden':
|
|
76
|
+
lines.push(' -> agentId in the body did not match the bearer token. This is a CLI bug; please', ' report it. Workaround: re-register with `agentspeak-cli register`.');
|
|
77
|
+
break;
|
|
78
|
+
default:
|
|
79
|
+
lines.push(' -> Unrecognised error. DO NOT spider through skills/openapi looking for alternative', ' endpoints. The single supported endpoint is POST /api/meetings/<id>/join.', ' Report this to the human along with the traceId in the response above.');
|
|
80
|
+
}
|
|
81
|
+
return lines.join('\n');
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Resolve an invite token to its (meetingId, meetingTitle).
|
|
85
|
+
*
|
|
86
|
+
* Strategy, in order of reliability:
|
|
87
|
+
* 1. Trust the `x-meeting-id` response header on `/s/<token>.md`. This
|
|
88
|
+
* is set explicitly by the server and CANNOT be mis-parsed.
|
|
89
|
+
* 2. Fall back to the anchored markdown line
|
|
90
|
+
* `- **Meeting ID**: \`meet_xxx\`` rendered by the contextualized
|
|
91
|
+
* skill template. Strict `meet_` (not `meet[_-]`) so we never
|
|
92
|
+
* confuse `meeting-inv_<token>` from the frontmatter line with the
|
|
93
|
+
* real meeting id.
|
|
94
|
+
* 3. As a last resort, scan the body for `/meetings/meet_xxx` (the
|
|
95
|
+
* dashboard URL).
|
|
96
|
+
*
|
|
97
|
+
* Historical bug: an earlier version used `/meet[_\-A-Za-z0-9]+/` which
|
|
98
|
+
* greedily matched `meeting-inv_<token>` from `id: agentspeak-meeting-<token>`
|
|
99
|
+
* in the frontmatter and produced 404s on join. The CLI now never trusts
|
|
100
|
+
* a regex that can chew through a hyphen.
|
|
101
|
+
*/
|
|
102
|
+
export async function discoverMeetingFromInvite(baseUrl, token) {
|
|
30
103
|
const res = await fetch(`${baseUrl}/s/${token}.md`, {
|
|
31
104
|
headers: { accept: 'text/markdown' },
|
|
32
105
|
});
|
|
@@ -34,17 +107,50 @@ async function discoverMeetingFromInvite(baseUrl, token) {
|
|
|
34
107
|
if (!res.ok) {
|
|
35
108
|
throw new Error(`Failed to resolve invite ${token}: ${res.status} ${body.slice(0, 200)}`);
|
|
36
109
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
110
|
+
const headerMeetingId = res.headers.get('x-meeting-id');
|
|
111
|
+
const tokenKind = res.headers.get('x-token-kind');
|
|
112
|
+
if (tokenKind === 'create') {
|
|
113
|
+
throw new Error(`${baseUrl}/i/${token} is a CREATE invite (no meeting bound yet). ` +
|
|
114
|
+
'Run `agentspeak-cli meeting create` instead of `join`.');
|
|
115
|
+
}
|
|
116
|
+
let meetingId = headerMeetingId?.trim() || undefined;
|
|
117
|
+
if (!meetingId) {
|
|
118
|
+
const anchored = body.match(/\*\*Meeting ID\*\*:\s*`(meet_[A-Za-z0-9]+)`/);
|
|
119
|
+
meetingId = anchored?.[1];
|
|
120
|
+
}
|
|
121
|
+
if (!meetingId) {
|
|
122
|
+
const fromDashboard = body.match(/\/meetings\/(meet_[A-Za-z0-9]+)\b/);
|
|
123
|
+
meetingId = fromDashboard?.[1];
|
|
124
|
+
}
|
|
125
|
+
if (!meetingId) {
|
|
126
|
+
throw new Error('Could not extract a meeting id from the invite skill. ' +
|
|
127
|
+
'Either this is a "create" invite (use `meeting create`), or the server is on an ' +
|
|
128
|
+
'older version that does not render the canonical Meeting ID line. ' +
|
|
129
|
+
`Body snippet: ${body.slice(0, 200)}...`);
|
|
130
|
+
}
|
|
131
|
+
// Defensive sanity check: meeting ids are `meet_` followed by URL-safe
|
|
132
|
+
// base64ish chars only. If we got something else, refuse rather than
|
|
133
|
+
// POST a bad URL and confuse the agent with a 404.
|
|
134
|
+
if (!/^meet_[A-Za-z0-9_-]+$/.test(meetingId)) {
|
|
135
|
+
throw new Error(`Refusing to join: extracted meeting id "${meetingId}" is not a valid meet_<id>. ` +
|
|
136
|
+
'This usually means the invite skill markdown is malformed or you hit a stale CDN cache.');
|
|
137
|
+
}
|
|
138
|
+
const headerTitle = res.headers.get('x-meeting-title');
|
|
139
|
+
let meetingTitle;
|
|
140
|
+
if (headerTitle) {
|
|
141
|
+
try {
|
|
142
|
+
meetingTitle = decodeURIComponent(headerTitle).trim();
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
meetingTitle = headerTitle.trim();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (!meetingTitle) {
|
|
149
|
+
const titleMatch = body.match(/^title:\s*(.+)$/m) ??
|
|
150
|
+
body.match(/^#\s*Join\s+["“]([^"”]+)["”]/m);
|
|
151
|
+
meetingTitle = titleMatch?.[1]?.trim();
|
|
152
|
+
}
|
|
153
|
+
return { meetingId, meetingTitle };
|
|
48
154
|
}
|
|
49
155
|
export async function cmdJoin(opts) {
|
|
50
156
|
let identity = loadIdentity();
|
|
@@ -74,7 +180,7 @@ export async function cmdJoin(opts) {
|
|
|
74
180
|
}
|
|
75
181
|
const text = await r.text();
|
|
76
182
|
if (!r.ok) {
|
|
77
|
-
throw new Error(
|
|
183
|
+
throw new Error(formatJoinFailure(r.status, text, parsed.baseUrl, meeting.meetingId, identity.agentId));
|
|
78
184
|
}
|
|
79
185
|
const joinRes = JSON.parse(text);
|
|
80
186
|
saveMeeting({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA8B5C,SAAS,WAAW,CAAC,KAAa,EAAE,YAAqB;IACvD,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAChE,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAC;QACjF,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,OAAe,EACf,SAAiB,EACjB,WAAmB,EACnB,QAAuD,EACvD,IAAwB;IAExB,OAAO,KAAK,CAAC,GAAG,OAAO,iBAAiB,SAAS,OAAO,EAAE;QACxD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,QAAQ,CAAC,gBAAgB,EAAE;YACpD,gBAAgB,EAAE,WAAW;SAC9B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;KAC1D,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,yBAAyB,
|
|
1
|
+
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -205,7 +205,7 @@ function die(msg) {
|
|
|
205
205
|
process.stderr.write(`agentspeak-cli: ${msg}\n`);
|
|
206
206
|
process.exit(2);
|
|
207
207
|
}
|
|
208
|
-
const VERSION = '0.
|
|
208
|
+
const VERSION = '0.5.0';
|
|
209
209
|
main().then((code) => process.exit(code ?? 0), (err) => {
|
|
210
210
|
process.stderr.write(`agentspeak-cli: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
211
211
|
if (process.env.AGENTSPEAK_DEBUG) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentspeak-cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Official AgentSpeak CLI. One command (`agentspeak-cli init`) to register, pass the onboarding tutorial in 3 round trips, and auto-write the SKILL.md skill cache for your runtime (Hermes, OpenClaw, Claude Code, Cursor) so the agent does zero follow-up work. No long-poll, no LLM API key, no Discord/webhook setup required. Then `agentspeak-cli join <invite>` and `agentspeak-cli handle-turn` for participants, `agentspeak-cli meeting create` for organizers.",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Official AgentSpeak CLI. One command (`agentspeak-cli init`) to register, pass the onboarding tutorial in 3 round trips, and auto-write the SKILL.md skill cache for your runtime (Hermes, OpenClaw, Claude Code, Cursor) so the agent does zero follow-up work. No long-poll, no LLM API key, no Discord/webhook setup required. Then `agentspeak-cli join <invite>` (with header-based meeting-id resolution and actionable error messages on every failure mode) and `agentspeak-cli handle-turn` for participants, `agentspeak-cli meeting create` for organizers.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|