-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathresult-metadata.ts
More file actions
66 lines (55 loc) · 1.89 KB
/
Copy pathresult-metadata.ts
File metadata and controls
66 lines (55 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**
* DroidResult metadata example.
*
* Runs a prompt with the actual Droid CLI and prints the aggregated `run()`
* result metadata: sessionId, durationMs, turnCount, success, error, and token
* usage.
*
* Usage:
* npx tsx examples/result-metadata.ts
* npx tsx examples/result-metadata.ts "Reply with metadata details."
*
* Requirements: droid CLI installed and logged in. FACTORY_API_KEY is
* optional; stored CLI credentials are used when it is unset.
*/
import assert from 'node:assert/strict';
import { run } from '@factory/droid-sdk';
async function main(): Promise<void> {
const prompt =
process.argv.slice(2).join(' ') ||
'Reply with "Metadata OK" and nothing else.';
console.log(`Sending prompt: "${prompt}"\n`);
const result = await run(prompt, {
apiKey: process.env.FACTORY_API_KEY!,
cwd: process.cwd(),
});
assert.equal(typeof result.sessionId, 'string');
assert.ok(result.sessionId.length > 0);
assert.equal(typeof result.durationMs, 'number');
assert.ok(result.durationMs >= 0);
assert.equal(typeof result.turnCount, 'number');
assert.ok(result.turnCount >= 1);
assert.equal(typeof result.success, 'boolean');
assert.ok(Array.isArray(result.messages));
console.log('=== Result ===');
console.log(result.text);
console.log('\n=== Metadata ===');
console.log(`Session ID: ${result.sessionId}`);
console.log(`Duration: ${result.durationMs}ms`);
console.log(`Turn count: ${result.turnCount}`);
console.log(`Success: ${String(result.success)}`);
console.log(`Messages received: ${result.messages.length}`);
if (result.error) {
console.log(`Error: ${result.error.message}`);
}
if (result.tokenUsage) {
console.log(
`Tokens — input: ${result.tokenUsage.inputTokens}, ` +
`output: ${result.tokenUsage.outputTokens}`
);
}
}
main().catch((error: unknown) => {
console.error('Error:', error);
process.exit(1);
});