<?php
require 'examples/boot.php';
require_once dirname(__DIR__).'/Support.php';
use Cognesy\Tell\Tell;
use Cognesy\Tell\TellEvent;
use Cognesy\Tell\TellRequest;
$project = TellHarnessExample::project();
$eventTypes = [];
try {
$tell = Tell::open($project);
$stream = $tell->runStream(
TellRequest::prompt(
'Inspect the available context, use a tool if one is useful, then '
.'give a concise report.',
)
->maxSteps(5)
->onEvent(
static function (TellEvent $event) use (&$eventTypes): void {
$eventTypes[] = $event->type();
echo '[event] '.$event->type()."\n";
},
),
);
foreach ($stream as $progress) {
echo sprintf(
'[checkpoint] steps=%d tools=%s status=%s%s',
$progress->stepCount(),
$progress->hasToolCalls() ? 'yes' : 'no',
$progress->status()?->value ?? 'unknown',
PHP_EOL,
);
}
$result = $stream->getReturn();
echo "\n=== Tell Result ===\n";
echo $result->text(), "\n";
echo 'Observed events: '.count($eventTypes)."\n";
assert(
$result->isCompleted(),
'Expected a completed streamed Tell result.',
);
assert($eventTypes !== [], 'Expected at least one Tell lifecycle event.');
} finally {
TellHarnessExample::remove($project);
}