Paquete:
@carloscortezcloud/tinkuy-agent· Repo: breakingthecloud/tinkuy · Ejemplos:examples/· PyPI: no existe — npm-only
Última actualización: 2026-08-25 · v0.1.0 → v0.8.0 · Verificado desde git tag + npm view + tarball diff.
Overview
| Versión | Git tag | Fecha (git) | Fecha (npm) | Resumen |
|---|---|---|---|---|
| 0.8.0 | v0.8.0 |
2026-08-14 | 2026-08-15 00:58 UTC | Feedback hooks + correlación Qhaway |
| 0.7.0 | v0.7.0 |
2026-08-08 | 2026-08-08 14:05 UTC | extractTextToolCall — rescata tool_calls en texto |
| 0.6.0 | (sin tag) | — | 2026-08-02 21:09 UTC | Ontology v1.1: enums, required, cardinality, meta |
| 0.5.0 | v0.5.0 |
2026-08-02 | 2026-08-02 19:49 UTC | Ontology validator determinístico (T-Box/A-Box) |
| 0.4.1 | v0.4.1 |
2026-07-29 | 2026-07-29 23:28 UTC | Parche streaming: onComplete + pnpm |
| 0.4.0 | (sin tag) | — | 2026-07-29 02:27 UTC | Agent.stream() + agentToSSE() |
| 0.3.0 | v0.3.0 |
2026-07-24 | 2026-07-24 22:28 UTC | ConversationStore (memory + KV, TTL) |
| 0.2.0 | v0.2.0 |
2026-07-24 | 2026-07-24 22:11 UTC | ToolRegistry (validate, group) |
| 0.1.1 | v0.1.1 |
2026-07-22 | 2026-07-22 23:36 UTC | Fix ESM type: module |
| 0.1.0 | v0.1.0 |
2026-07-22 | 2026-07-22 23:32 UTC | Initial: Agent + tool loop + budget (467 líneas) |
Nota:
0.4.0y0.6.0se publicaron a npm sin git tag.v0.4.1yv0.7.0son los tags que capturan el estado final de cada rango. Ver matriz de verificación al final.
v0.8.0 — 2026-08-14 — Feedback hooks + Qhaway
Tag: v0.8.0 @ ab81a2b · npm: 0.8.0 @ 2026-08-15T00:58:10.334Z · 62 files, ~178 KB
Agent.feedback(sessionId, rating)+AgentConfig.onFeedback— thumbs up/down vía evento AG-UIfeedbackpor SSEexamples/08-feedback-ui.mjs,09-feedback-qhaway.mjs— correlación session + cost/latencia (QhawaySpan)examples/README.mdtabla 01–09 como guías de desarrollo
await agent.feedback('s-123', { rating: 'thumbs_up', comment: 'clear!' });
→ Ver en GitHub (tag v0.8.0) · → npm 0.8.0
v0.7.0 — 2026-08-08 — extractTextToolCall
Tag: v0.7.0 @ 6fe637b · npm: 0.7.0 @ 2026-08-08T14:05:30.635Z · 62 files, ~173 KB
src/core/text-tool.ts: extractTextToolCall()— detecta{tool,arguments},{name,args/input},{tool_calls:[{function:{name,arguments}}]}con fence stripping- 17 tests · integrado en
Agent.run()yAgent.stream()con anti-loop (max 2/req)
// El LLM responde con texto: '```json\n{"tool":"get_weather","arguments":{"city":"Lima"}}\n```'
// Tinkuy lo detecta, ejecuta get_weather y reinyecta el resultado.
for await (const e of agent.stream('Weather in Lima?')) { /* ... */ }
→ Ver en GitHub (tag v0.7.0) · → npm 0.7.0
v0.6.0 — 2026-08-02 — Ontology v1.1 (npm-only)
npm: 0.6.0 @ 2026-08-02T21:09:20.644Z · 58 files, ~163 KB · Tag: no existe (código entre v0.5.0 y v0.7.0)
loader.ts: parseProperties()— shorthand"UUID"o spec{ type, required, enum, description }+VALID_CARDINALITIES+metatypes.ts: PropertySpec,Cardinality,min_instances/max_instancesvalidator.ts: checkCardinality(),checkInstanceCounts()—cardinality_exceeded,missing_required_property,invalid_enum_value- Commit:
26c3a90 feat(ontology): schema v1.1
v0.5.0 — 2026-08-02 — Ontology validator
Tag: v0.5.0 @ 328f9d9 · npm: 0.5.0 @ 2026-08-02T19:49:26.896Z · 58 files, ~140 KB
- Nuevo
src/ontology/—loader.ts,validator.ts(CPU-only, $0 tokens),types.ts,errors.ts:OntologyViolationException schema/tokenops_ontology.yaml— T-BoxClient/Invoice+HAS_BILLING_DISPUTE+fail_on_unknown_relationAgentConfig.ontology+ hooksonOntologyValidated/onOntologyViolation· export"./ontology"
import { loadOntology } from '@carloscortezcloud/tinkuy-agent/ontology';
const schema = loadOntology(await readFile('schema/tokenops_ontology.yaml','utf8'));
const agent = new Agent({ router, ontology: schema });
Ver docs/ONTOLOGIES-101.md y examples/06-ontology.mjs.
→ Ver en GitHub (tag v0.5.0) · → npm 0.5.0
v0.4.1 — 2026-07-29 — Streaming patch
Tag: v0.4.1 @ d54aafd · npm: 0.4.1 @ 2026-07-29T23:28:19.050Z · 38 files, ~102 KB
- Parche sobre
0.4.0:onCompletehook, fix nombres de paquete en README,tsconfig.excludetests, migración apnpm
→ Ver en GitHub (tag v0.4.1) · → npm 0.4.1
v0.4.0 — 2026-07-29 — Streaming + SSE (npm-only)
npm: 0.4.0 @ 2026-07-29T02:27:24.538Z · 38 files, ~97 KB · Tag: no existe (tag es v0.4.1)
Agent.stream()async generator (start,tool_call,tool_result,chunk,done,error) +src/sse.ts: agentToSSE()para Cloudflare Workers
for await (const evt of agent.stream('Explain FinOps')) {
if (evt.type === 'chunk') process.stdout.write(evt.delta);
}
Ver examples/04-streaming-sse.mjs.
v0.3.0 — 2026-07-24 — ConversationStore
Tag: v0.3.0 @ fa99db6 · npm: 0.3.0 @ 2026-07-24T22:28:37.777Z · 30 files, ~58 KB
src/conversation/index.ts—MemoryConversationStore(sliding window, TTL) +KVConversationStore(Cloudflare KV)agent.run('follow up', { sessionId })con memoria · export"./conversation"
import { MemoryConversationStore } from '@carloscortezcloud/tinkuy-agent/conversation';
const store = new MemoryConversationStore({ maxMessages: 20, ttlMs: 30*60_1000 });
const agent = new Agent({ router, conversationStore: store });
await agent.run('My name is Carlos', { sessionId: 's1' });
await agent.run('What is my name?', { sessionId: 's1' });
→ Ver en GitHub (tag v0.3.0) · → npm 0.3.0
v0.2.0 — 2026-07-24 — ToolRegistry
Tag: v0.2.0 @ 5c830f8 · npm: 0.2.0 @ 2026-07-24T22:11:49.433Z · 26 files, ~48 KB
src/registry/index.ts(169 lines) —register(),registerAll(),byCategory(),validate()(snake_case, desc 10+ chars)- Export
"./registry"
import { ToolRegistry } from '@carloscortezcloud/tinkuy-agent/registry';
const registry = new ToolRegistry();
registry.register(getWeather, 'weather');
registry.validate();
→ Ver en GitHub (tag v0.2.0) · → npm 0.2.0
v0.1.1 — 2026-07-22 — ESM fix
Tag: v0.1.1 @ 5551049 · npm: 0.1.1 @ 2026-07-22T23:36:23.271Z · 22 files
package.json: "type": "module"— fix ESM para Node 20+
→ Ver en GitHub (tag v0.1.1) · → npm 0.1.1
v0.1.0 — 2026-07-22 — Initial
Tag: v0.1.0 @ e534b48 · npm: 0.1.0 @ 2026-07-22T23:32:13.858Z · 22 files
Agent+defineTool+State— loopLLM → tool_calls → execute → feedbacken 467 líneas · exports".","./agent","./tools","./state"
import { Agent, defineTool } from '@carloscortezcloud/tinkuy-agent';
const agent = new Agent({ router, guard, tools: [getWeather] });
await agent.run('Weather in Lima?');
→ Ver en GitHub (tag v0.1.0) · → npm 0.1.0
Matriz de verificación
| Versión | git tag |
git hash |
npm time |
dist/fileCount |
unpackedSize |
|---|---|---|---|---|---|
| 0.8.0 | v0.8.0 | ab81a2b | 2026-08-15T00:58:10.334Z | 62 | 178,608 |
| 0.7.0 | v0.7.0 | 6fe637b | 2026-08-08T14:05:30.635Z | 62 | 173,533 |
| 0.6.0 | — | 26c3a90 | 2026-08-02T21:09:20.644Z | 58 | 163,225 |
| 0.5.0 | v0.5.0 | 328f9d9 | 2026-08-02T19:49:26.896Z | 58 | 140,311 |
| 0.4.1 | v0.4.1 | d54aafd | 2026-07-29T23:28:19.050Z | 38 | 102,084 |
| 0.4.0 | — | 5aea190 | 2026-07-29T02:27:24.538Z | 38 | 97,653 |
| 0.3.0 | v0.3.0 | fa99db6 | 2026-07-24T22:28:37.777Z | 30 | 58,398 |
| 0.2.0 | v0.2.0 | 5c830f8 | 2026-07-24T22:11:49.433Z | 26 | 48,830 |
| 0.1.1 | v0.1.1 | 5551049 | 2026-07-22T23:36:23.271Z | 22 | 36,229 |
| 0.1.0 | v0.1.0 | e534b48 | 2026-07-22T23:32:13.858Z | 22 | 36,209 |
Repro:
git tag --list | sort -V
npm view @carloscortezcloud/tinkuy-agent versions --json
# PyPI: no existe — curl https://pypi.org/pypi/tinkuy/json → Not Found
Siguiente: cada versión arriba se convertirá en 1 blog post en
/blog(o Dev.to) — vercc-roadmap/oss-ecosystem/tinkuy/RELEASES-COMPLETE.md(privado) para slugs, ángulos y calendario editorial.