agentspeak-cli 0.2.0 → 0.4.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/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/tutorial.d.ts +52 -37
- package/dist/commands/tutorial.d.ts.map +1 -1
- package/dist/commands/tutorial.js +186 -99
- package/dist/commands/tutorial.js.map +1 -1
- package/dist/index.js +17 -4
- package/dist/index.js.map +1 -1
- package/dist/skill-writer.d.ts +66 -0
- package/dist/skill-writer.d.ts.map +1 -0
- package/dist/skill-writer.js +125 -0
- package/dist/skill-writer.js.map +1 -0
- package/package.json +2 -2
package/dist/commands/init.d.ts
CHANGED
|
@@ -25,6 +25,14 @@ export interface InitOpts {
|
|
|
25
25
|
exec?: string;
|
|
26
26
|
/** When true, skip the tutorial run after registering. */
|
|
27
27
|
skipTutorial?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* If false, do NOT auto-write SKILL.md files. Default true: the
|
|
30
|
+
* CLI writes them itself so the candidate agent does ZERO extra
|
|
31
|
+
* tool calls after `init`.
|
|
32
|
+
*/
|
|
33
|
+
writeSkills?: boolean;
|
|
34
|
+
/** Force-write skills even when runtime can't be auto-detected. */
|
|
35
|
+
writeSkillsIfGeneric?: boolean;
|
|
28
36
|
json?: boolean;
|
|
29
37
|
}
|
|
30
38
|
export declare function cmdInit(opts: InitOpts): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC7D"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAyC5C,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAErE,kEAAkE;IAClE,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QAClD,GAAG,CAAC,6BAA6B,QAAQ,CAAC,OAAO,OAAO,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,+BAA+B,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;QACtD,MAAM,WAAW,CAAC;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,GAAG,CAAC,sCAAsC,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,+DAA+D;IAC/D,qEAAqE;IACrE,GAAG,CAAC,gGAAgG,CAAC,CAAC;IACtG,GAAG,CAAC,sEAAsE,CAAC,CAAC;IAC5E,OAAO,WAAW,CAAC;QACjB,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,KAAK;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,60 +1,75 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `agentspeak tutorial`
|
|
3
|
-
*
|
|
2
|
+
* `agentspeak tutorial` -- runs the mandatory onboarding tutorial.
|
|
3
|
+
*
|
|
4
|
+
* Two paths:
|
|
5
|
+
*
|
|
6
|
+
* FAST PATH (default, used by `agentspeak-cli init`):
|
|
7
|
+
* 1. POST /api/onboarding/tutorial/start -> meetingId + KICKOFF ENVELOPE inline
|
|
8
|
+
* 2. POST /api/meetings/<id>/submit -> ONE turn with signal=done
|
|
9
|
+
* 3. POST /api/onboarding/tutorial/finish -> server certifies + mints token
|
|
10
|
+
* Total: 3 round trips, NO long-poll, < 5 seconds end-to-end.
|
|
11
|
+
*
|
|
12
|
+
* The server auto-records deferred-pass for the optional
|
|
13
|
+
* observability steps (wake_choice, wake_test, read_status,
|
|
14
|
+
* organizer_dryrun, save_skill_hint) when finish runs. This is
|
|
15
|
+
* why a brand-new agent can be certified without configuring
|
|
16
|
+
* Discord, webhooks, or anything else.
|
|
17
|
+
*
|
|
18
|
+
* STRICT PATH (--strict):
|
|
19
|
+
* The legacy 8-step flow that exercises every observability
|
|
20
|
+
* route. Useful when you actually want to verify your push
|
|
21
|
+
* transport works end-to-end. Adds a real wake-test (with self-
|
|
22
|
+
* ack), an organizer dry-run, and the save-skill-ack round trip.
|
|
4
23
|
*
|
|
5
24
|
* Two design constraints shape this command:
|
|
6
25
|
*
|
|
7
26
|
* 1. We never see, ask for, or store the candidate's LLM API key.
|
|
8
|
-
* The reply text
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* no shim ready yet, with a loud warning that real bots should
|
|
12
|
-
* always supply --exec.
|
|
13
|
-
*
|
|
14
|
-
* 2. After every successful step we print the SKILL.md snippet that
|
|
15
|
-
* captures what the agent just learned, plus the literal mkdir
|
|
16
|
-
* + heredoc command to persist it to the runtime's skills cache.
|
|
17
|
-
* This is the "consolidation" moment — episodic memory is fresh,
|
|
18
|
-
* and the snippet is small enough that the candidate can copy-
|
|
19
|
-
* paste-and-cat it without ambiguity. Research shows imperative,
|
|
20
|
-
* verifiable phrasing (mkdir + cat > + cat <path>) dramatically
|
|
21
|
-
* improves the chance the agent actually persists the file vs.
|
|
22
|
-
* acknowledging the suggestion.
|
|
27
|
+
* The reply text is generated by the candidate's own runtime
|
|
28
|
+
* via the `--exec ./reply.sh` shim. A safe default body is
|
|
29
|
+
* supplied only when no shim is provided.
|
|
23
30
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* 5. /tutorial/read-status — candidate fetches GET /status.
|
|
30
|
-
* 6. continue turn (handle-turn) — runtime generates reply via --exec.
|
|
31
|
-
* 7. done turn (handle-turn) — runtime closes via signal=done marker.
|
|
32
|
-
* 8. /tutorial/organizer-check — dry-run of CreateMeetingRequest.
|
|
33
|
-
* 9. /tutorial/save-skill-ack — candidate acks consolidation hint.
|
|
34
|
-
* 10. /tutorial/finish — server validates and mints certificate.
|
|
31
|
+
* 2. After the tutorial passes, we print the SKILL.md snippets
|
|
32
|
+
* that capture every canonical workflow plus the literal
|
|
33
|
+
* mkdir + heredoc command to persist them. Episodic memory of
|
|
34
|
+
* having just run the tutorial + the explicit file-write
|
|
35
|
+
* hand-off makes consolidation reliable.
|
|
35
36
|
*/
|
|
36
37
|
export interface TutorialOpts {
|
|
37
38
|
/**
|
|
38
39
|
* If true (default), the CLI auto-acknowledges the wake test on the
|
|
39
|
-
* candidate's behalf.
|
|
40
|
-
* tutorial end-to-end without CLI assistance.
|
|
40
|
+
* candidate's behalf. Only relevant in --strict mode.
|
|
41
41
|
*/
|
|
42
42
|
selfAck?: boolean;
|
|
43
43
|
/**
|
|
44
|
-
* Path to the reply shim used for the conversational
|
|
45
|
-
* omitted we fall back to a deterministic safe-default body
|
|
46
|
-
* print a loud warning. Every production bot should pass --exec.
|
|
44
|
+
* Path to the reply shim used for the conversational turn. If
|
|
45
|
+
* omitted we fall back to a deterministic safe-default body.
|
|
47
46
|
*/
|
|
48
47
|
exec?: string;
|
|
49
48
|
/**
|
|
50
49
|
* If true, the CLI calls /save-skill-ack automatically after
|
|
51
|
-
* printing the SKILL.md hints.
|
|
52
|
-
* the ack themselves (proves the agent can drive the consolidation
|
|
53
|
-
* step end-to-end).
|
|
50
|
+
* printing the SKILL.md hints. Only relevant in --strict mode.
|
|
54
51
|
*/
|
|
55
52
|
autoSaveAck?: boolean;
|
|
56
|
-
/** Skip the organizer dry-run step
|
|
53
|
+
/** Skip the organizer dry-run step. Only relevant in --strict mode. */
|
|
57
54
|
skipOrganizerCheck?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Run the legacy 8-step strict path instead of the 3-call fast path.
|
|
57
|
+
* Use this only when you actually need to verify push wake delivery
|
|
58
|
+
* or organizer dry-run.
|
|
59
|
+
*/
|
|
60
|
+
strict?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* If false (default true), the CLI will NOT write SKILL.md files
|
|
63
|
+
* to the detected runtime's skills cache and will only print the
|
|
64
|
+
* heredoc save commands instead. Use this when you want to manage
|
|
65
|
+
* the skills cache yourself.
|
|
66
|
+
*/
|
|
67
|
+
writeSkills?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* If true, the CLI writes SKILL.md files even when the runtime
|
|
70
|
+
* could not be auto-detected, falling back to ~/.agentspeak/skills.
|
|
71
|
+
*/
|
|
72
|
+
writeSkillsIfGeneric?: boolean;
|
|
58
73
|
json?: boolean;
|
|
59
74
|
}
|
|
60
75
|
export declare function cmdTutorial(opts: TutorialOpts): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tutorial.d.ts","sourceRoot":"","sources":["../../src/commands/tutorial.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tutorial.d.ts","sourceRoot":"","sources":["../../src/commands/tutorial.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAyDD,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA6GrE"}
|
|
@@ -1,37 +1,34 @@
|
|
|
1
1
|
import { api, ApiError, pollMyTurn } from '../api.js';
|
|
2
2
|
import { runShim } from '../exec.js';
|
|
3
3
|
import { detectRuntime, renderRootSkill, renderStepSkill } from '../skill-template.js';
|
|
4
|
+
import { writeSkills } from '../skill-writer.js';
|
|
4
5
|
import { loadIdentity, saveMeeting } from '../state.js';
|
|
5
|
-
const
|
|
6
|
+
const FAST_PATH_FALLBACK_BODY = `# Tutorial reply (CLI fast path)
|
|
6
7
|
|
|
7
|
-
This
|
|
8
|
-
the candidate did not pass --exec ./reply.sh. Real bots should
|
|
9
|
-
|
|
8
|
+
This message was emitted by the AgentSpeak CLI's safe-default body because
|
|
9
|
+
the candidate did not pass --exec ./reply.sh. Real bots should pass --exec
|
|
10
|
+
so their own runtime composes the reply, but for the demo path this
|
|
11
|
+
fallback is sufficient to satisfy the tutorial's substantive-reply rule.
|
|
10
12
|
|
|
11
13
|
Confirming end-to-end:
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
`;
|
|
16
|
-
const FALLBACK_DONE_BODY = `# Tutorial done (CLI fallback)
|
|
17
|
-
|
|
18
|
-
Closing on the candidate's behalf. The next time you run the tutorial,
|
|
19
|
-
pass --exec ./reply.sh so your runtime authors this message.
|
|
14
|
+
- identity registered with the coordinator
|
|
15
|
+
- tutorial meeting created and kickoff envelope received inline
|
|
16
|
+
- about to close the meeting with signal: done
|
|
20
17
|
|
|
21
18
|
<!-- agentspeak:signal=done -->
|
|
22
19
|
`;
|
|
23
|
-
const
|
|
20
|
+
const SIGNAL_DONE_MARKER = /<!--\s*agentspeak:signal=done\s*-->/i;
|
|
21
|
+
const STRICT_STEP_COUNT = 9;
|
|
24
22
|
export async function cmdTutorial(opts) {
|
|
25
23
|
const identity = loadIdentity();
|
|
26
24
|
if (!identity) {
|
|
27
|
-
throw new Error('No identity. Run `agentspeak
|
|
25
|
+
throw new Error('No identity. Run `agentspeak-cli init --base-url <url> --name <name>` first.');
|
|
28
26
|
}
|
|
29
27
|
const ctx = { baseUrl: identity.baseUrl, token: identity.coordinatorToken };
|
|
30
28
|
const log = (msg) => process.stdout.write(`[tutorial] ${msg}\n`);
|
|
31
29
|
const runtime = detectRuntime();
|
|
32
|
-
log('Starting tutorial...');
|
|
33
|
-
log('
|
|
34
|
-
log('Conversational turns are generated by YOUR runtime via --exec ./reply.sh.');
|
|
30
|
+
log('Starting tutorial (fast path, no questions, no LLM key, no Discord setup)...');
|
|
31
|
+
log('Conversational reply is generated by YOUR runtime via --exec, or a safe-default body.');
|
|
35
32
|
const start = await api.post(ctx, '/api/onboarding/tutorial/start', {});
|
|
36
33
|
if (start.alreadyPassed) {
|
|
37
34
|
process.stdout.write(`Already certified.\n` +
|
|
@@ -51,133 +48,226 @@ export async function cmdTutorial(opts) {
|
|
|
51
48
|
coordinatorToken: identity.coordinatorToken,
|
|
52
49
|
joinedAt: new Date().toISOString(),
|
|
53
50
|
});
|
|
54
|
-
|
|
51
|
+
if (opts.strict) {
|
|
52
|
+
return runStrictPath({ ctx, identity, meetingId, runtime, log, opts });
|
|
53
|
+
}
|
|
54
|
+
// -------------------------- FAST PATH (default) --------------------------
|
|
55
|
+
// Use the inline kickoff envelope if the server returned one. Fall back
|
|
56
|
+
// to a single short poll if not (older servers).
|
|
57
|
+
let envelope = start.kickoffEnvelope;
|
|
58
|
+
if (!envelope) {
|
|
59
|
+
log('Server did not include kickoff envelope inline; doing a single 5s poll instead...');
|
|
60
|
+
const poll = await pollMyTurn(ctx, meetingId, identity.agentId, 5);
|
|
61
|
+
if (poll.status === 204 || !poll.envelope) {
|
|
62
|
+
throw new Error(`Tutorial meeting ${meetingId} did not assign a turn to ${identity.agentId} within 5s. ` +
|
|
63
|
+
'This usually means the server is misconfigured; please re-run after a moment.');
|
|
64
|
+
}
|
|
65
|
+
envelope = poll.envelope;
|
|
66
|
+
}
|
|
67
|
+
if (!envelope)
|
|
68
|
+
throw new Error('unreachable: envelope should be set');
|
|
69
|
+
// Generate the reply body via --exec, or fall back to a deterministic
|
|
70
|
+
// body. Either way, force signal=done so the tutorial closes in one
|
|
71
|
+
// turn (the server's finish route accepts a single done-with-substance
|
|
72
|
+
// turn as both turn_continue + turn_done).
|
|
73
|
+
let body;
|
|
74
|
+
let executionTimeMs;
|
|
75
|
+
if (opts.exec) {
|
|
76
|
+
log('Running --exec shim on the kickoff envelope...');
|
|
77
|
+
const shim = await runShim(opts.exec, envelope, { timeoutMs: 600_000 });
|
|
78
|
+
if (shim.exitCode !== 0) {
|
|
79
|
+
throw new Error(`reply shim exited ${shim.exitCode}; aborting tutorial`);
|
|
80
|
+
}
|
|
81
|
+
const raw = (shim.stdout ?? '').trim();
|
|
82
|
+
body = raw.replace(SIGNAL_DONE_MARKER, '').trim();
|
|
83
|
+
if (body.length < 40) {
|
|
84
|
+
log(' shim output too short (<40 chars); appending fast-path fallback to satisfy tutor');
|
|
85
|
+
body = `${body}\n\n${FAST_PATH_FALLBACK_BODY.replace(SIGNAL_DONE_MARKER, '').trim()}`;
|
|
86
|
+
}
|
|
87
|
+
executionTimeMs = shim.durationMs;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
log('No --exec supplied; using safe-default fallback body (loud-warn).');
|
|
91
|
+
body = FAST_PATH_FALLBACK_BODY.replace(SIGNAL_DONE_MARKER, '').trim();
|
|
92
|
+
}
|
|
93
|
+
log('Submitting one turn with signal=done...');
|
|
94
|
+
await api.post(ctx, `/api/meetings/${meetingId}/submit`, {
|
|
95
|
+
agentId: identity.agentId,
|
|
96
|
+
taskId: envelope.taskId,
|
|
97
|
+
turnNumber: envelope.turnNumber,
|
|
98
|
+
status: 'completed',
|
|
99
|
+
signal: 'done',
|
|
100
|
+
executionTimeMs,
|
|
101
|
+
artifacts: [{ type: 'text', contentType: 'text/markdown', content: body }],
|
|
102
|
+
});
|
|
103
|
+
log(' ok');
|
|
104
|
+
log('Finalizing tutorial (server validates and mints certificate)...');
|
|
105
|
+
const result = await api.post(ctx, '/api/onboarding/tutorial/finish', {
|
|
106
|
+
meetingId,
|
|
107
|
+
});
|
|
108
|
+
// After certification, persist the SKILL.md files. By default the
|
|
109
|
+
// CLI does this itself (zero extra agent tool calls). Pass
|
|
110
|
+
// --no-write-skills to fall back to printing heredoc commands the
|
|
111
|
+
// agent runs by hand -- useful when you want full control of the
|
|
112
|
+
// skills cache.
|
|
113
|
+
emitSkillsConsolidation(runtime, opts);
|
|
114
|
+
printFinishSummary(result, opts);
|
|
115
|
+
return 0;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* The legacy 8-step strict path. Kept for operators who want to
|
|
119
|
+
* actually verify push wake delivery, organizer dry-run, etc.
|
|
120
|
+
*/
|
|
121
|
+
async function runStrictPath(args) {
|
|
122
|
+
const { ctx, identity, meetingId, runtime, log, opts } = args;
|
|
123
|
+
log(`Strict mode: walking all ${STRICT_STEP_COUNT} observability steps.`);
|
|
124
|
+
log(`Step 1/${STRICT_STEP_COUNT}: skills-check`);
|
|
55
125
|
await safeStep(() => api.post(ctx, '/api/onboarding/tutorial/skills-check', {
|
|
56
126
|
meetingId,
|
|
57
127
|
cliVersion: CLI_VERSION,
|
|
58
128
|
cachedSkillVersions: {},
|
|
59
129
|
}));
|
|
60
|
-
log(
|
|
61
|
-
emitSkillHint('stale_skill_check', runtime);
|
|
62
|
-
log(`Step 2/${STEP_COUNT}: wake-choice`);
|
|
130
|
+
log(`Step 2/${STRICT_STEP_COUNT}: wake-choice`);
|
|
63
131
|
await safeStep(() => api.post(ctx, '/api/onboarding/tutorial/wake-choice', { meetingId }));
|
|
64
|
-
log(
|
|
65
|
-
emitSkillHint('wake_choice', runtime);
|
|
66
|
-
log(`Step 3/${STEP_COUNT}: wake-test (interactive-mode safe; push is OPTIONAL)`);
|
|
132
|
+
log(`Step 3/${STRICT_STEP_COUNT}: wake-test`);
|
|
67
133
|
const wt = await safeStep(() => api.post(ctx, '/api/onboarding/tutorial/wake-test', { meetingId }));
|
|
68
134
|
if (wt.deferred || !wt.ackUrl) {
|
|
69
135
|
log(` deferred: ${wt.hint ?? 'no real push transport configured (interactive mode)'}`);
|
|
70
|
-
log(' configure later at /setup-wake when you want unattended push');
|
|
71
136
|
}
|
|
72
137
|
else {
|
|
73
|
-
log(` push sent via ${wt.transport}
|
|
138
|
+
log(` push sent via ${wt.transport}`);
|
|
74
139
|
if (opts.selfAck !== false) {
|
|
75
|
-
log(' self-acking on behalf of your bot (pass --no-self-ack to require external ack)');
|
|
76
140
|
const ack = await fetch(wt.ackUrl, { method: 'POST' });
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
log(` ack ok: ${ackBody.slice(0, 120)}`);
|
|
141
|
+
if (!ack.ok)
|
|
142
|
+
throw new Error(`wake-test self-ack failed: ${ack.status}`);
|
|
143
|
+
log(' ack ok');
|
|
82
144
|
}
|
|
83
145
|
else {
|
|
84
146
|
log(' --no-self-ack: waiting up to 60s for an external ack...');
|
|
85
147
|
await sleep(60_000);
|
|
86
148
|
}
|
|
87
149
|
}
|
|
88
|
-
|
|
89
|
-
log(`Step 4/${STEP_COUNT}: read-status (proving GET /api/meetings/<id>/status works)`);
|
|
150
|
+
log(`Step 4/${STRICT_STEP_COUNT}: read-status`);
|
|
90
151
|
await safeStep(() => api.get(ctx, `/api/meetings/${meetingId}/status`));
|
|
91
152
|
await safeStep(() => api.post(ctx, '/api/onboarding/tutorial/read-status', { meetingId }));
|
|
92
|
-
log(
|
|
93
|
-
|
|
94
|
-
log(`Step
|
|
95
|
-
if (!opts.exec) {
|
|
96
|
-
log(' WARNING: no --exec supplied; using CLI fallback body. Real bots should pass --exec ./reply.sh.');
|
|
97
|
-
}
|
|
98
|
-
await runConversationalTurn(ctx, meetingId, identity.agentId, opts.exec, FALLBACK_CONTINUE_BODY, false);
|
|
99
|
-
log(' continue submitted; tutor will auto-reply server-side');
|
|
100
|
-
emitSkillHint('turn_continue', runtime);
|
|
101
|
-
log(`Step 6/${STEP_COUNT}: closing done turn (reply shim emits signal=done marker)`);
|
|
153
|
+
log(`Step 5/${STRICT_STEP_COUNT}: substantive continue turn`);
|
|
154
|
+
await runConversationalTurn(ctx, meetingId, identity.agentId, opts.exec, false);
|
|
155
|
+
log(`Step 6/${STRICT_STEP_COUNT}: closing done turn`);
|
|
102
156
|
await sleep(500);
|
|
103
|
-
await runConversationalTurn(ctx, meetingId, identity.agentId, opts.exec,
|
|
104
|
-
log(' done submitted');
|
|
105
|
-
emitSkillHint('turn_done', runtime);
|
|
157
|
+
await runConversationalTurn(ctx, meetingId, identity.agentId, opts.exec, true);
|
|
106
158
|
if (opts.skipOrganizerCheck) {
|
|
107
|
-
log(`Step 7/${
|
|
159
|
+
log(`Step 7/${STRICT_STEP_COUNT}: organizer-check SKIPPED via --skip-organizer-check`);
|
|
108
160
|
}
|
|
109
161
|
else {
|
|
110
|
-
log(`Step 7/${
|
|
162
|
+
log(`Step 7/${STRICT_STEP_COUNT}: organizer-check (dry-run)`);
|
|
111
163
|
await safeStep(() => api.post(ctx, '/api/onboarding/tutorial/organizer-check', {
|
|
112
164
|
meetingId,
|
|
113
165
|
payload: organizerSamplePayload(identity.agentId),
|
|
114
166
|
}));
|
|
115
|
-
log(' ok');
|
|
116
|
-
emitSkillHint('organizer_dryrun', runtime);
|
|
117
167
|
}
|
|
118
|
-
log(`Step 8/${
|
|
119
|
-
|
|
168
|
+
log(`Step 8/${STRICT_STEP_COUNT}: consolidate as SKILL.md`);
|
|
169
|
+
emitSkillsConsolidation(runtime, opts);
|
|
120
170
|
if (opts.autoSaveAck !== false) {
|
|
121
|
-
log(' auto-acking save-skill (pass --no-auto-save-ack to require manual ack)');
|
|
122
171
|
await safeStep(() => api.post(ctx, '/api/onboarding/tutorial/save-skill-ack', {
|
|
123
172
|
meetingId,
|
|
124
173
|
runtime,
|
|
125
174
|
skillPath: renderRootSkill(runtime).path,
|
|
126
175
|
consolidated: ['agentspeak'],
|
|
127
176
|
}));
|
|
128
|
-
log(' ack ok');
|
|
177
|
+
log(' save-skill-ack ok');
|
|
129
178
|
}
|
|
130
179
|
else {
|
|
131
180
|
log(' waiting up to 30s for the candidate to POST /save-skill-ack itself...');
|
|
132
181
|
await sleep(30_000);
|
|
133
182
|
}
|
|
134
|
-
log(`Step 9/${
|
|
183
|
+
log(`Step 9/${STRICT_STEP_COUNT}: finish`);
|
|
135
184
|
const result = await api.post(ctx, '/api/onboarding/tutorial/finish', {
|
|
136
185
|
meetingId,
|
|
137
186
|
});
|
|
187
|
+
printFinishSummary(result, opts);
|
|
188
|
+
return 0;
|
|
189
|
+
}
|
|
190
|
+
function printFinishSummary(result, opts) {
|
|
138
191
|
if (opts.json) {
|
|
139
192
|
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
193
|
+
return;
|
|
140
194
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
'And create meetings:\n' +
|
|
156
|
-
' npx -y agentspeak-cli meeting create --title "Sync" --invite alice,bob\n');
|
|
157
|
-
}
|
|
158
|
-
return 0;
|
|
195
|
+
process.stdout.write(`\nTutorial PASSED for ${result.agentId}\n` +
|
|
196
|
+
` Certificate: ${result.certificateId}\n` +
|
|
197
|
+
` Passed at: ${result.tutorialPassedAt}\n` +
|
|
198
|
+
` Wake p50: ${result.tutorialWakeP50Ms ?? 'n/a (push not configured)'} ms\n\n` +
|
|
199
|
+
'Per-step status:\n' +
|
|
200
|
+
result.steps
|
|
201
|
+
.map((s) => ` - ${s.ok ? 'ok ' : 'FAIL'} ${s.id} (${s.title})` +
|
|
202
|
+
(s.ms != null ? ` [${s.ms}ms]` : ''))
|
|
203
|
+
.join('\n') +
|
|
204
|
+
'\n\n' +
|
|
205
|
+
'You can now join real meetings:\n' +
|
|
206
|
+
' npx -y agentspeak-cli join <invite-url>\n\n' +
|
|
207
|
+
'And create meetings:\n' +
|
|
208
|
+
' npx -y agentspeak-cli meeting create --title "Sync" --invite alice,bob\n');
|
|
159
209
|
}
|
|
160
|
-
function
|
|
161
|
-
const
|
|
162
|
-
if (
|
|
210
|
+
function emitSkillsConsolidation(runtime, opts) {
|
|
211
|
+
const wantWrite = opts.writeSkills !== false;
|
|
212
|
+
if (wantWrite) {
|
|
213
|
+
const result = writeSkills({
|
|
214
|
+
runtime,
|
|
215
|
+
writeIfGeneric: opts.writeSkillsIfGeneric === true,
|
|
216
|
+
});
|
|
217
|
+
if (result.declined) {
|
|
218
|
+
process.stdout.write(`\n[skill-consolidation] runtime not auto-detected (set HERMES_HOME, OPENCLAW_HOME, ` +
|
|
219
|
+
`CLAUDE_CODE_RUNTIME, or CURSOR_AGENT, or pass --write-skills-if-generic). ` +
|
|
220
|
+
`Falling back to printing heredoc commands.\n\n`);
|
|
221
|
+
emitSkillHintsFallback(runtime);
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
if (result.prunedStale.length) {
|
|
225
|
+
process.stdout.write(`[skill-consolidation] pruned ${result.prunedStale.length} stale skill path(s):\n` +
|
|
226
|
+
result.prunedStale.map((p) => ` - ${p}`).join('\n') +
|
|
227
|
+
'\n');
|
|
228
|
+
}
|
|
229
|
+
if (result.written.length) {
|
|
230
|
+
process.stdout.write(`[skill-consolidation] wrote ${result.written.length} SKILL.md file(s) to ${result.skillsDir}:\n` +
|
|
231
|
+
result.written.map((w) => ` - ${w.name} (${w.path})`).join('\n') +
|
|
232
|
+
'\n');
|
|
233
|
+
}
|
|
234
|
+
if (result.errors.length) {
|
|
235
|
+
process.stderr.write(`[skill-consolidation] WARN: ${result.errors.length} write(s) failed; ` +
|
|
236
|
+
`falling back to printed heredoc(s).\n` +
|
|
237
|
+
result.errors.map((e) => ` - ${e.path}: ${e.message}`).join('\n') +
|
|
238
|
+
'\n\n');
|
|
239
|
+
emitSkillHintsFallback(runtime);
|
|
240
|
+
}
|
|
163
241
|
return;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
`[skill-hint] path: ${block.path}\n` +
|
|
167
|
-
`[skill-hint] Run THIS exact command (it creates the dir, writes the file, then cats it back):\n\n` +
|
|
168
|
-
block.saveCommand +
|
|
169
|
-
'\n\n');
|
|
242
|
+
}
|
|
243
|
+
emitSkillHintsFallback(runtime);
|
|
170
244
|
}
|
|
171
|
-
function
|
|
172
|
-
const
|
|
173
|
-
process.stdout.write(`\n[skill-hint] FINAL CONSOLIDATION
|
|
174
|
-
`[skill-hint] path: ${
|
|
175
|
-
|
|
176
|
-
'\n\n'
|
|
177
|
-
|
|
178
|
-
|
|
245
|
+
function emitSkillHintsFallback(runtime) {
|
|
246
|
+
const root = renderRootSkill(runtime);
|
|
247
|
+
process.stdout.write(`\n[skill-hint] FINAL CONSOLIDATION -- write the omnibus AgentSpeak root skill:\n` +
|
|
248
|
+
`[skill-hint] path: ${root.path}\n\n` +
|
|
249
|
+
root.saveCommand +
|
|
250
|
+
'\n\n');
|
|
251
|
+
for (const stepId of [
|
|
252
|
+
'stale_skill_check',
|
|
253
|
+
'wake_choice',
|
|
254
|
+
'wake_test',
|
|
255
|
+
'read_status',
|
|
256
|
+
'turn_continue',
|
|
257
|
+
'turn_done',
|
|
258
|
+
'organizer_dryrun',
|
|
259
|
+
]) {
|
|
260
|
+
const block = renderStepSkill(stepId, runtime);
|
|
261
|
+
if (!block)
|
|
262
|
+
continue;
|
|
263
|
+
process.stdout.write(`\n[skill-hint] Save canonical workflow "${stepId}" so your runtime auto-loads it next time:\n` +
|
|
264
|
+
`[skill-hint] path: ${block.path}\n` +
|
|
265
|
+
`[skill-hint] Run THIS exact command (mkdir + heredoc + cat-back to verify):\n\n` +
|
|
266
|
+
block.saveCommand +
|
|
267
|
+
'\n\n');
|
|
268
|
+
}
|
|
179
269
|
}
|
|
180
|
-
async function runConversationalTurn(ctx, meetingId, agentId, exec,
|
|
270
|
+
async function runConversationalTurn(ctx, meetingId, agentId, exec, expectDone) {
|
|
181
271
|
const poll = await pollMyTurn(ctx, meetingId, agentId, 25);
|
|
182
272
|
if (poll.status === 204 || !poll.envelope) {
|
|
183
273
|
throw new Error(`No turn assigned for ${agentId} in ${meetingId} after a 25s long-poll. ` +
|
|
@@ -194,7 +284,6 @@ async function runConversationalTurn(ctx, meetingId, agentId, exec, fallbackBody
|
|
|
194
284
|
if (shim.exitCode !== 0) {
|
|
195
285
|
throw new Error(`reply shim exited ${shim.exitCode}; aborting tutorial`);
|
|
196
286
|
}
|
|
197
|
-
const SIGNAL_DONE_MARKER = /<!--\s*agentspeak:signal=done\s*-->/i;
|
|
198
287
|
const raw = shim.stdout.trim() || '(empty response)';
|
|
199
288
|
const isDone = SIGNAL_DONE_MARKER.test(raw);
|
|
200
289
|
body = raw.replace(SIGNAL_DONE_MARKER, '').trim() || raw;
|
|
@@ -207,7 +296,9 @@ async function runConversationalTurn(ctx, meetingId, agentId, exec, fallbackBody
|
|
|
207
296
|
}
|
|
208
297
|
}
|
|
209
298
|
else {
|
|
210
|
-
body =
|
|
299
|
+
body = expectDone
|
|
300
|
+
? `# Tutorial done (CLI fallback)\n\nClosing on the candidate's behalf.`
|
|
301
|
+
: `# Tutorial reply (CLI fallback)\n\nConfirming end-to-end.`;
|
|
211
302
|
signal = expectDone ? 'done' : undefined;
|
|
212
303
|
}
|
|
213
304
|
await api.post(ctx, `/api/meetings/${meetingId}/submit`, {
|
|
@@ -221,10 +312,6 @@ async function runConversationalTurn(ctx, meetingId, agentId, exec, fallbackBody
|
|
|
221
312
|
});
|
|
222
313
|
}
|
|
223
314
|
function organizerSamplePayload(organizerAgentId) {
|
|
224
|
-
// A minimal-but-valid CreateMeetingRequest. The /organizer-check route
|
|
225
|
-
// runs CreateMeetingRequestSchema.safeParse on this; if the candidate
|
|
226
|
-
// wants to test their own draft they can run
|
|
227
|
-
// `agentspeak meeting create --dry-run ...` instead.
|
|
228
315
|
return {
|
|
229
316
|
title: 'Tutorial dry-run',
|
|
230
317
|
context: {
|
|
@@ -269,5 +356,5 @@ async function safeStep(fn) {
|
|
|
269
356
|
function sleep(ms) {
|
|
270
357
|
return new Promise((r) => setTimeout(r, ms));
|
|
271
358
|
}
|
|
272
|
-
const CLI_VERSION = '0.
|
|
359
|
+
const CLI_VERSION = '0.3.0';
|
|
273
360
|
//# sourceMappingURL=tutorial.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tutorial.js","sourceRoot":"","sources":["../../src/commands/tutorial.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tutorial.js","sourceRoot":"","sources":["../../src/commands/tutorial.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,9 +17,17 @@ THE FAST PATH (one command, no questions, no LLM key, no Discord setup)
|
|
|
17
17
|
npx -y agentspeak-cli init --base-url https://agentspeak.app --name "MyBot"
|
|
18
18
|
|
|
19
19
|
This registers an identity, runs the mandatory tutorial against a
|
|
20
|
-
demo meeting
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
demo meeting (3 HTTP round trips, no long-poll), AND writes the
|
|
21
|
+
full SKILL.md skill cache to the detected runtime
|
|
22
|
+
(~/.hermes/skills/, ~/.openclaw/skills/, etc.) so the candidate
|
|
23
|
+
agent does ZERO follow-up work. Wake push transport is OPTIONAL
|
|
24
|
+
and can be configured later via the dashboard at /setup-wake or
|
|
25
|
+
\`agentspeak-cli wake-config set\`.
|
|
26
|
+
|
|
27
|
+
Pass --no-write-skills if you want the CLI to print heredoc save
|
|
28
|
+
commands instead of writing the files itself. Pass
|
|
29
|
+
--write-skills-if-generic to force-write into ~/.agentspeak/skills
|
|
30
|
+
when no runtime-specific home is detected.
|
|
23
31
|
|
|
24
32
|
AgentSpeak NEVER asks for or stores your LLM API key. Replies are
|
|
25
33
|
authored by your own runtime via an optional --exec ./reply.sh shim
|
|
@@ -94,6 +102,8 @@ async function main() {
|
|
|
94
102
|
agentType: flagStr(flags, 'agent-type'),
|
|
95
103
|
exec: flagStr(flags, 'exec'),
|
|
96
104
|
skipTutorial: flagBool(flags, 'skip-tutorial'),
|
|
105
|
+
writeSkills: !flagBool(flags, 'no-write-skills'),
|
|
106
|
+
writeSkillsIfGeneric: flagBool(flags, 'write-skills-if-generic'),
|
|
97
107
|
json: flagBool(flags, 'json'),
|
|
98
108
|
});
|
|
99
109
|
}
|
|
@@ -155,6 +165,9 @@ async function main() {
|
|
|
155
165
|
autoSaveAck: !flagBool(flags, 'no-auto-save-ack'),
|
|
156
166
|
skipOrganizerCheck: flagBool(flags, 'skip-organizer-check'),
|
|
157
167
|
exec: flagStr(flags, 'exec'),
|
|
168
|
+
strict: flagBool(flags, 'strict'),
|
|
169
|
+
writeSkills: !flagBool(flags, 'no-write-skills'),
|
|
170
|
+
writeSkillsIfGeneric: flagBool(flags, 'write-skills-if-generic'),
|
|
158
171
|
json: flagBool(flags, 'json'),
|
|
159
172
|
});
|
|
160
173
|
}
|
|
@@ -192,7 +205,7 @@ function die(msg) {
|
|
|
192
205
|
process.stderr.write(`agentspeak-cli: ${msg}\n`);
|
|
193
206
|
process.exit(2);
|
|
194
207
|
}
|
|
195
|
-
const VERSION = '0.
|
|
208
|
+
const VERSION = '0.4.0';
|
|
196
209
|
main().then((code) => process.exit(code ?? 0), (err) => {
|
|
197
210
|
process.stderr.write(`agentspeak-cli: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
198
211
|
if (process.env.AGENTSPEAK_DEBUG) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,aAAa,EAAmB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type RuntimeHint } from './skill-template.js';
|
|
2
|
+
/**
|
|
3
|
+
* Skill writer -- the second-most important UX improvement after the
|
|
4
|
+
* 3-call fast-path tutorial.
|
|
5
|
+
*
|
|
6
|
+
* Background: even with the fast-path tutorial certifying in ~2s,
|
|
7
|
+
* the candidate agent (Hermes, OpenClaw, Claude Code, etc.) still
|
|
8
|
+
* had to do one `write_file` per SKILL.md the CLI printed. In
|
|
9
|
+
* Yaow's transcript that was 7 file writes plus 2 cleanup deletes
|
|
10
|
+
* plus 2 inspect reads -- ~12 extra tool calls AFTER the tutorial
|
|
11
|
+
* already passed.
|
|
12
|
+
*
|
|
13
|
+
* This module does those writes itself when the runtime is
|
|
14
|
+
* detectable (HERMES_HOME / OPENCLAW_HOME / CLAUDE_CODE_RUNTIME /
|
|
15
|
+
* CURSOR_AGENT). Net result: zero extra agent tool calls. The
|
|
16
|
+
* coding agent only has to invoke `agentspeak-cli init` and we do
|
|
17
|
+
* the rest.
|
|
18
|
+
*
|
|
19
|
+
* Safety:
|
|
20
|
+
* - Only writes inside ~/.<runtime>/skills/agentspeak* paths.
|
|
21
|
+
* - Refuses to write outside the detected runtime dir.
|
|
22
|
+
* - Best-effort: any FS error is logged and skipped, never fatal.
|
|
23
|
+
* - Idempotent: rewriting an existing file is allowed because we
|
|
24
|
+
* also bump skill versions; older content gets replaced cleanly.
|
|
25
|
+
*/
|
|
26
|
+
export interface WriteSkillsResult {
|
|
27
|
+
runtime: RuntimeHint;
|
|
28
|
+
skillsDir: string;
|
|
29
|
+
written: Array<{
|
|
30
|
+
name: string;
|
|
31
|
+
path: string;
|
|
32
|
+
}>;
|
|
33
|
+
prunedStale: string[];
|
|
34
|
+
errors: Array<{
|
|
35
|
+
path: string;
|
|
36
|
+
message: string;
|
|
37
|
+
}>;
|
|
38
|
+
/** True if the runtime was 'generic' and we declined to write. */
|
|
39
|
+
declined: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface WriteSkillsOptions {
|
|
42
|
+
/** Force a specific runtime instead of auto-detecting. */
|
|
43
|
+
runtime?: RuntimeHint;
|
|
44
|
+
/**
|
|
45
|
+
* If true, we'll write into ~/.agentspeak/skills as a fallback when
|
|
46
|
+
* the runtime is 'generic'. Default false (we'd rather decline than
|
|
47
|
+
* write into a directory the runtime won't pick up).
|
|
48
|
+
*/
|
|
49
|
+
writeIfGeneric?: boolean;
|
|
50
|
+
/** Disable the stale-path pruning step. */
|
|
51
|
+
noPrune?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export declare function writeSkills(opts?: WriteSkillsOptions): WriteSkillsResult;
|
|
54
|
+
declare function expandHome(p: string): string;
|
|
55
|
+
declare function isInside(child: string, parent: string): boolean;
|
|
56
|
+
/** Test helper exported so consolidation.test.ts can assert against it. */
|
|
57
|
+
export declare const __testing: {
|
|
58
|
+
STALE_SKILL_PATHS: readonly string[];
|
|
59
|
+
expandHome: typeof expandHome;
|
|
60
|
+
isInside: typeof isInside;
|
|
61
|
+
fileExists: (p: string) => boolean;
|
|
62
|
+
readFile: (p: string) => string;
|
|
63
|
+
listDir: (p: string) => string[];
|
|
64
|
+
};
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=skill-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-writer.d.ts","sourceRoot":"","sources":["../src/skill-writer.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;CACnB;AA4BD,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,iBAAiB,CAoD5E;AA0BD,iBAAS,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAOrC;AAED,iBAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAIxD;AAMD,2EAA2E;AAC3E,eAAO,MAAM,SAAS;;;;oBAIJ,MAAM,KAAG,OAAO;kBAClB,MAAM,KAAG,MAAM;iBAChB,MAAM,KAAG,MAAM,EAAE;CAC/B,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { detectRuntime, listStepSkillIds, renderRootSkill, renderStepSkill, skillsDirFor, } from './skill-template.js';
|
|
5
|
+
/**
|
|
6
|
+
* Known stale or deprecated skill paths that older AgentSpeak
|
|
7
|
+
* onboarding flows wrote into runtime caches. We prune these on
|
|
8
|
+
* every write so re-running `init` against an old install leaves a
|
|
9
|
+
* clean tree without the agent having to manually `rm`.
|
|
10
|
+
*
|
|
11
|
+
* Each path is relative to the skills dir (e.g. `~/.hermes/skills`).
|
|
12
|
+
* Globs not supported -- list explicit dir names. Add new entries
|
|
13
|
+
* here as we deprecate old skill packages.
|
|
14
|
+
*/
|
|
15
|
+
const STALE_SKILL_PATHS = [
|
|
16
|
+
// Old "ai-orchestration" nested skill set from the curl-based era.
|
|
17
|
+
'ai-orchestration/agentspeak-meeting-orchestration',
|
|
18
|
+
'ai-orchestration/agentspeak',
|
|
19
|
+
'ai-orchestration/agentspeak-meeting-setup',
|
|
20
|
+
'agentspeak-meeting-orchestration',
|
|
21
|
+
'agentspeak-meeting-setup',
|
|
22
|
+
// Pre-CLI "join.md" / "register.md" / "invite.md" era one-off skills
|
|
23
|
+
'agentspeak-join',
|
|
24
|
+
'agentspeak-register',
|
|
25
|
+
'agentspeak-invite',
|
|
26
|
+
'agentspeak-run',
|
|
27
|
+
// Deprecated nested layout under agentspeak/ (pre-flat layout).
|
|
28
|
+
'agentspeak/agentspeak-meeting-orchestration',
|
|
29
|
+
];
|
|
30
|
+
export function writeSkills(opts = {}) {
|
|
31
|
+
const runtime = opts.runtime ?? detectRuntime();
|
|
32
|
+
const result = {
|
|
33
|
+
runtime,
|
|
34
|
+
skillsDir: '',
|
|
35
|
+
written: [],
|
|
36
|
+
prunedStale: [],
|
|
37
|
+
errors: [],
|
|
38
|
+
declined: false,
|
|
39
|
+
};
|
|
40
|
+
if (runtime === 'generic' && !opts.writeIfGeneric) {
|
|
41
|
+
result.declined = true;
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
const skillsDir = expandHome(skillsDirFor(runtime));
|
|
45
|
+
result.skillsDir = skillsDir;
|
|
46
|
+
// Prune known stale dirs first so a re-install starts clean.
|
|
47
|
+
if (!opts.noPrune) {
|
|
48
|
+
for (const rel of STALE_SKILL_PATHS) {
|
|
49
|
+
const abs = join(skillsDir, rel);
|
|
50
|
+
if (existsSync(abs)) {
|
|
51
|
+
try {
|
|
52
|
+
rmSync(abs, { recursive: true, force: true });
|
|
53
|
+
result.prunedStale.push(abs);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
result.errors.push({ path: abs, message: errMsg(err) });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Write the omnibus root skill.
|
|
62
|
+
const root = renderRootSkill(runtime);
|
|
63
|
+
const rootAbs = expandHome(root.path);
|
|
64
|
+
if (writeOne(rootAbs, root.body, skillsDir, result)) {
|
|
65
|
+
result.written.push({ name: root.name, path: rootAbs });
|
|
66
|
+
}
|
|
67
|
+
// Write each per-workflow sub-skill.
|
|
68
|
+
for (const stepId of listStepSkillIds()) {
|
|
69
|
+
const block = renderStepSkill(stepId, runtime);
|
|
70
|
+
if (!block)
|
|
71
|
+
continue;
|
|
72
|
+
const abs = expandHome(block.path);
|
|
73
|
+
if (writeOne(abs, block.body, skillsDir, result)) {
|
|
74
|
+
result.written.push({ name: block.name, path: abs });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
function writeOne(abs, body, skillsDir, result) {
|
|
80
|
+
// Defense in depth: refuse to write outside the detected skills dir.
|
|
81
|
+
if (!isInside(abs, skillsDir)) {
|
|
82
|
+
result.errors.push({
|
|
83
|
+
path: abs,
|
|
84
|
+
message: `refused write: not inside ${skillsDir}`,
|
|
85
|
+
});
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
mkdirSync(dirname(abs), { recursive: true });
|
|
90
|
+
writeFileSync(abs, body, { encoding: 'utf8', mode: 0o644 });
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
result.errors.push({ path: abs, message: errMsg(err) });
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function expandHome(p) {
|
|
99
|
+
// Honour $HOME so tests (and Linux containers that override it)
|
|
100
|
+
// resolve correctly. os.homedir() ignores $HOME on macOS.
|
|
101
|
+
const h = process.env.HOME ?? homedir();
|
|
102
|
+
if (p === '~')
|
|
103
|
+
return h;
|
|
104
|
+
if (p.startsWith('~/'))
|
|
105
|
+
return join(h, p.slice(2));
|
|
106
|
+
return p;
|
|
107
|
+
}
|
|
108
|
+
function isInside(child, parent) {
|
|
109
|
+
const c = child.endsWith('/') ? child : child + '/';
|
|
110
|
+
const p = parent.endsWith('/') ? parent : parent + '/';
|
|
111
|
+
return c.startsWith(p);
|
|
112
|
+
}
|
|
113
|
+
function errMsg(e) {
|
|
114
|
+
return e instanceof Error ? e.message : String(e);
|
|
115
|
+
}
|
|
116
|
+
/** Test helper exported so consolidation.test.ts can assert against it. */
|
|
117
|
+
export const __testing = {
|
|
118
|
+
STALE_SKILL_PATHS,
|
|
119
|
+
expandHome,
|
|
120
|
+
isInside,
|
|
121
|
+
fileExists: (p) => existsSync(p) && statSync(p).isFile(),
|
|
122
|
+
readFile: (p) => readFileSync(p, 'utf8'),
|
|
123
|
+
listDir: (p) => (existsSync(p) ? readdirSync(p) : []),
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=skill-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-writer.js","sourceRoot":"","sources":["../src/skill-writer.ts"],"names":[],"mappings":"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"}
|
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,
|
|
3
|
+
"version": "0.4.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.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|