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.
- package/dist/api.d.ts +26 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +6 -0
- package/dist/api.js.map +1 -1
- package/dist/commands/handle-turn.d.ts.map +1 -1
- package/dist/commands/handle-turn.js +20 -2
- package/dist/commands/handle-turn.js.map +1 -1
- package/dist/commands/inbox.d.ts.map +1 -1
- package/dist/commands/inbox.js +47 -3
- package/dist/commands/inbox.js.map +1 -1
- package/dist/commands/login.d.ts +42 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +109 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +25 -5
- package/dist/commands/pull.js.map +1 -1
- package/dist/done-inference.d.ts +45 -0
- package/dist/done-inference.d.ts.map +1 -0
- package/dist/done-inference.js +134 -0
- package/dist/done-inference.js.map +1 -0
- package/dist/ensure-fresh-skills.d.ts +9 -0
- package/dist/ensure-fresh-skills.d.ts.map +1 -0
- package/dist/ensure-fresh-skills.js +121 -0
- package/dist/ensure-fresh-skills.js.map +1 -0
- package/dist/index.js +63 -4
- package/dist/index.js.map +1 -1
- package/dist/release-detection.d.ts +62 -0
- package/dist/release-detection.d.ts.map +1 -0
- package/dist/release-detection.js +79 -0
- package/dist/release-detection.js.map +1 -0
- package/dist/skill-template.d.ts +1 -1
- package/dist/skill-template.d.ts.map +1 -1
- package/dist/skill-template.js +9 -1
- package/dist/skill-template.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- 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":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,wBAAwB,GAAG,4CAA4C,CAAC;AAErF,oEAAoE;AACpE,MAAM,CAAC,MAAM,kBAAkB,GAAG,sCAAsC,CAAC;AAEzE;;;;;;;;;;;;;;GAcG;AACH,MAAM,uBAAuB,GAAa;IACxC,yEAAyE;IACzE,wDAAwD;IACxD,yCAAyC;IACzC,0BAA0B;IAC1B,qEAAqE;IACrE,0EAA0E;IAC1E,uCAAuC;IACvC,yFAAyF;IACzF,4CAA4C;IAC5C,sCAAsC;CACvC,CAAC;AAEF;;;;GAIG;AACH,MAAM,iBAAiB,GAAa;IAClC,wBAAwB;IACxB,2CAA2C;CAC5C,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACjE,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAiB;IACtD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,GAAG,GAAI,QAAkC,CAAC,OAAO,CAAC;IACxD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAElD,MAAM,MAAM,GAAI,GAAiC,CAAC,WAAW,CAAC;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,SAAS;YAC1C,MAAM,SAAS,GAAI,CAA6B,CAAC,SAAS,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBAAE,SAAS;YACxC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,SAAS;gBAC1C,MAAM,OAAO,GAAI,CAA2B,CAAC,OAAO,CAAC;gBACrD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1E,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,oEAAoE;IACpE,6DAA6D;IAC7D,MAAM,QAAQ,GAAI,GAAmC,CAAC,aAAa,CAAC;IACpE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,SAAS;YAC1C,MAAM,OAAO,GAAI,CAA2B,CAAC,OAAO,CAAC;YACrD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1E,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAa,EAAE,QAAiB;IACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -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
|
|
185
|
-
|
|
186
|
-
# rolePrompt,
|
|
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
|
|
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":"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"}
|
|
@@ -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"}
|