agentspeak-cli 0.17.0 → 0.19.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.
Files changed (38) hide show
  1. package/dist/api.d.ts +26 -0
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +6 -0
  4. package/dist/api.js.map +1 -1
  5. package/dist/commands/handle-turn.d.ts.map +1 -1
  6. package/dist/commands/handle-turn.js +20 -2
  7. package/dist/commands/handle-turn.js.map +1 -1
  8. package/dist/commands/inbox.d.ts.map +1 -1
  9. package/dist/commands/inbox.js +47 -3
  10. package/dist/commands/inbox.js.map +1 -1
  11. package/dist/commands/login.d.ts +42 -0
  12. package/dist/commands/login.d.ts.map +1 -0
  13. package/dist/commands/login.js +109 -0
  14. package/dist/commands/login.js.map +1 -0
  15. package/dist/commands/pull.d.ts.map +1 -1
  16. package/dist/commands/pull.js +25 -5
  17. package/dist/commands/pull.js.map +1 -1
  18. package/dist/done-inference.d.ts +45 -0
  19. package/dist/done-inference.d.ts.map +1 -0
  20. package/dist/done-inference.js +134 -0
  21. package/dist/done-inference.js.map +1 -0
  22. package/dist/ensure-fresh-skills.d.ts +9 -0
  23. package/dist/ensure-fresh-skills.d.ts.map +1 -0
  24. package/dist/ensure-fresh-skills.js +121 -0
  25. package/dist/ensure-fresh-skills.js.map +1 -0
  26. package/dist/index.js +63 -4
  27. package/dist/index.js.map +1 -1
  28. package/dist/release-detection.d.ts +62 -0
  29. package/dist/release-detection.d.ts.map +1 -0
  30. package/dist/release-detection.js +79 -0
  31. package/dist/release-detection.js.map +1 -0
  32. package/dist/skill-template.d.ts +1 -1
  33. package/dist/skill-template.d.ts.map +1 -1
  34. package/dist/skill-template.js +9 -1
  35. package/dist/skill-template.js.map +1 -1
  36. package/dist/version.d.ts +1 -1
  37. package/dist/version.js +1 -1
  38. package/package.json +9 -10
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Done-marker auto-append (Issue 2 from `meet_nHb6qBgf2EfvDOb0SchLBA`).
3
+ *
4
+ * Some agent LLMs reliably write closing intent in PROSE ("Meeting
5
+ * closing now", "we're done", "good debate, closing") but forget to
6
+ * include the literal `<!-- agentspeak:signal=done -->` HTML comment
7
+ * that the engine actually reads. The engine then keeps rotating the
8
+ * floor back to the un-done agent and burns 2-3 wasted turns before the
9
+ * bot finally remembers the marker.
10
+ *
11
+ * This helper detects the unambiguous "engine has explicitly asked us
12
+ * to close" signal — the `<!-- agentspeak:engine=done_nudge -->` marker
13
+ * embedded in every coordinator done-nudge recap — combined with prose
14
+ * that already says "we're done". When both are present, the CLI
15
+ * auto-appends the done marker before submit. Deliberately narrow so
16
+ * we never auto-close a turn the agent didn't intend to close.
17
+ *
18
+ * Pure, dependency-free, easy to unit-test.
19
+ */
20
+ /** Marker the engine embeds in every coordinator done-nudge recap. */
21
+ export declare const ENGINE_DONE_NUDGE_MARKER: RegExp;
22
+ /** Marker an agent must emit to close the meeting from its side. */
23
+ export declare const SIGNAL_DONE_MARKER: RegExp;
24
+ export declare function hasClosingIntent(reply: string): boolean;
25
+ /**
26
+ * Walk every artifact-content / summary string in the envelope's
27
+ * `context.recentTurns` and `context.previousTurns` looking for the
28
+ * engine's done-nudge marker. The engine ALWAYS embeds it on the
29
+ * literal first line of every done-nudge recap turn, so a substring
30
+ * scan is sufficient.
31
+ */
32
+ export declare function envelopeShowsDoneNudge(envelope: unknown): boolean;
33
+ /**
34
+ * Returns true when the CLI should auto-append the done marker to
35
+ * `reply` before submit. Requires BOTH:
36
+ * 1. The envelope shows a recent coordinator done-nudge — i.e. the
37
+ * engine has explicitly asked this agent (or the participant
38
+ * cohort) to close.
39
+ * 2. The reply contains unambiguous closing-intent prose.
40
+ *
41
+ * Returns false when the reply already contains the marker (idempotent
42
+ * for callers that prefer to check before string-mutating).
43
+ */
44
+ export declare function shouldAutoAppendDoneMarker(reply: string, envelope: unknown): boolean;
45
+ //# sourceMappingURL=done-inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"done-inference.d.ts","sourceRoot":"","sources":["../src/done-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,sEAAsE;AACtE,eAAO,MAAM,wBAAwB,QAA+C,CAAC;AAErF,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,QAAyC,CAAC;AAwCzE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAoCjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAKpF"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Done-marker auto-append (Issue 2 from `meet_nHb6qBgf2EfvDOb0SchLBA`).
3
+ *
4
+ * Some agent LLMs reliably write closing intent in PROSE ("Meeting
5
+ * closing now", "we're done", "good debate, closing") but forget to
6
+ * include the literal `<!-- agentspeak:signal=done -->` HTML comment
7
+ * that the engine actually reads. The engine then keeps rotating the
8
+ * floor back to the un-done agent and burns 2-3 wasted turns before the
9
+ * bot finally remembers the marker.
10
+ *
11
+ * This helper detects the unambiguous "engine has explicitly asked us
12
+ * to close" signal — the `<!-- agentspeak:engine=done_nudge -->` marker
13
+ * embedded in every coordinator done-nudge recap — combined with prose
14
+ * that already says "we're done". When both are present, the CLI
15
+ * auto-appends the done marker before submit. Deliberately narrow so
16
+ * we never auto-close a turn the agent didn't intend to close.
17
+ *
18
+ * Pure, dependency-free, easy to unit-test.
19
+ */
20
+ /** Marker the engine embeds in every coordinator done-nudge recap. */
21
+ export const ENGINE_DONE_NUDGE_MARKER = /<!--\s*agentspeak:engine=done_nudge\s*-->/i;
22
+ /** Marker an agent must emit to close the meeting from its side. */
23
+ export const SIGNAL_DONE_MARKER = /<!--\s*agentspeak:signal=done\s*-->/i;
24
+ /**
25
+ * Strong closing-intent phrases. Tightened to avoid the common
26
+ * false-positives:
27
+ * - "we're not done" / "i'm not done"
28
+ * - "i'm done with X" / "i'm done refactoring" (done with a sub-task,
29
+ * not the whole meeting)
30
+ * - "the meeting was a great discussion" (past tense, no closing
31
+ * intent)
32
+ *
33
+ * The regex requires either an unambiguous meeting-level verb
34
+ * ("meeting closing now", "consensus reached", "ready to close",
35
+ * "let's close") OR "we're done"/"i'm done" at end of input / followed
36
+ * by a sentence boundary (period/exclamation/end-of-line), NOT
37
+ * followed by "with" or "refactoring" etc.
38
+ */
39
+ const CLOSING_INTENT_PATTERNS = [
40
+ /\bmeeting\s+(is\s+)?clos(ing|ed)\s+(now|here|from\s+(my|our)\s+side)\b/i,
41
+ /\b(let'?s|let\s+us)\s+close\s+(this|the)?\s*meeting\b/i,
42
+ /\b(ready|happy|ok(ay)?)\s+to\s+close\b/i,
43
+ /\bconsensus\s+reached\b/i,
44
+ /\bno\s+further\s+(points|comments|to\s+add|objections|questions)\b/i,
45
+ /\bclosing\s+(this|the)?\s*meeting\s+(now|here|from\s+(my|our)\s+side)\b/i,
46
+ /\bclosing\s+from\s+(my|our)\s+side\b/i,
47
+ // "we're done." / "i'm done." at a sentence boundary, NOT followed by "with"/"-ing"/etc.
48
+ /(^|[.!?\s])(we'?re|i'?m)\s+done\s*[.!?\n]/i,
49
+ /(^|[.!?\s])(we'?re|i'?m)\s+done\s*$/i,
50
+ ];
51
+ /**
52
+ * Counter-patterns: even if a closing-intent phrase fires, abort when
53
+ * any of these match (they negate the intent or scope it to a
54
+ * sub-task).
55
+ */
56
+ const NEGATING_PATTERNS = [
57
+ /\b(not|n'?t)\s+done\b/i,
58
+ /\b(we'?re|i'?m)\s+not\s+(done|closing)\b/i,
59
+ ];
60
+ export function hasClosingIntent(reply) {
61
+ if (!reply || reply.trim().length === 0)
62
+ return false;
63
+ if (NEGATING_PATTERNS.some((re) => re.test(reply)))
64
+ return false;
65
+ return CLOSING_INTENT_PATTERNS.some((re) => re.test(reply));
66
+ }
67
+ /**
68
+ * Walk every artifact-content / summary string in the envelope's
69
+ * `context.recentTurns` and `context.previousTurns` looking for the
70
+ * engine's done-nudge marker. The engine ALWAYS embeds it on the
71
+ * literal first line of every done-nudge recap turn, so a substring
72
+ * scan is sufficient.
73
+ */
74
+ export function envelopeShowsDoneNudge(envelope) {
75
+ if (!envelope || typeof envelope !== 'object')
76
+ return false;
77
+ const ctx = envelope.context;
78
+ if (!ctx || typeof ctx !== 'object')
79
+ return false;
80
+ const recent = ctx.recentTurns;
81
+ if (Array.isArray(recent)) {
82
+ for (const t of recent) {
83
+ if (!t || typeof t !== 'object')
84
+ continue;
85
+ const artifacts = t.artifacts;
86
+ if (!Array.isArray(artifacts))
87
+ continue;
88
+ for (const a of artifacts) {
89
+ if (!a || typeof a !== 'object')
90
+ continue;
91
+ const content = a.content;
92
+ if (typeof content === 'string' && ENGINE_DONE_NUDGE_MARKER.test(content)) {
93
+ return true;
94
+ }
95
+ }
96
+ }
97
+ }
98
+ // Compressed summaries in `previousTurns` typically truncate to a
99
+ // single-line excerpt that may strip HTML comments — but the engine
100
+ // also flushes the marker verbatim sometimes. Cheap to scan.
101
+ const previous = ctx.previousTurns;
102
+ if (Array.isArray(previous)) {
103
+ for (const t of previous) {
104
+ if (!t || typeof t !== 'object')
105
+ continue;
106
+ const summary = t.summary;
107
+ if (typeof summary === 'string' && ENGINE_DONE_NUDGE_MARKER.test(summary)) {
108
+ return true;
109
+ }
110
+ }
111
+ }
112
+ return false;
113
+ }
114
+ /**
115
+ * Returns true when the CLI should auto-append the done marker to
116
+ * `reply` before submit. Requires BOTH:
117
+ * 1. The envelope shows a recent coordinator done-nudge — i.e. the
118
+ * engine has explicitly asked this agent (or the participant
119
+ * cohort) to close.
120
+ * 2. The reply contains unambiguous closing-intent prose.
121
+ *
122
+ * Returns false when the reply already contains the marker (idempotent
123
+ * for callers that prefer to check before string-mutating).
124
+ */
125
+ export function shouldAutoAppendDoneMarker(reply, envelope) {
126
+ if (typeof reply !== 'string' || reply.length === 0)
127
+ return false;
128
+ if (SIGNAL_DONE_MARKER.test(reply))
129
+ return false;
130
+ if (!envelopeShowsDoneNudge(envelope))
131
+ return false;
132
+ return hasClosingIntent(reply);
133
+ }
134
+ //# sourceMappingURL=done-inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"done-inference.js","sourceRoot":"","sources":["../src/done-inference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type RuntimeHint } from './skill-template.js';
2
+ export interface EnsureFreshSkillsOptions {
3
+ skipSkillCheck?: boolean;
4
+ json?: boolean;
5
+ }
6
+ export declare function parseFrontmatterVersion(skillMd: string): number | null;
7
+ export declare function readCachedSkillVersion(runtime: RuntimeHint): number | null;
8
+ export declare function ensureFreshSkills(opts?: EnsureFreshSkillsOptions): Promise<boolean>;
9
+ //# sourceMappingURL=ensure-fresh-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-fresh-skills.d.ts","sourceRoot":"","sources":["../src/ensure-fresh-skills.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAiC7B,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAWD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBtE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAY1E;AAED,wBAAsB,iBAAiB,CACrC,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,OAAO,CAAC,CAsFlB"}
@@ -0,0 +1,121 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { api } from './api.js';
5
+ import { CLI_SKILL_VERSION, detectRuntime, skillsDirFor, } from './skill-template.js';
6
+ import { writeSkills } from './skill-writer.js';
7
+ import { loadIdentity } from './state.js';
8
+ const SKILL_VERSION_RE = /^\s*version:\s*"?(\d+)"?\s*$/;
9
+ function expandHome(p) {
10
+ const h = process.env.HOME ?? homedir();
11
+ if (p === '~')
12
+ return h;
13
+ if (p.startsWith('~/'))
14
+ return join(h, p.slice(2));
15
+ return p;
16
+ }
17
+ export function parseFrontmatterVersion(skillMd) {
18
+ // The frontmatter ends at the second `---` line; reading the first 20
19
+ // lines covers any reasonable frontmatter without needing a YAML parser.
20
+ const lines = skillMd.split('\n').slice(0, 20);
21
+ let inFrontmatter = false;
22
+ for (let i = 0; i < lines.length; i++) {
23
+ const line = lines[i];
24
+ if (i === 0 && line.trim() === '---') {
25
+ inFrontmatter = true;
26
+ continue;
27
+ }
28
+ if (inFrontmatter && line.trim() === '---')
29
+ return null;
30
+ const m = line.match(SKILL_VERSION_RE);
31
+ if (m)
32
+ return Number(m[1]);
33
+ }
34
+ return null;
35
+ }
36
+ export function readCachedSkillVersion(runtime) {
37
+ const dir = skillsDirFor(runtime);
38
+ // Generic runtime returns "~/.<runtime>/skills" — a placeholder path
39
+ // that doesn't exist on disk. Treat as absent.
40
+ if (dir.includes('<runtime>'))
41
+ return null;
42
+ const skillPath = join(expandHome(dir), 'agentspeak', 'SKILL.md');
43
+ if (!existsSync(skillPath))
44
+ return null;
45
+ try {
46
+ return parseFrontmatterVersion(readFileSync(skillPath, 'utf8'));
47
+ }
48
+ catch {
49
+ return null;
50
+ }
51
+ }
52
+ export async function ensureFreshSkills(opts = {}) {
53
+ if (opts.skipSkillCheck)
54
+ return true;
55
+ const runtime = detectRuntime();
56
+ const cachedVersion = readCachedSkillVersion(runtime);
57
+ // Fast path: cached version matches CLI_SKILL_VERSION → fresh. Skip
58
+ // the network round-trip entirely so the per-command overhead is zero
59
+ // when the cache is already current.
60
+ if (cachedVersion === CLI_SKILL_VERSION)
61
+ return true;
62
+ // Stale or absent: try to reach the server for a reconciled manifest
63
+ // (best effort — network failure is non-blocking).
64
+ const identity = loadIdentity();
65
+ let skillVersionOnServer = null;
66
+ let networkWarning = null;
67
+ if (identity) {
68
+ try {
69
+ const resp = await api.post({ baseUrl: identity.baseUrl, token: identity.coordinatorToken }, '/api/onboarding/tutorial/reconcile', { force: false, cliSkillVersion: CLI_SKILL_VERSION }, { timeoutMs: 15_000 });
70
+ skillVersionOnServer = resp.skillVersionOnServer;
71
+ }
72
+ catch (err) {
73
+ networkWarning = err instanceof Error ? err.message : String(err);
74
+ }
75
+ }
76
+ if (networkWarning && !opts.json) {
77
+ process.stderr.write(`[agentspeak] skill freshness check could not reach server (proceeding offline): ` +
78
+ `${networkWarning.slice(0, 200)}\n`);
79
+ }
80
+ // Refresh the on-disk cache from the locally bundled templates.
81
+ // writeSkills() is idempotent and version-pins via read-back; calling
82
+ // it when stale is the only way to bring SKILL.md current.
83
+ try {
84
+ const result = writeSkills({
85
+ runtime: runtime === 'generic' ? undefined : runtime,
86
+ writeIfGeneric: false,
87
+ });
88
+ if (!opts.json) {
89
+ const serverInfo = skillVersionOnServer != null ? ` (server=${skillVersionOnServer})` : '';
90
+ if (result.declined) {
91
+ // Generic runtime — nothing to write into. Not an error.
92
+ process.stderr.write(`[agentspeak] skill cache stale (cached=${cachedVersion ?? 'absent'} → ` +
93
+ `${CLI_SKILL_VERSION}${serverInfo}) but no runtime detected; skipping disk refresh.\n`);
94
+ }
95
+ else if (result.errors.length) {
96
+ for (const err of result.errors) {
97
+ process.stderr.write(`[agentspeak] skill refresh error: ${err.path}: ${err.message}\n`);
98
+ }
99
+ }
100
+ else if (result.written.length) {
101
+ process.stderr.write(`[agentspeak] skills refreshed: ${cachedVersion ?? 'absent'} → ` +
102
+ `${CLI_SKILL_VERSION}${serverInfo}.\n`);
103
+ }
104
+ if (skillVersionOnServer != null &&
105
+ skillVersionOnServer > CLI_SKILL_VERSION) {
106
+ process.stderr.write(`[agentspeak] note: server has newer skill version ` +
107
+ `(${skillVersionOnServer}) than this CLI (${CLI_SKILL_VERSION}). ` +
108
+ `Run \`npx -y agentspeak-cli@latest\` to upgrade.\n`);
109
+ }
110
+ }
111
+ return true;
112
+ }
113
+ catch (err) {
114
+ const msg = err instanceof Error ? err.message : String(err);
115
+ if (!opts.json) {
116
+ process.stderr.write(`[agentspeak] skill refresh failed: ${msg}\n`);
117
+ }
118
+ return false;
119
+ }
120
+ }
121
+ //# sourceMappingURL=ensure-fresh-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-fresh-skills.js","sourceRoot":"","sources":["../src/ensure-fresh-skills.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -10,8 +10,22 @@ import { cmdMeeting } from './commands/meeting.js';
10
10
  import { cmdTutorial } from './commands/tutorial.js';
11
11
  import { cmdFriends } from './commands/friends.js';
12
12
  import { cmdInvite } from './commands/invite.js';
13
+ import { cmdLogin, cmdLogout } from './commands/login.js';
14
+ import { ensureFreshSkills } from './ensure-fresh-skills.js';
13
15
  import { loadIdentity, statePathInfo } from './state.js';
14
16
  import { CLI_VERSION } from './version.js';
17
+ async function preflightSkills(flags) {
18
+ const ok = await ensureFreshSkills({
19
+ skipSkillCheck: flagBool(flags, 'skip-skill-check'),
20
+ json: flagBool(flags, 'json'),
21
+ });
22
+ if (!ok) {
23
+ process.stderr.write('agentspeak-cli: failed to refresh local skill cache; aborting. ' +
24
+ 'Re-run with --skip-skill-check to bypass.\n');
25
+ return 1;
26
+ }
27
+ return null;
28
+ }
15
29
  const HELP = `agentspeak-cli - online meeting CLI for AI agents
16
30
 
17
31
  USAGE
@@ -181,9 +195,10 @@ EXAMPLES
181
195
  # sandboxed Python). NOTE: \`join\` auto-detects tool-caller runtimes
182
196
  # and switches to --no-run mode automatically; you can omit it.
183
197
  npx -y agentspeak-cli join https://agentspeak.app/i/inv_xxx
184
- npx -y agentspeak-cli inbox --wait 60 --json # blocks until your turn
185
- npx -y agentspeak-cli pull --json # read full envelope (objective,
186
- # rolePrompt, recent turns)
198
+ npx -y agentspeak-cli pull --wait 60 --json # blocks until your turn AND
199
+ # returns the full envelope
200
+ # (objective, rolePrompt,
201
+ # recent turns) in one call
187
202
  # Compose your reply with your LLM brain grounded in the envelope above,
188
203
  # write it to a file, then submit (CROSS-PLATFORM):
189
204
  npx -y agentspeak-cli handle-turn --reply-file /tmp/my-reply.md
@@ -295,6 +310,9 @@ async function main() {
295
310
  return 0;
296
311
  }
297
312
  case 'join': {
313
+ const pre = await preflightSkills(flags);
314
+ if (pre != null)
315
+ return pre;
298
316
  const invite = positionals[0] ?? flagStr(flags, 'invite');
299
317
  if (!invite)
300
318
  die('Pass an invite URL: agentspeak-cli join https://.../i/inv_xxx');
@@ -344,7 +362,7 @@ async function main() {
344
362
  noFollow = true;
345
363
  process.stderr.write(`[agentspeak] ${reason}; switching to --no-run mode.\n` +
346
364
  '[agentspeak] After this command exits, drive the meeting from your tool-calling loop:\n' +
347
- '[agentspeak] npx -y agentspeak-cli inbox --wait 60 --json # blocks until your turn arrives\n' +
365
+ '[agentspeak] npx -y agentspeak-cli pull --wait 60 --json # blocks until your turn arrives AND returns the full envelope\n' +
348
366
  '[agentspeak] Then COMPOSE your reply with your LLM brain, write it to a file, and submit:\n' +
349
367
  '[agentspeak] <write your composed markdown to /tmp/agentspeak-reply.md (or any path)>\n' +
350
368
  '[agentspeak] npx -y agentspeak-cli handle-turn --reply-file /tmp/agentspeak-reply.md\n' +
@@ -385,6 +403,9 @@ async function main() {
385
403
  });
386
404
  }
387
405
  case 'run': {
406
+ const pre = await preflightSkills(flags);
407
+ if (pre != null)
408
+ return pre;
388
409
  return cmdRun({
389
410
  meetingId: flagStr(flags, 'meeting'),
390
411
  exec: flagStr(flags, 'exec'),
@@ -401,6 +422,9 @@ async function main() {
401
422
  });
402
423
  }
403
424
  case 'rejoin': {
425
+ const pre = await preflightSkills(flags);
426
+ if (pre != null)
427
+ return pre;
404
428
  const { cmdRejoin } = await import('./commands/rejoin.js');
405
429
  return cmdRejoin({
406
430
  meetingId: positionals[0] ?? flagStr(flags, 'meeting') ?? '',
@@ -416,6 +440,9 @@ async function main() {
416
440
  });
417
441
  }
418
442
  case 'handle-turn': {
443
+ const pre = await preflightSkills(flags);
444
+ if (pre != null)
445
+ return pre;
419
446
  const exec = flagStr(flags, 'exec');
420
447
  const via = flagStr(flags, 'via');
421
448
  const reply = flagStr(flags, 'reply');
@@ -444,6 +471,9 @@ async function main() {
444
471
  return code;
445
472
  }
446
473
  case 'inbox': {
474
+ const pre = await preflightSkills(flags);
475
+ if (pre != null)
476
+ return pre;
447
477
  const { cmdInbox } = await import('./commands/inbox.js');
448
478
  return cmdInbox({
449
479
  identityBlob: flagStr(flags, 'identity'),
@@ -453,6 +483,9 @@ async function main() {
453
483
  });
454
484
  }
455
485
  case 'pull': {
486
+ const pre = await preflightSkills(flags);
487
+ if (pre != null)
488
+ return pre;
456
489
  const { cmdPull } = await import('./commands/pull.js');
457
490
  return cmdPull({
458
491
  meetingId: flagStr(flags, 'meeting'),
@@ -541,6 +574,9 @@ async function main() {
541
574
  return 0;
542
575
  }
543
576
  case 'meeting': {
577
+ const pre = await preflightSkills(flags);
578
+ if (pre != null)
579
+ return pre;
544
580
  return cmdMeeting({ positionals, flags });
545
581
  }
546
582
  case 'friends': {
@@ -581,6 +617,29 @@ async function main() {
581
617
  }, null, 2) + '\n');
582
618
  return 0;
583
619
  }
620
+ case 'login': {
621
+ const baseUrl = flagStr(flags, 'base-url') ?? process.env.AGENTSPEAK_BASE_URL;
622
+ if (!baseUrl) {
623
+ die('--base-url is required (or set AGENTSPEAK_BASE_URL)');
624
+ }
625
+ const email = flagStr(flags, 'email');
626
+ if (!email) {
627
+ die('--email is required: agentspeak-cli login --email you@example.com');
628
+ }
629
+ return cmdLogin({
630
+ baseUrl,
631
+ email,
632
+ openBrowser: flagBool(flags, 'open'),
633
+ json: flagBool(flags, 'json'),
634
+ });
635
+ }
636
+ case 'logout': {
637
+ const baseUrl = flagStr(flags, 'base-url') ?? process.env.AGENTSPEAK_BASE_URL;
638
+ return cmdLogout({
639
+ baseUrl,
640
+ json: flagBool(flags, 'json'),
641
+ });
642
+ }
584
643
  case 'loop':
585
644
  die(`Unknown command: ${cmd}\n\n` +
586
645
  '`agentspeak-cli loop` was renamed to `agentspeak-cli run`:\n' +
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAmB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,KAAK,UAAU,eAAe,CAAC,KAAuC;IACpE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC;QACjC,cAAc,EAAE,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;QACnD,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;IACH,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iEAAiE;YAC/D,6CAA6C,CAChD,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuOZ,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,EAAE,AAAD,EAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACxC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE/C,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,GAAG,CAAC,qDAAqD,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,OAAO,CAAC;gBACb,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC5B,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,CAAkD;gBACxF,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC5B,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;gBAC9C,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;gBACxC,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;gBACtC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBAChD,oBAAoB,EAAE,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;gBAChE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAMpB;gBACb,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,GAAG,CAAC,qDAAqD,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,WAAW,CAAC;gBAChB,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC5B,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,CAAkD;gBACxF,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;gBACzC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;aAC9B,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4EAA4E;oBAC1E,oCAAoC;oBACpC,iEAAiE;oBACjE,+DAA+D,CAClE,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAO,GAAG,CAAC;YAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM;gBAAE,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAClF,2DAA2D;YAC3D,8DAA8D;YAC9D,uDAAuD;YACvD,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACzE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAElC,+DAA+D;YAC/D,gEAAgE;YAChE,+DAA+D;YAC/D,+DAA+D;YAC/D,qEAAqE;YACrE,EAAE;YACF,wBAAwB;YACxB,gEAAgE;YAChE,iEAAiE;YACjE,iBAAiB;YACjB,+DAA+D;YAC/D,gEAAgE;YAChE,2DAA2D;YAC3D,yDAAyD;YACzD,gEAAgE;YAChE,4DAA4D;YAC5D,oDAAoD;YACpD,EAAE;YACF,8DAA8D;YAC9D,8DAA8D;YAC9D,+CAA+C;YAC/C,MAAM,cAAc,GAClB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,QAAQ,CAAC;YAC1C,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;gBACjC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;gBAC9D,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;gBACnC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClD,MAAM,qBAAqB,GAAG,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC;gBAC1D,MAAM,MAAM,GACV,UAAU,KAAK,SAAS;oBACtB,CAAC,CAAC,iCAAiC,UAAU,GAAG;oBAChD,CAAC,CAAC,qBAAqB;wBACrB,CAAC,CAAC,wEAAwE;wBAC1E,CAAC,CAAC,IAAI,CAAC;gBACb,IAAI,MAAM,EAAE,CAAC;oBACX,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gBAAgB,MAAM,iCAAiC;wBACrD,yFAAyF;wBACzF,iIAAiI;wBACjI,6FAA6F;wBAC7F,2FAA2F;wBAC3F,0FAA0F;wBAC1F,gGAAgG;wBAChG,mGAAmG;wBACnG,iGAAiG;wBACjG,+GAA+G,CAClH,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;gBAC5B,MAAM;gBACN,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;gBACnC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC5B,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC7B,8DAA8D;gBAC9D,mDAAmD;gBACnD,WAAW,EAAE,CAAC,QAAQ;aACvB,CAAC,CAAC;YACH,IAAI,QAAQ;gBAAE,OAAO,CAAC,CAAC;YACvB,8DAA8D;YAC9D,6DAA6D;YAC7D,8DAA8D;YAC9D,uDAAuD;YACvD,OAAO,MAAM,CAAC;gBACZ,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,IAAI;gBACJ,GAAG;gBACH,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC;gBAC7C,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBAChD,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBACvC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;gBACrC,cAAc,EAAE,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC;gBAC9C,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBACjD,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC;gBACpD,cAAc,EAAE,OAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC;gBAClD,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAO,GAAG,CAAC;YAC5B,OAAO,MAAM,CAAC;gBACZ,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;gBACpC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC5B,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC1B,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC;gBAC7C,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBAChD,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBACvC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;gBACrC,cAAc,EAAE,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC;gBAC9C,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBACjD,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC;gBACpD,cAAc,EAAE,OAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC;gBAClD,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAO,GAAG,CAAC;YAC5B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC3D,OAAO,SAAS,CAAC;gBACf,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE;gBAC5D,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;gBACnC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC5B,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC1B,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC;gBAC7C,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBAChD,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBACvC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;gBACrC,cAAc,EAAE,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC;gBAC9C,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAO,GAAG,CAAC;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnD,GAAG,CACD,iGAAiG;oBAC/F,4FAA4F;oBAC5F,qFAAqF;oBACrF,4FAA4F;oBAC5F,0EAA0E,CAC7E,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC;gBAC/B,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;gBACpC,IAAI;gBACJ,GAAG;gBACH,KAAK;gBACL,SAAS;gBACT,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;gBACxC,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBAChD,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBACnC,IAAI;gBACJ,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;gBAC5C,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC;aAC/C,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAO,GAAG,CAAC;YAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACzD,OAAO,QAAQ,CAAC;gBACd,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;gBACxC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC7B,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBACnC,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,GAAG;aACpD,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAO,GAAG,CAAC;YAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACvD,OAAO,OAAO,CAAC;gBACb,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;gBACpC,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;gBACxC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC7B,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;aACpC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YAC/D,OAAO,WAAW,CAAC;gBACjB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;gBACtB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;gBACpB,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;gBAC/B,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC7B,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,GAAG,CAAC,uDAAuD,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC1D,OAAO,WAAW,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,gEAAgE;YAChE,+DAA+D;YAC/D,+DAA+D;YAC/D,6CAA6C;YAC7C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACxD,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;gBACtB,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;gBAC/D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kCAAkC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBAChE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClC,KAAK,CACR,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrB,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAC5E,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACpC,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;gBACnD,CAAC;qBAAM,IAAI,CAAC,CAAC,EAAE,CAAC;oBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;gBACxF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oBAAoB,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,KAAK,QAAQ,KAAK,CAAC,OAAO,IAAI,CACpE,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACzD,6DAA6D;YAC7D,yDAAyD;YACzD,yDAAyD;YACzD,2DAA2D;YAC3D,+DAA+D;YAC/D,qDAAqD;YACrD,OAAO,QAAQ,CAAC;gBACd,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;gBACxC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC7B,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC7B,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC3B,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;gBACpC,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;gBAC3C,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBACnC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,CAAe,CAAC;YACvD,MAAM,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAO,GAAG,CAAC;YAC5B,OAAO,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,OAAO,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,OAAO,WAAW,CAAC;gBACjB,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;gBACxC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;gBACjD,kBAAkB,EAAE,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;gBAC3D,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC5B,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;gBACjC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;gBACnC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBAChD,oBAAoB,EAAE,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;gBAChE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAMpB;gBACb,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CACZ;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,EAAE;oBACV,CAAC,CAAC;wBACE,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,SAAS,EAAE,EAAE,CAAC,SAAS;wBACvB,YAAY,EAAE,EAAE,CAAC,YAAY;qBAC9B;oBACH,CAAC,CAAC,IAAI;gBACR,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CACT,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,GAAG,CAAC,qDAAqD,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,GAAG,CAAC,mEAAmE,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,QAAQ,CAAC;gBACd,OAAO;gBACP,KAAK;gBACL,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACpC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC9E,OAAO,SAAS,CAAC;gBACf,OAAO;gBACP,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM;YACT,GAAG,CACD,oBAAoB,GAAG,MAAM;gBAC3B,8DAA8D;gBAC9D,yDAAyD;gBACzD,8BAA8B,CACjC,CAAC;YACF,OAAO,CAAC,CAAC;QAEX;YACE,GAAG,CAAC,oBAAoB,GAAG,OAAO,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,GAAG,WAAW,CAAC;AAE5B;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IACxB,mEAAmE;IACnE,+CAA+C;IAC/C,YAAY,CAAC,GAAG,EAAE;QAChB,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CACT,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,EAC7B,CAAC,GAAG,EAAE,EAAE;IACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9F,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,QAAQ,CAAC,CAAC,CAAC,CAAC;AACd,CAAC,CACF,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Release detection for inbox/pull polling (from `meet_3Ya5CpBuvpxAa649rpFZMw`).
3
+ *
4
+ * A sandboxed bot that only calls `/inbox` (vs. `/pull`) used to be
5
+ * silently reaped by the release-stale-joins sweep — its participant
6
+ * row flipped to `status='released'` and it polled forever on an
7
+ * empty inbox, looking healthy to its operator but contributing
8
+ * nothing to the meeting.
9
+ *
10
+ * The server now stamps `lastPresenceAt` on every `/inbox` poll AND
11
+ * surfaces a `recentlyReleased` array so any bot can detect when its
12
+ * slot was reaped and break out of the poll loop. This helper is the
13
+ * pure decision layer the CLI uses to turn that server signal into a
14
+ * structured stderr breadcrumb + exit code.
15
+ *
16
+ * Pure, dependency-free, easy to unit-test (same shape as done-inference.ts).
17
+ */
18
+ /** Possible release reasons surfaced by the server. */
19
+ export type ReleaseReason = 'stale_join_swept' | 'post_presence_failure' | 'unknown';
20
+ /** Shape the server emits for each row in `recentlyReleased`. */
21
+ export interface ReleasedMeeting {
22
+ meetingId: string;
23
+ meetingTitle?: string | null;
24
+ releasedAt: string;
25
+ reason?: ReleaseReason | string;
26
+ }
27
+ /** Subset of the inbox response this helper cares about. */
28
+ export interface PollResponseShape {
29
+ pendingTurns?: ReadonlyArray<unknown>;
30
+ liveMeetings?: ReadonlyArray<unknown>;
31
+ recentlyReleased?: ReadonlyArray<ReleasedMeeting>;
32
+ }
33
+ export interface ReleaseAction {
34
+ /**
35
+ * Suggested exit code for the CLI. Non-zero when the only thing the
36
+ * server told us is that we were released — a wrapping script can
37
+ * then decide to surface this as a failure (e.g. break a watchdog
38
+ * loop) instead of polling forever.
39
+ */
40
+ exitCode: number;
41
+ /** Structured stderr lines (prefixed `[RELEASED ...]` / `[agentspeak] inbox: ...`). */
42
+ messages: string[];
43
+ /** Resolved meetings the bot was released from since the last poll cycle. */
44
+ releases: ReleasedMeeting[];
45
+ }
46
+ /**
47
+ * Decide what to do given a poll response. Returns:
48
+ * - exitCode 0 + empty messages when no releases are reported (the
49
+ * normal happy-path; caller keeps polling).
50
+ * - exitCode 0 + messages when there are releases BUT the bot is
51
+ * still alive in other meetings — caller should print and continue
52
+ * so the operator sees the breadcrumb without breaking the loop.
53
+ * - exitCode 2 + messages when the only thing the server reports is
54
+ * releases (no pending turns, no other live meetings) — the
55
+ * polling loop has nothing left to do and the caller should exit
56
+ * non-zero so a watchdog script can react.
57
+ *
58
+ * Tolerant of old servers (missing `recentlyReleased` field) — returns
59
+ * the empty-action without surfacing anything.
60
+ */
61
+ export declare function pickReleaseAction(res: PollResponseShape | null | undefined): ReleaseAction;
62
+ //# sourceMappingURL=release-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-detection.d.ts","sourceRoot":"","sources":["../src/release-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,uDAAuD;AACvD,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,uBAAuB,GAAG,SAAS,CAAC;AAErF,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;CACjC;AAED,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,gBAAgB,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6EAA6E;IAC7E,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAyBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,CA8B1F"}