@adonis-agora/agent 0.1.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/LICENSE +21 -0
- package/dist/configure.d.ts +18 -0
- package/dist/configure.d.ts.map +1 -0
- package/dist/configure.js +29 -0
- package/dist/configure.js.map +1 -0
- package/dist/providers/agent_provider.d.ts +25 -0
- package/dist/providers/agent_provider.d.ts.map +1 -0
- package/dist/providers/agent_provider.js +511 -0
- package/dist/providers/agent_provider.js.map +1 -0
- package/dist/src/actor-resolver.d.ts +41 -0
- package/dist/src/actor-resolver.d.ts.map +1 -0
- package/dist/src/agent-deps-factory.d.ts +59 -0
- package/dist/src/agent-deps-factory.d.ts.map +1 -0
- package/dist/src/agent-deps-factory.js +111 -0
- package/dist/src/agent-deps-factory.js.map +1 -0
- package/dist/src/agent-deps.d.ts +42 -0
- package/dist/src/agent-deps.d.ts.map +1 -0
- package/dist/src/agent-deps.js +5 -0
- package/dist/src/agent-deps.js.map +1 -0
- package/dist/src/agent-loop.d.ts +101 -0
- package/dist/src/agent-loop.d.ts.map +1 -0
- package/dist/src/agent-loop.js +396 -0
- package/dist/src/agent-loop.js.map +1 -0
- package/dist/src/agent-registry.d.ts +10 -0
- package/dist/src/agent-registry.d.ts.map +1 -0
- package/dist/src/agent-service.d.ts +50 -0
- package/dist/src/agent-service.d.ts.map +1 -0
- package/dist/src/agent-service.js +82 -0
- package/dist/src/agent-service.js.map +1 -0
- package/dist/src/ai-sdk/ai-sdk-model.d.ts +17 -0
- package/dist/src/ai-sdk/ai-sdk-model.d.ts.map +1 -0
- package/dist/src/ai-sdk/ai-sdk-model.js +263 -0
- package/dist/src/ai-sdk/ai-sdk-model.js.map +1 -0
- package/dist/src/ai-sdk/index.d.ts +2 -0
- package/dist/src/ai-sdk/index.d.ts.map +1 -0
- package/dist/src/ai-tool-ref.d.ts +79 -0
- package/dist/src/ai-tool-ref.d.ts.map +1 -0
- package/dist/src/ai-tool-ref.js +81 -0
- package/dist/src/ai-tool-ref.js.map +1 -0
- package/dist/src/authorizer.d.ts +18 -0
- package/dist/src/authorizer.d.ts.map +1 -0
- package/dist/src/authz/authz-tool-authorizer.d.ts +85 -0
- package/dist/src/authz/authz-tool-authorizer.d.ts.map +1 -0
- package/dist/src/authz/authz-tool-authorizer.js +63 -0
- package/dist/src/authz/authz-tool-authorizer.js.map +1 -0
- package/dist/src/authz/index.d.ts +3 -0
- package/dist/src/authz/index.d.ts.map +1 -0
- package/dist/src/authz/index.js +2 -0
- package/dist/src/authz/index.js.map +1 -0
- package/dist/src/data/data-tool.d.ts +64 -0
- package/dist/src/data/data-tool.d.ts.map +1 -0
- package/dist/src/data/data-tool.js +146 -0
- package/dist/src/data/data-tool.js.map +1 -0
- package/dist/src/data/index.d.ts +7 -0
- package/dist/src/data/index.d.ts.map +1 -0
- package/dist/src/data/index.js +7 -0
- package/dist/src/data/index.js.map +1 -0
- package/dist/src/data/limit.d.ts +12 -0
- package/dist/src/data/limit.d.ts.map +1 -0
- package/dist/src/data/limit.js +29 -0
- package/dist/src/data/limit.js.map +1 -0
- package/dist/src/data/parser.d.ts +27 -0
- package/dist/src/data/parser.d.ts.map +1 -0
- package/dist/src/data/parser.js +18 -0
- package/dist/src/data/parser.js.map +1 -0
- package/dist/src/data/sql-validator.d.ts +37 -0
- package/dist/src/data/sql-validator.d.ts.map +1 -0
- package/dist/src/data/sql-validator.js +92 -0
- package/dist/src/data/sql-validator.js.map +1 -0
- package/dist/src/data/table-access.d.ts +40 -0
- package/dist/src/data/table-access.d.ts.map +1 -0
- package/dist/src/data/table-access.js +41 -0
- package/dist/src/data/table-access.js.map +1 -0
- package/dist/src/data/tenant-scope.d.ts +39 -0
- package/dist/src/data/tenant-scope.d.ts.map +1 -0
- package/dist/src/data/tenant-scope.js +126 -0
- package/dist/src/data/tenant-scope.js.map +1 -0
- package/dist/src/define_config.d.ts +153 -0
- package/dist/src/define_config.d.ts.map +1 -0
- package/dist/src/define_config.js +7 -0
- package/dist/src/define_config.js.map +1 -0
- package/dist/src/diagnostics.d.ts +82 -0
- package/dist/src/diagnostics.d.ts.map +1 -0
- package/dist/src/diagnostics.js +50 -0
- package/dist/src/diagnostics.js.map +1 -0
- package/dist/src/durable/agent-run-context.d.ts +24 -0
- package/dist/src/durable/agent-run-context.d.ts.map +1 -0
- package/dist/src/durable/agent-run-context.js +17 -0
- package/dist/src/durable/agent-run-context.js.map +1 -0
- package/dist/src/durable/agent-run-workflow.d.ts +37 -0
- package/dist/src/durable/agent-run-workflow.d.ts.map +1 -0
- package/dist/src/durable/agent-run-workflow.js +128 -0
- package/dist/src/durable/agent-run-workflow.js.map +1 -0
- package/dist/src/durable/durable-agent-runner.d.ts +25 -0
- package/dist/src/durable/durable-agent-runner.d.ts.map +1 -0
- package/dist/src/durable/durable-agent-runner.js +59 -0
- package/dist/src/durable/durable-agent-runner.js.map +1 -0
- package/dist/src/durable/index.d.ts +17 -0
- package/dist/src/durable/index.d.ts.map +1 -0
- package/dist/src/durable/index.js +20 -0
- package/dist/src/durable/index.js.map +1 -0
- package/dist/src/index.d.ts +55 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +45 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/personas.d.ts +7 -0
- package/dist/src/personas.d.ts.map +1 -0
- package/dist/src/rag/chunk.d.ts +14 -0
- package/dist/src/rag/chunk.d.ts.map +1 -0
- package/dist/src/rag/chunk.js +42 -0
- package/dist/src/rag/chunk.js.map +1 -0
- package/dist/src/rag/embedding-retriever.d.ts +15 -0
- package/dist/src/rag/embedding-retriever.d.ts.map +1 -0
- package/dist/src/rag/embedding-retriever.js +24 -0
- package/dist/src/rag/embedding-retriever.js.map +1 -0
- package/dist/src/rag/filter.d.ts +6 -0
- package/dist/src/rag/filter.d.ts.map +1 -0
- package/dist/src/rag/filter.js +11 -0
- package/dist/src/rag/filter.js.map +1 -0
- package/dist/src/rag/index.d.ts +8 -0
- package/dist/src/rag/index.d.ts.map +1 -0
- package/dist/src/rag/index.js +8 -0
- package/dist/src/rag/index.js.map +1 -0
- package/dist/src/rag/ingest.d.ts +33 -0
- package/dist/src/rag/ingest.d.ts.map +1 -0
- package/dist/src/rag/ingest.js +37 -0
- package/dist/src/rag/ingest.js.map +1 -0
- package/dist/src/rag/memory-vector-store.d.ts +16 -0
- package/dist/src/rag/memory-vector-store.d.ts.map +1 -0
- package/dist/src/rag/memory-vector-store.js +70 -0
- package/dist/src/rag/memory-vector-store.js.map +1 -0
- package/dist/src/rag/pg-vector-store.d.ts +84 -0
- package/dist/src/rag/pg-vector-store.d.ts.map +1 -0
- package/dist/src/rag/pg-vector-store.js +220 -0
- package/dist/src/rag/pg-vector-store.js.map +1 -0
- package/dist/src/rag/vector-store.d.ts +47 -0
- package/dist/src/rag/vector-store.d.ts.map +1 -0
- package/dist/src/rag/vector-store.js +5 -0
- package/dist/src/rag/vector-store.js.map +1 -0
- package/dist/src/rag-media/diagnostics.d.ts +43 -0
- package/dist/src/rag-media/diagnostics.d.ts.map +1 -0
- package/dist/src/rag-media/diagnostics.js +36 -0
- package/dist/src/rag-media/diagnostics.js.map +1 -0
- package/dist/src/rag-media/index.d.ts +5 -0
- package/dist/src/rag-media/index.d.ts.map +1 -0
- package/dist/src/rag-media/index.js +5 -0
- package/dist/src/rag-media/index.js.map +1 -0
- package/dist/src/rag-media/media-events.d.ts +23 -0
- package/dist/src/rag-media/media-events.d.ts.map +1 -0
- package/dist/src/rag-media/media-events.js +28 -0
- package/dist/src/rag-media/media-events.js.map +1 -0
- package/dist/src/rag-media/media-rag-ingestion.d.ts +155 -0
- package/dist/src/rag-media/media-rag-ingestion.d.ts.map +1 -0
- package/dist/src/rag-media/media-rag-ingestion.js +204 -0
- package/dist/src/rag-media/media-rag-ingestion.js.map +1 -0
- package/dist/src/rag-media/text-extractor.d.ts +46 -0
- package/dist/src/rag-media/text-extractor.d.ts.map +1 -0
- package/dist/src/rag-media/text-extractor.js +92 -0
- package/dist/src/rag-media/text-extractor.js.map +1 -0
- package/dist/src/redis-stream-client.d.ts +29 -0
- package/dist/src/redis-stream-client.d.ts.map +1 -0
- package/dist/src/redis-stream-client.js +2 -0
- package/dist/src/redis-stream-client.js.map +1 -0
- package/dist/src/redis-token-stream-sink.d.ts +36 -0
- package/dist/src/redis-token-stream-sink.d.ts.map +1 -0
- package/dist/src/redis-token-stream-sink.js +94 -0
- package/dist/src/redis-token-stream-sink.js.map +1 -0
- package/dist/src/runners/inline-agent-runner.d.ts +26 -0
- package/dist/src/runners/inline-agent-runner.d.ts.map +1 -0
- package/dist/src/runners/inline-agent-runner.js +85 -0
- package/dist/src/runners/inline-agent-runner.js.map +1 -0
- package/dist/src/spi/actor-directory.d.ts +23 -0
- package/dist/src/spi/actor-directory.d.ts.map +1 -0
- package/dist/src/spi/actor-directory.js +2 -0
- package/dist/src/spi/actor-directory.js.map +1 -0
- package/dist/src/spi/actor-resolver.d.ts +18 -0
- package/dist/src/spi/actor-resolver.d.ts.map +1 -0
- package/dist/src/spi/agent-runner.d.ts +20 -0
- package/dist/src/spi/agent-runner.d.ts.map +1 -0
- package/dist/src/spi/agent-store.d.ts +104 -0
- package/dist/src/spi/agent-store.d.ts.map +1 -0
- package/dist/src/spi/agent-store.js +2 -0
- package/dist/src/spi/agent-store.js.map +1 -0
- package/dist/src/spi/attachment-staging.d.ts +27 -0
- package/dist/src/spi/attachment-staging.d.ts.map +1 -0
- package/dist/src/spi/attachment-staging.js +2 -0
- package/dist/src/spi/attachment-staging.js.map +1 -0
- package/dist/src/spi/embedding-provider.d.ts +12 -0
- package/dist/src/spi/embedding-provider.d.ts.map +1 -0
- package/dist/src/spi/embedding-provider.js +2 -0
- package/dist/src/spi/embedding-provider.js.map +1 -0
- package/dist/src/spi/governance-queries.d.ts +215 -0
- package/dist/src/spi/governance-queries.d.ts.map +1 -0
- package/dist/src/spi/governance-queries.js +15 -0
- package/dist/src/spi/governance-queries.js.map +1 -0
- package/dist/src/spi/model-provider.d.ts +41 -0
- package/dist/src/spi/model-provider.d.ts.map +1 -0
- package/dist/src/spi/pricing-store.d.ts +45 -0
- package/dist/src/spi/pricing-store.d.ts.map +1 -0
- package/dist/src/spi/pricing-store.js +24 -0
- package/dist/src/spi/pricing-store.js.map +1 -0
- package/dist/src/spi/quota-store.d.ts +7 -0
- package/dist/src/spi/quota-store.d.ts.map +1 -0
- package/dist/src/spi/reranker.d.ts +17 -0
- package/dist/src/spi/reranker.d.ts.map +1 -0
- package/dist/src/spi/reranker.js +2 -0
- package/dist/src/spi/reranker.js.map +1 -0
- package/dist/src/spi/retriever.d.ts +28 -0
- package/dist/src/spi/retriever.d.ts.map +1 -0
- package/dist/src/spi/retriever.js +11 -0
- package/dist/src/spi/retriever.js.map +1 -0
- package/dist/src/spi/roles-policy.d.ts +11 -0
- package/dist/src/spi/roles-policy.d.ts.map +1 -0
- package/dist/src/spi/tool.d.ts +21 -0
- package/dist/src/spi/tool.d.ts.map +1 -0
- package/dist/src/stores/factory.d.ts +363 -0
- package/dist/src/stores/factory.d.ts.map +1 -0
- package/dist/src/stores/factory.js +341 -0
- package/dist/src/stores/factory.js.map +1 -0
- package/dist/src/stores/ledger-quota.d.ts +23 -0
- package/dist/src/stores/ledger-quota.d.ts.map +1 -0
- package/dist/src/stores/ledger-quota.js +32 -0
- package/dist/src/stores/ledger-quota.js.map +1 -0
- package/dist/src/stores/lucid-governance-queries.d.ts +73 -0
- package/dist/src/stores/lucid-governance-queries.d.ts.map +1 -0
- package/dist/src/stores/lucid-governance-queries.js +510 -0
- package/dist/src/stores/lucid-governance-queries.js.map +1 -0
- package/dist/src/stores/lucid-pricing.d.ts +20 -0
- package/dist/src/stores/lucid-pricing.d.ts.map +1 -0
- package/dist/src/stores/lucid-pricing.js +67 -0
- package/dist/src/stores/lucid-pricing.js.map +1 -0
- package/dist/src/stores/lucid-schema.d.ts +37 -0
- package/dist/src/stores/lucid-schema.d.ts.map +1 -0
- package/dist/src/stores/lucid-schema.js +139 -0
- package/dist/src/stores/lucid-schema.js.map +1 -0
- package/dist/src/stores/lucid.d.ts +73 -0
- package/dist/src/stores/lucid.d.ts.map +1 -0
- package/dist/src/stores/lucid.js +400 -0
- package/dist/src/stores/lucid.js.map +1 -0
- package/dist/src/telescope/dashboard.d.ts +21 -0
- package/dist/src/telescope/dashboard.d.ts.map +1 -0
- package/dist/src/telescope/dashboard.js +140 -0
- package/dist/src/telescope/dashboard.js.map +1 -0
- package/dist/src/telescope/data-providers.d.ts +39 -0
- package/dist/src/telescope/data-providers.d.ts.map +1 -0
- package/dist/src/telescope/data-providers.js +345 -0
- package/dist/src/telescope/data-providers.js.map +1 -0
- package/dist/src/telescope/extension.d.ts +27 -0
- package/dist/src/telescope/extension.d.ts.map +1 -0
- package/dist/src/telescope/extension.js +45 -0
- package/dist/src/telescope/extension.js.map +1 -0
- package/dist/src/telescope/index.d.ts +5 -0
- package/dist/src/telescope/index.d.ts.map +1 -0
- package/dist/src/telescope/index.js +4 -0
- package/dist/src/telescope/index.js.map +1 -0
- package/dist/src/telescope/telescope-sdk.d.ts +126 -0
- package/dist/src/telescope/telescope-sdk.d.ts.map +1 -0
- package/dist/src/telescope/telescope-sdk.js +15 -0
- package/dist/src/telescope/telescope-sdk.js.map +1 -0
- package/dist/src/testing/fake-embedding-provider.d.ts +37 -0
- package/dist/src/testing/fake-embedding-provider.d.ts.map +1 -0
- package/dist/src/testing/fake-embedding-provider.js +67 -0
- package/dist/src/testing/fake-embedding-provider.js.map +1 -0
- package/dist/src/testing/fake-media.d.ts +44 -0
- package/dist/src/testing/fake-media.d.ts.map +1 -0
- package/dist/src/testing/fake-media.js +69 -0
- package/dist/src/testing/fake-media.js.map +1 -0
- package/dist/src/testing/fake-model-provider.d.ts +29 -0
- package/dist/src/testing/fake-model-provider.d.ts.map +1 -0
- package/dist/src/testing/in-memory-actor-directory.d.ts +14 -0
- package/dist/src/testing/in-memory-actor-directory.d.ts.map +1 -0
- package/dist/src/testing/in-memory-actor-directory.js +27 -0
- package/dist/src/testing/in-memory-actor-directory.js.map +1 -0
- package/dist/src/testing/in-memory-attachment-staging.d.ts +22 -0
- package/dist/src/testing/in-memory-attachment-staging.d.ts.map +1 -0
- package/dist/src/testing/in-memory-attachment-staging.js +28 -0
- package/dist/src/testing/in-memory-attachment-staging.js.map +1 -0
- package/dist/src/testing/in-memory-governance-queries.d.ts +34 -0
- package/dist/src/testing/in-memory-governance-queries.d.ts.map +1 -0
- package/dist/src/testing/in-memory-governance-queries.js +373 -0
- package/dist/src/testing/in-memory-governance-queries.js.map +1 -0
- package/dist/src/testing/in-memory-pricing.d.ts +13 -0
- package/dist/src/testing/in-memory-pricing.d.ts.map +1 -0
- package/dist/src/testing/in-memory-pricing.js +27 -0
- package/dist/src/testing/in-memory-pricing.js.map +1 -0
- package/dist/src/testing/in-memory-quota.d.ts +11 -0
- package/dist/src/testing/in-memory-quota.d.ts.map +1 -0
- package/dist/src/testing/in-memory-sink.d.ts +14 -0
- package/dist/src/testing/in-memory-sink.d.ts.map +1 -0
- package/dist/src/testing/in-memory-store.d.ts +119 -0
- package/dist/src/testing/in-memory-store.d.ts.map +1 -0
- package/dist/src/testing/in-memory-store.js +317 -0
- package/dist/src/testing/in-memory-store.js.map +1 -0
- package/dist/src/testing/index.d.ts +11 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +11 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/tool-discovery.d.ts +35 -0
- package/dist/src/tool-discovery.d.ts.map +1 -0
- package/dist/src/tool-registry.d.ts +45 -0
- package/dist/src/tool-registry.d.ts.map +1 -0
- package/dist/src/tool-retry.d.ts +56 -0
- package/dist/src/tool-retry.d.ts.map +1 -0
- package/dist/src/tool-retry.js +95 -0
- package/dist/src/tool-retry.js.map +1 -0
- package/dist/src/types.d.ts +222 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/stubs/config/agent.stub +55 -0
- package/dist/stubs/database/migrations/create_agent_rag_chunks.stub +41 -0
- package/dist/stubs/database/migrations/create_agent_run_tracking.stub +80 -0
- package/dist/stubs/database/migrations/create_agent_tables.stub +113 -0
- package/package.json +174 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/** A fully in-memory `AgentStore` for tests and the offline demo. */
|
|
2
|
+
export class InMemoryAgentStore {
|
|
3
|
+
threads = new Map();
|
|
4
|
+
toolCalls = new Map();
|
|
5
|
+
usage = [];
|
|
6
|
+
runs = new Map();
|
|
7
|
+
/** messageId → runId, so run-detail can gather a run's messages without mutating `StoredMessage`. */
|
|
8
|
+
messageRunIds = new Map();
|
|
9
|
+
now() {
|
|
10
|
+
return new Date().toISOString();
|
|
11
|
+
}
|
|
12
|
+
async createThread(input) {
|
|
13
|
+
const id = crypto.randomUUID();
|
|
14
|
+
const ts = this.now();
|
|
15
|
+
const row = {
|
|
16
|
+
id,
|
|
17
|
+
actorRef: input.actor.id,
|
|
18
|
+
title: input.title ?? 'New chat',
|
|
19
|
+
persona: input.persona,
|
|
20
|
+
transient: input.transient ?? false,
|
|
21
|
+
createdAt: ts,
|
|
22
|
+
updatedAt: ts,
|
|
23
|
+
messages: [],
|
|
24
|
+
};
|
|
25
|
+
this.threads.set(id, row);
|
|
26
|
+
return this.toSummary(row);
|
|
27
|
+
}
|
|
28
|
+
async getThread(threadId) {
|
|
29
|
+
const row = this.threads.get(threadId);
|
|
30
|
+
if (row === undefined) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
...this.toSummary(row),
|
|
35
|
+
messages: row.messages,
|
|
36
|
+
...(row.activeStreamId !== undefined ? { activeStreamId: row.activeStreamId } : {}),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
async listThreads(actorRef, limit = 50) {
|
|
40
|
+
return [...this.threads.values()]
|
|
41
|
+
.filter((row) => row.actorRef === actorRef && !row.transient)
|
|
42
|
+
.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt))
|
|
43
|
+
.slice(0, limit)
|
|
44
|
+
.map((row) => this.toSummary(row));
|
|
45
|
+
}
|
|
46
|
+
async softDeleteThread(threadId) {
|
|
47
|
+
this.threads.delete(threadId);
|
|
48
|
+
}
|
|
49
|
+
async forkThread(threadId, fromMessageId) {
|
|
50
|
+
const source = this.threads.get(threadId);
|
|
51
|
+
if (source === undefined) {
|
|
52
|
+
throw new Error(`thread ${threadId} not found`);
|
|
53
|
+
}
|
|
54
|
+
const cutoff = source.messages.findIndex((message) => message.id === fromMessageId);
|
|
55
|
+
const kept = cutoff >= 0 ? source.messages.slice(0, cutoff + 1) : [...source.messages];
|
|
56
|
+
const id = crypto.randomUUID();
|
|
57
|
+
const ts = this.now();
|
|
58
|
+
const row = {
|
|
59
|
+
id,
|
|
60
|
+
actorRef: source.actorRef,
|
|
61
|
+
title: source.title,
|
|
62
|
+
persona: source.persona,
|
|
63
|
+
transient: false,
|
|
64
|
+
createdAt: ts,
|
|
65
|
+
updatedAt: ts,
|
|
66
|
+
messages: kept.map((message) => ({ ...message })),
|
|
67
|
+
};
|
|
68
|
+
this.threads.set(id, row);
|
|
69
|
+
return this.toSummary(row);
|
|
70
|
+
}
|
|
71
|
+
async setTitle(threadId, title) {
|
|
72
|
+
const row = this.threads.get(threadId);
|
|
73
|
+
if (row !== undefined) {
|
|
74
|
+
row.title = title;
|
|
75
|
+
row.updatedAt = this.now();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async setActiveStream(threadId, runId) {
|
|
79
|
+
const row = this.threads.get(threadId);
|
|
80
|
+
if (row !== undefined) {
|
|
81
|
+
if (runId === null) {
|
|
82
|
+
// biome-ignore lint/performance/noDelete: exactOptionalPropertyTypes forbids assigning undefined to an optional prop
|
|
83
|
+
delete row.activeStreamId;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
row.activeStreamId = runId;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async appendMessage(input) {
|
|
91
|
+
const row = this.threads.get(input.threadId);
|
|
92
|
+
if (row === undefined) {
|
|
93
|
+
throw new Error(`thread ${input.threadId} not found`);
|
|
94
|
+
}
|
|
95
|
+
const message = {
|
|
96
|
+
id: crypto.randomUUID(),
|
|
97
|
+
role: input.role,
|
|
98
|
+
content: input.content,
|
|
99
|
+
createdAt: this.now(),
|
|
100
|
+
...(input.toolCalls !== undefined ? { toolCalls: input.toolCalls } : {}),
|
|
101
|
+
...(input.toolResults !== undefined ? { toolResults: input.toolResults } : {}),
|
|
102
|
+
...(input.attachments !== undefined ? { attachments: input.attachments } : {}),
|
|
103
|
+
...(input.followUps !== undefined ? { followUps: input.followUps } : {}),
|
|
104
|
+
...(input.usage !== undefined ? { usage: input.usage } : {}),
|
|
105
|
+
};
|
|
106
|
+
row.messages.push(message);
|
|
107
|
+
row.updatedAt = message.createdAt;
|
|
108
|
+
if (input.runId !== undefined) {
|
|
109
|
+
this.messageRunIds.set(message.id, input.runId);
|
|
110
|
+
}
|
|
111
|
+
return message;
|
|
112
|
+
}
|
|
113
|
+
async truncateFrom(threadId, messageId) {
|
|
114
|
+
const row = this.threads.get(threadId);
|
|
115
|
+
if (row === undefined) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const cutoff = row.messages.findIndex((message) => message.id === messageId);
|
|
119
|
+
if (cutoff >= 0) {
|
|
120
|
+
row.messages = row.messages.slice(0, cutoff);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async recordToolCall(input) {
|
|
124
|
+
this.toolCalls.set(input.toolCallId, {
|
|
125
|
+
toolCallId: input.toolCallId,
|
|
126
|
+
messageId: input.messageId,
|
|
127
|
+
threadId: this.threadIdForMessage(input.messageId) ?? '',
|
|
128
|
+
toolName: input.toolName,
|
|
129
|
+
toolType: input.toolType,
|
|
130
|
+
input: input.input,
|
|
131
|
+
status: input.status,
|
|
132
|
+
createdAt: this.now(),
|
|
133
|
+
...(input.runId !== undefined ? { runId: input.runId } : {}),
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
async updateToolCall(input) {
|
|
137
|
+
const row = this.toolCalls.get(input.toolCallId);
|
|
138
|
+
if (row === undefined) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
row.status = input.status;
|
|
142
|
+
if (input.output !== undefined) {
|
|
143
|
+
row.output = input.output;
|
|
144
|
+
}
|
|
145
|
+
if (input.error !== undefined) {
|
|
146
|
+
row.error = input.error;
|
|
147
|
+
}
|
|
148
|
+
if (input.executionMs !== undefined) {
|
|
149
|
+
row.executionMs = input.executionMs;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
async recordUsage(input) {
|
|
153
|
+
const createdAt = this.now();
|
|
154
|
+
this.usage.push({
|
|
155
|
+
actorRef: input.actorRef,
|
|
156
|
+
threadId: input.threadId,
|
|
157
|
+
modelId: input.modelId,
|
|
158
|
+
purpose: input.purpose,
|
|
159
|
+
inputTokens: input.usage.inputTokens,
|
|
160
|
+
outputTokens: input.usage.outputTokens,
|
|
161
|
+
day: createdAt.slice(0, 10),
|
|
162
|
+
createdAt,
|
|
163
|
+
...(input.runId !== undefined ? { runId: input.runId } : {}),
|
|
164
|
+
...(input.usage.cacheWriteTokens !== undefined
|
|
165
|
+
? { cacheWriteTokens: input.usage.cacheWriteTokens }
|
|
166
|
+
: {}),
|
|
167
|
+
...(input.usage.cacheReadTokens !== undefined
|
|
168
|
+
? { cacheReadTokens: input.usage.cacheReadTokens }
|
|
169
|
+
: {}),
|
|
170
|
+
...(input.costUsd !== undefined ? { costUsd: input.costUsd } : {}),
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
async recordRunStart(input) {
|
|
174
|
+
this.runs.set(input.runId, {
|
|
175
|
+
runId: input.runId,
|
|
176
|
+
threadId: input.threadId,
|
|
177
|
+
actorRef: input.actor.id,
|
|
178
|
+
status: 'running',
|
|
179
|
+
startedAt: this.now(),
|
|
180
|
+
stepCount: 0,
|
|
181
|
+
inputTokens: 0,
|
|
182
|
+
outputTokens: 0,
|
|
183
|
+
durable: input.durable ?? false,
|
|
184
|
+
...(input.actor.tenantRef !== undefined ? { tenantRef: input.actor.tenantRef } : {}),
|
|
185
|
+
...(input.agentName !== undefined ? { agentName: input.agentName } : {}),
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
async recordRunEnd(input) {
|
|
189
|
+
const row = this.runs.get(input.runId);
|
|
190
|
+
// First terminal wins: a no-op when the run is unknown or already settled (mirrors the Lucid twin).
|
|
191
|
+
if (row === undefined || row.status !== 'running') {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
row.status = input.status;
|
|
195
|
+
row.finishedAt =
|
|
196
|
+
input.finishedAt !== undefined ? new Date(input.finishedAt).toISOString() : this.now();
|
|
197
|
+
if (input.stepCount !== undefined)
|
|
198
|
+
row.stepCount = input.stepCount;
|
|
199
|
+
if (input.inputTokens !== undefined)
|
|
200
|
+
row.inputTokens = input.inputTokens;
|
|
201
|
+
if (input.outputTokens !== undefined)
|
|
202
|
+
row.outputTokens = input.outputTokens;
|
|
203
|
+
if (input.costUsd !== undefined)
|
|
204
|
+
row.costUsd = input.costUsd;
|
|
205
|
+
if (input.error !== undefined)
|
|
206
|
+
row.error = input.error;
|
|
207
|
+
}
|
|
208
|
+
async quotaToday(actorRef, day) {
|
|
209
|
+
const usedTokens = this.usage
|
|
210
|
+
.filter((row) => row.actorRef === actorRef && row.day === day)
|
|
211
|
+
.reduce((sum, row) => sum + row.inputTokens + row.outputTokens, 0);
|
|
212
|
+
return { usedTokens };
|
|
213
|
+
}
|
|
214
|
+
/** Test helper: read the recorded usage rows (modelId + token totals). */
|
|
215
|
+
usageRows() {
|
|
216
|
+
return this.usage.map((row) => ({
|
|
217
|
+
actorRef: row.actorRef,
|
|
218
|
+
tokens: row.inputTokens + row.outputTokens,
|
|
219
|
+
modelId: row.modelId,
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
/** Governance read-model feed: recorded usage rows with the input/output split + thread/day. */
|
|
223
|
+
governanceUsage() {
|
|
224
|
+
return this.usage.map((row) => ({
|
|
225
|
+
actorRef: row.actorRef,
|
|
226
|
+
threadId: row.threadId,
|
|
227
|
+
modelId: row.modelId,
|
|
228
|
+
purpose: row.purpose,
|
|
229
|
+
inputTokens: row.inputTokens,
|
|
230
|
+
outputTokens: row.outputTokens,
|
|
231
|
+
day: row.day,
|
|
232
|
+
createdAt: row.createdAt,
|
|
233
|
+
...(row.runId !== undefined ? { runId: row.runId } : {}),
|
|
234
|
+
...(row.cacheWriteTokens !== undefined ? { cacheWriteTokens: row.cacheWriteTokens } : {}),
|
|
235
|
+
...(row.cacheReadTokens !== undefined ? { cacheReadTokens: row.cacheReadTokens } : {}),
|
|
236
|
+
...(row.costUsd !== undefined ? { costUsd: row.costUsd } : {}),
|
|
237
|
+
}));
|
|
238
|
+
}
|
|
239
|
+
/** Governance read-model feed: recorded tool calls with the resolved thread + timestamp. */
|
|
240
|
+
governanceToolCalls() {
|
|
241
|
+
return [...this.toolCalls.values()].map((row) => ({
|
|
242
|
+
toolCallId: row.toolCallId,
|
|
243
|
+
toolName: row.toolName,
|
|
244
|
+
toolType: row.toolType,
|
|
245
|
+
status: row.status,
|
|
246
|
+
threadId: row.threadId,
|
|
247
|
+
input: row.input,
|
|
248
|
+
createdAt: row.createdAt,
|
|
249
|
+
...(row.runId !== undefined ? { runId: row.runId } : {}),
|
|
250
|
+
...(row.output !== undefined ? { output: row.output } : {}),
|
|
251
|
+
...(row.error !== undefined ? { error: row.error } : {}),
|
|
252
|
+
...(row.executionMs !== undefined ? { executionMs: row.executionMs } : {}),
|
|
253
|
+
}));
|
|
254
|
+
}
|
|
255
|
+
/** Governance read-model feed: recorded runs (full lifecycle + rollups). */
|
|
256
|
+
governanceRuns() {
|
|
257
|
+
return [...this.runs.values()].map((row) => ({ ...row }));
|
|
258
|
+
}
|
|
259
|
+
/** Governance read-model feed: recorded messages with their thread + run correlation. */
|
|
260
|
+
governanceMessages() {
|
|
261
|
+
const rows = [];
|
|
262
|
+
for (const thread of this.threads.values()) {
|
|
263
|
+
for (const message of thread.messages) {
|
|
264
|
+
const runId = this.messageRunIds.get(message.id);
|
|
265
|
+
rows.push({
|
|
266
|
+
id: message.id,
|
|
267
|
+
threadId: thread.id,
|
|
268
|
+
role: message.role,
|
|
269
|
+
content: message.content,
|
|
270
|
+
createdAt: message.createdAt,
|
|
271
|
+
...(runId !== undefined ? { runId } : {}),
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return rows;
|
|
276
|
+
}
|
|
277
|
+
/** Governance read-model feed: thread metadata (title/actor/message count/last activity). */
|
|
278
|
+
governanceThreads() {
|
|
279
|
+
return [...this.threads.values()].map((row) => ({
|
|
280
|
+
threadId: row.id,
|
|
281
|
+
title: row.title,
|
|
282
|
+
actorRef: row.actorRef,
|
|
283
|
+
messageCount: row.messages.length,
|
|
284
|
+
updatedAt: row.updatedAt,
|
|
285
|
+
}));
|
|
286
|
+
}
|
|
287
|
+
threadIdForMessage(messageId) {
|
|
288
|
+
for (const [threadId, row] of this.threads) {
|
|
289
|
+
if (row.messages.some((message) => message.id === messageId)) {
|
|
290
|
+
return threadId;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return undefined;
|
|
294
|
+
}
|
|
295
|
+
/** Test helper: read the recorded tool-call rows. */
|
|
296
|
+
toolCallRows() {
|
|
297
|
+
return [...this.toolCalls.values()].map((row) => ({
|
|
298
|
+
toolName: row.toolName,
|
|
299
|
+
status: row.status,
|
|
300
|
+
...(row.output !== undefined ? { output: row.output } : {}),
|
|
301
|
+
}));
|
|
302
|
+
}
|
|
303
|
+
toSummary(row) {
|
|
304
|
+
const last = row.messages[row.messages.length - 1];
|
|
305
|
+
return {
|
|
306
|
+
id: row.id,
|
|
307
|
+
title: row.title,
|
|
308
|
+
persona: row.persona,
|
|
309
|
+
transient: row.transient,
|
|
310
|
+
createdAt: row.createdAt,
|
|
311
|
+
updatedAt: row.updatedAt,
|
|
312
|
+
...(row.pinnedAt !== undefined ? { pinnedAt: row.pinnedAt } : {}),
|
|
313
|
+
...(last !== undefined ? { lastMessagePreview: last.content.slice(0, 120) } : {}),
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=in-memory-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../../../src/testing/in-memory-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { FakeModelProvider, echoScript, type FakeTurn, type FakeScript, } from './fake-model-provider.js';
|
|
2
|
+
export { InMemoryAgentStore, type GovernanceUsageRow, type GovernanceToolCallRow, type GovernanceThreadRow, type GovernanceRunRow, type GovernanceMessageRow, } from './in-memory-store.js';
|
|
3
|
+
export { InMemoryGovernanceQueries, type InMemoryModelPrice, } from './in-memory-governance-queries.js';
|
|
4
|
+
export { InMemoryTokenStreamSink } from './in-memory-sink.js';
|
|
5
|
+
export { InMemoryActorDirectory } from './in-memory-actor-directory.js';
|
|
6
|
+
export { InMemoryQuotaStore } from './in-memory-quota.js';
|
|
7
|
+
export { InMemoryPricingStore } from './in-memory-pricing.js';
|
|
8
|
+
export { FakeEmbeddingProvider, FakeReranker, inMemoryRetriever, } from './fake-embedding-provider.js';
|
|
9
|
+
export { InMemoryAttachmentStagingStore, type StagedRecord, } from './in-memory-attachment-staging.js';
|
|
10
|
+
export { FakeMediaManager, fakePdfExtractor, inMemoryMediaRagIngestion, } from './fake-media.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,KAAK,kBAAkB,GACxB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,8BAA8B,EAC9B,KAAK,YAAY,GAClB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { FakeModelProvider, echoScript, } from './fake-model-provider.js';
|
|
2
|
+
export { InMemoryAgentStore, } from './in-memory-store.js';
|
|
3
|
+
export { InMemoryGovernanceQueries, } from './in-memory-governance-queries.js';
|
|
4
|
+
export { InMemoryTokenStreamSink } from './in-memory-sink.js';
|
|
5
|
+
export { InMemoryActorDirectory } from './in-memory-actor-directory.js';
|
|
6
|
+
export { InMemoryQuotaStore } from './in-memory-quota.js';
|
|
7
|
+
export { InMemoryPricingStore } from './in-memory-pricing.js';
|
|
8
|
+
export { FakeEmbeddingProvider, FakeReranker, inMemoryRetriever, } from './fake-embedding-provider.js';
|
|
9
|
+
export { InMemoryAttachmentStagingStore, } from './in-memory-attachment-staging.js';
|
|
10
|
+
export { FakeMediaManager, fakePdfExtractor, inMemoryMediaRagIngestion, } from './fake-media.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,UAAU,GAGX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,GAMnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,GAE1B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,8BAA8B,GAE/B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type FunctionalTool } from './ai-tool-ref.js';
|
|
2
|
+
import type { ToolRegistry } from './tool-registry.js';
|
|
3
|
+
/** A tool registered at boot, echoed back so the provider can log what it wired. */
|
|
4
|
+
export interface RegisteredTool {
|
|
5
|
+
name: string;
|
|
6
|
+
source: 'class' | 'functional';
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Register one module export into the registry if it is an `@AiTool` class or a `defineTool(...)`
|
|
10
|
+
* functional tool; ignore anything else. A name already present is skipped (first wins). Returns the
|
|
11
|
+
* registered descriptor, or `null` when the export was not a tool / duplicated a registered name.
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerToolExport(registry: ToolRegistry, exported: unknown, defaultRoles: string[]): RegisteredTool | null;
|
|
14
|
+
/** Register a `defineTool` functional tool, applying `defaultRoles` when it declares none. */
|
|
15
|
+
export declare function registerFunctionalTool(registry: ToolRegistry, tool: FunctionalTool, defaultRoles: string[]): RegisteredTool | null;
|
|
16
|
+
/**
|
|
17
|
+
* Scan `dir` RECURSIVELY for modules and register every exported `@AiTool` class / `defineTool`
|
|
18
|
+
* tool into `registry` — the `app/agent_tools` convention. Only the environment-appropriate extension
|
|
19
|
+
* is imported and each export is visited once (deduped), so a built `.js` and a dev `.ts` of the same
|
|
20
|
+
* module never both register. Missing directory → no-op (the convention is opt-in). `defaultRoles`
|
|
21
|
+
* fills a tool that declares no `roles` (ADMIN-only by default).
|
|
22
|
+
*/
|
|
23
|
+
export declare function discoverTools(registry: ToolRegistry, dir: string, defaultRoles: string[]): Promise<RegisteredTool[]>;
|
|
24
|
+
/**
|
|
25
|
+
* The build-time barrel shape the Assembler `init` hook generates for `app/agent_tools`
|
|
26
|
+
* (key → lazy module import), mirroring durable's steps/workflows barrels.
|
|
27
|
+
*/
|
|
28
|
+
export type ToolsBarrel = Record<string, () => Promise<Record<string, unknown>>>;
|
|
29
|
+
/**
|
|
30
|
+
* Register every `@AiTool` / `defineTool` reachable from a generated {@link ToolsBarrel} — the
|
|
31
|
+
* build-time equivalent of {@link discoverTools} with no runtime `readdir`. Each module is imported
|
|
32
|
+
* once and each export registered once (deduped).
|
|
33
|
+
*/
|
|
34
|
+
export declare function registerToolsFromBarrel(registry: ToolRegistry, barrel: ToolsBarrel, defaultRoles: string[]): Promise<RegisteredTool[]>;
|
|
35
|
+
//# sourceMappingURL=tool-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-discovery.d.ts","sourceRoot":"","sources":["../../src/tool-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EAIpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,YAAY,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,MAAM,EAAE,GACrB,cAAc,GAAG,IAAI,CAqBvB;AAED,8FAA8F;AAC9F,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,MAAM,EAAE,GACrB,cAAc,GAAG,IAAI,CAQvB;AA4BD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,cAAc,EAAE,CAAC,CA6B3B;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjF;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,cAAc,EAAE,CAAC,CAiB3B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
2
|
+
import type { RolesPolicy } from './spi/roles-policy.js';
|
|
3
|
+
import type { AiToolCtx, ToolHandler } from './spi/tool.js';
|
|
4
|
+
import type { Actor, ToolDefinition, ToolSpec } from './types.js';
|
|
5
|
+
/** Thrown when an actor invokes a tool their role is not allowed. */
|
|
6
|
+
export declare class ToolForbiddenError extends Error {
|
|
7
|
+
readonly toolName: string;
|
|
8
|
+
constructor(toolName: string);
|
|
9
|
+
}
|
|
10
|
+
/** Thrown when a tool is invoked that was never registered. */
|
|
11
|
+
export declare class ToolNotFoundError extends Error {
|
|
12
|
+
readonly toolName: string;
|
|
13
|
+
constructor(toolName: string);
|
|
14
|
+
}
|
|
15
|
+
/** Thrown when a tool's input fails its Standard Schema validation. */
|
|
16
|
+
export declare class ToolInputInvalidError extends Error {
|
|
17
|
+
readonly toolName: string;
|
|
18
|
+
readonly issues: readonly StandardSchemaV1.Issue[];
|
|
19
|
+
constructor(toolName: string, issues: readonly StandardSchemaV1.Issue[]);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Holds every registered tool and gates invocation.
|
|
23
|
+
*
|
|
24
|
+
* Note: `definitionsFor` returns NEUTRAL definitions (no `execute`). The agent loop runs
|
|
25
|
+
* each tool itself as a (durable) step — so even read tools are not auto-executed by the
|
|
26
|
+
* model. `action` tools additionally require HITL approval before the loop runs them.
|
|
27
|
+
*/
|
|
28
|
+
export declare class ToolRegistry {
|
|
29
|
+
private readonly entries;
|
|
30
|
+
register(spec: ToolSpec, handler: ToolHandler): void;
|
|
31
|
+
has(name: string): boolean;
|
|
32
|
+
spec(name: string): ToolSpec | undefined;
|
|
33
|
+
allSpecs(): ToolSpec[];
|
|
34
|
+
/** The tools to offer the model for this actor+persona, after the two filter layers. */
|
|
35
|
+
definitionsFor(actor: Actor, policy: RolesPolicy, allowedTools?: string[]): Promise<ToolDefinition[]>;
|
|
36
|
+
/** Run a tool. Re-checks the role (defense-in-depth) and re-parses the input via Zod. */
|
|
37
|
+
invoke(name: string, input: unknown, ctx: AiToolCtx, policy: RolesPolicy): Promise<unknown>;
|
|
38
|
+
}
|
|
39
|
+
/** Default gate: one of the actor's roles must be in spec.roles (defaulting to ADMIN-only). */
|
|
40
|
+
export declare class DefaultRolesPolicy implements RolesPolicy {
|
|
41
|
+
private readonly defaultRoles;
|
|
42
|
+
constructor(defaultRoles?: string[]);
|
|
43
|
+
can(actor: Actor, tool: ToolSpec): boolean;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=tool-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElE,qEAAqE;AACrE,qBAAa,kBAAmB,SAAQ,KAAK;aACf,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;CAI7C;AAED,+DAA+D;AAC/D,qBAAa,iBAAkB,SAAQ,KAAK;aACd,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;CAI7C;AAED,uEAAuE;AACvE,qBAAa,qBAAsB,SAAQ,KAAK;aAE5B,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE;gBADzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE;CAO5D;AAOD;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAIpD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIxC,QAAQ,IAAI,QAAQ,EAAE;IAItB,wFAAwF;IAClF,cAAc,CAClB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,WAAW,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,cAAc,EAAE,CAAC;IAW5B,yFAAyF;IACnF,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC;CAcpB;AAED,+FAA+F;AAC/F,qBAAa,kBAAmB,YAAW,WAAW;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,GAAE,MAAM,EAAc;IAE/D,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO;CAI3C"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transient tool-error classification + the retry loop that wraps a tool's own invocation. A
|
|
3
|
+
* classified-transient error (a DB deadlock, a lock-wait timeout, a serialization failure) means the
|
|
4
|
+
* server rolled the tool's work back — retrying THAT class is safe, unlike a tool's general business
|
|
5
|
+
* failure, which stays a one-shot outcome (no durable step retries: a tool may not be idempotent).
|
|
6
|
+
*
|
|
7
|
+
* `runAgentLoop` wraps `registry.invoke(...)` with {@link invokeWithTransientRetry} INSIDE the
|
|
8
|
+
* `tool:<call.id>` step body — so under durable replay the whole step is memoized on its successful
|
|
9
|
+
* result and a retry never becomes a new checkpoint; history still shows exactly one step per tool
|
|
10
|
+
* call and side effects run once.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Default transient-tool-error classifier: true for a recognized MySQL/Postgres/SQLite
|
|
14
|
+
* lock-contention shape (by driver `code`/`errno`/`sqlState`, or a matching message), checked on the
|
|
15
|
+
* error itself and one level of `cause` (drivers commonly wrap the original error). A plain `Error`
|
|
16
|
+
* with none of these markers — any other business failure — is `false`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isTransientToolError(error: unknown): boolean;
|
|
19
|
+
/** Total attempts (initial try + retries) when `toolTransientRetry` doesn't set `attempts`. */
|
|
20
|
+
export declare const DEFAULT_TOOL_TRANSIENT_RETRY_ATTEMPTS = 2;
|
|
21
|
+
/** Backoff base in ms — the wait between attempt N and N+1 is `backoffMs * N`. */
|
|
22
|
+
export declare const DEFAULT_TOOL_TRANSIENT_RETRY_BACKOFF_MS = 150;
|
|
23
|
+
/** The host-configurable policy — everything, including the (in-process) `classify` fn. */
|
|
24
|
+
export interface ToolTransientRetryOptions {
|
|
25
|
+
/** Total attempts (initial try + retries). Defaults to {@link DEFAULT_TOOL_TRANSIENT_RETRY_ATTEMPTS}. */
|
|
26
|
+
attempts?: number;
|
|
27
|
+
/** Backoff base in ms. Defaults to {@link DEFAULT_TOOL_TRANSIENT_RETRY_BACKOFF_MS}. */
|
|
28
|
+
backoffMs?: number;
|
|
29
|
+
/** Overrides the default classifier — widen or narrow which errors are treated as transient. */
|
|
30
|
+
classify?: (error: unknown) => boolean;
|
|
31
|
+
}
|
|
32
|
+
/** `false` disables transient retry entirely — a tool's own thrown error surfaces immediately. */
|
|
33
|
+
export type ToolTransientRetrySetting = ToolTransientRetryOptions | false;
|
|
34
|
+
export interface InvokeWithTransientRetryOptions {
|
|
35
|
+
/**
|
|
36
|
+
* Recognizes the runner's control-flow signals (durable suspend / continue-as-new) so a retry
|
|
37
|
+
* never swallows one — same rule the loop's tool catch already applies. Undefined for a call site
|
|
38
|
+
* with no such notion (e.g. the inline runner, which has no workflow ctx to suspend on).
|
|
39
|
+
*/
|
|
40
|
+
isControlFlowError?: (error: unknown) => boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Called before each wait-and-retry, with the 1-based ordinal of the attempt that just failed and
|
|
43
|
+
* the error it threw. The call site uses this to emit the `tool.retry` diagnostics event —
|
|
44
|
+
* `invokeWithTransientRetry` itself carries no tool identity (name/callId), only the thunk.
|
|
45
|
+
*/
|
|
46
|
+
onRetry?: (attempt: number, error: unknown) => void;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Retries `fn` in place — never a new durable step/checkpoint, just repeated attempts inside
|
|
50
|
+
* whichever step body already wraps this call. `setting: false` runs `fn` once, unwrapped (no
|
|
51
|
+
* classify/backoff bookkeeping at all). Otherwise: try; on a thrown error, rethrow immediately if
|
|
52
|
+
* it's a recognized control-flow signal, else if the (possibly custom) classifier calls it transient
|
|
53
|
+
* AND attempts remain, wait `backoffMs * attemptNumber` and retry; otherwise rethrow the error as-is.
|
|
54
|
+
*/
|
|
55
|
+
export declare function invokeWithTransientRetry<T>(fn: () => Promise<T>, setting: ToolTransientRetrySetting, options?: InvokeWithTransientRetryOptions): Promise<T>;
|
|
56
|
+
//# sourceMappingURL=tool-retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-retry.d.ts","sourceRoot":"","sources":["../../src/tool-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA4BH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAW5D;AAED,+FAA+F;AAC/F,eAAO,MAAM,qCAAqC,IAAI,CAAC;AACvD,kFAAkF;AAClF,eAAO,MAAM,uCAAuC,MAAM,CAAC;AAE3D,2FAA2F;AAC3F,MAAM,WAAW,yBAAyB;IACxC,yGAAyG;IACzG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CACxC;AAED,kGAAkG;AAClG,MAAM,MAAM,yBAAyB,GAAG,yBAAyB,GAAG,KAAK,CAAC;AAE1E,MAAM,WAAW,+BAA+B;IAC9C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACjD;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAQD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,yBAAyB,EAClC,OAAO,CAAC,EAAE,+BAA+B,GACxC,OAAO,CAAC,CAAC,CAAC,CAyBZ"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transient tool-error classification + the retry loop that wraps a tool's own invocation. A
|
|
3
|
+
* classified-transient error (a DB deadlock, a lock-wait timeout, a serialization failure) means the
|
|
4
|
+
* server rolled the tool's work back — retrying THAT class is safe, unlike a tool's general business
|
|
5
|
+
* failure, which stays a one-shot outcome (no durable step retries: a tool may not be idempotent).
|
|
6
|
+
*
|
|
7
|
+
* `runAgentLoop` wraps `registry.invoke(...)` with {@link invokeWithTransientRetry} INSIDE the
|
|
8
|
+
* `tool:<call.id>` step body — so under durable replay the whole step is memoized on its successful
|
|
9
|
+
* result and a retry never becomes a new checkpoint; history still shows exactly one step per tool
|
|
10
|
+
* call and side effects run once.
|
|
11
|
+
*/
|
|
12
|
+
/** Narrow, structural check for a MySQL/Postgres/SQLite transient error shape — no casts. */
|
|
13
|
+
function hasTransientShape(error) {
|
|
14
|
+
if (typeof error !== 'object' || error === null) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
const code = 'code' in error ? error.code : undefined;
|
|
18
|
+
const errno = 'errno' in error ? error.errno : undefined;
|
|
19
|
+
const sqlState = 'sqlState' in error ? error.sqlState : undefined;
|
|
20
|
+
if (code === 1213 || code === 1205 || errno === 1213 || errno === 1205) {
|
|
21
|
+
return true; // MySQL ER_LOCK_DEADLOCK / ER_LOCK_WAIT_TIMEOUT numeric codes
|
|
22
|
+
}
|
|
23
|
+
if (code === 'ER_LOCK_DEADLOCK' || code === 'ER_LOCK_WAIT_TIMEOUT') {
|
|
24
|
+
return true; // MySQL driver string codes
|
|
25
|
+
}
|
|
26
|
+
if (code === '40001' || code === '40P01' || sqlState === '40001' || sqlState === '40P01') {
|
|
27
|
+
return true; // Postgres serialization_failure / deadlock_detected SQLSTATEs
|
|
28
|
+
}
|
|
29
|
+
if (code === 'SQLITE_BUSY') {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
const message = 'message' in error ? error.message : undefined;
|
|
33
|
+
return (typeof message === 'string' && /deadlock|lock wait timeout|serialization failure/i.test(message));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Default transient-tool-error classifier: true for a recognized MySQL/Postgres/SQLite
|
|
37
|
+
* lock-contention shape (by driver `code`/`errno`/`sqlState`, or a matching message), checked on the
|
|
38
|
+
* error itself and one level of `cause` (drivers commonly wrap the original error). A plain `Error`
|
|
39
|
+
* with none of these markers — any other business failure — is `false`.
|
|
40
|
+
*/
|
|
41
|
+
export function isTransientToolError(error) {
|
|
42
|
+
if (hasTransientShape(error)) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
if (typeof error === 'object' && error !== null && 'cause' in error) {
|
|
46
|
+
const cause = error.cause;
|
|
47
|
+
if (cause !== undefined && cause !== error && hasTransientShape(cause)) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
/** Total attempts (initial try + retries) when `toolTransientRetry` doesn't set `attempts`. */
|
|
54
|
+
export const DEFAULT_TOOL_TRANSIENT_RETRY_ATTEMPTS = 2;
|
|
55
|
+
/** Backoff base in ms — the wait between attempt N and N+1 is `backoffMs * N`. */
|
|
56
|
+
export const DEFAULT_TOOL_TRANSIENT_RETRY_BACKOFF_MS = 150;
|
|
57
|
+
function delay(ms) {
|
|
58
|
+
return new Promise((resolve) => {
|
|
59
|
+
setTimeout(resolve, ms);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Retries `fn` in place — never a new durable step/checkpoint, just repeated attempts inside
|
|
64
|
+
* whichever step body already wraps this call. `setting: false` runs `fn` once, unwrapped (no
|
|
65
|
+
* classify/backoff bookkeeping at all). Otherwise: try; on a thrown error, rethrow immediately if
|
|
66
|
+
* it's a recognized control-flow signal, else if the (possibly custom) classifier calls it transient
|
|
67
|
+
* AND attempts remain, wait `backoffMs * attemptNumber` and retry; otherwise rethrow the error as-is.
|
|
68
|
+
*/
|
|
69
|
+
export async function invokeWithTransientRetry(fn, setting, options) {
|
|
70
|
+
if (setting === false) {
|
|
71
|
+
return fn();
|
|
72
|
+
}
|
|
73
|
+
const attempts = setting.attempts ?? DEFAULT_TOOL_TRANSIENT_RETRY_ATTEMPTS;
|
|
74
|
+
const backoffMs = setting.backoffMs ?? DEFAULT_TOOL_TRANSIENT_RETRY_BACKOFF_MS;
|
|
75
|
+
const classify = setting.classify ?? isTransientToolError;
|
|
76
|
+
let attempt = 1;
|
|
77
|
+
for (;;) {
|
|
78
|
+
try {
|
|
79
|
+
return await fn();
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (options?.isControlFlowError?.(error) === true) {
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
const attemptsRemain = attempt < attempts;
|
|
86
|
+
if (!attemptsRemain || !classify(error)) {
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
options?.onRetry?.(attempt, error);
|
|
90
|
+
await delay(backoffMs * attempt);
|
|
91
|
+
attempt += 1;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=tool-retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-retry.js","sourceRoot":"","sources":["../../src/tool-retry.ts"],"names":[],"mappings":"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"}
|