@namzu/sdk 0.4.2 → 0.4.4
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/CHANGELOG.md +46 -0
- package/dist/advisory/context.test.d.ts +16 -0
- package/dist/advisory/context.test.d.ts.map +1 -0
- package/dist/advisory/context.test.js +92 -0
- package/dist/advisory/context.test.js.map +1 -0
- package/dist/advisory/evaluator.test.d.ts +34 -0
- package/dist/advisory/evaluator.test.d.ts.map +1 -0
- package/dist/advisory/evaluator.test.js +172 -0
- package/dist/advisory/evaluator.test.js.map +1 -0
- package/dist/advisory/executor.test.d.ts +35 -0
- package/dist/advisory/executor.test.d.ts.map +1 -0
- package/dist/advisory/executor.test.js +233 -0
- package/dist/advisory/executor.test.js.map +1 -0
- package/dist/advisory/registry.test.d.ts +16 -0
- package/dist/advisory/registry.test.d.ts.map +1 -0
- package/dist/advisory/registry.test.js +62 -0
- package/dist/advisory/registry.test.js.map +1 -0
- package/dist/bridge/a2a/agent-card.test.d.ts +24 -0
- package/dist/bridge/a2a/agent-card.test.d.ts.map +1 -0
- package/dist/bridge/a2a/agent-card.test.js +118 -0
- package/dist/bridge/a2a/agent-card.test.js.map +1 -0
- package/dist/bridge/a2a/mapper.test.d.ts +29 -0
- package/dist/bridge/a2a/mapper.test.d.ts.map +1 -0
- package/dist/bridge/a2a/mapper.test.js +265 -0
- package/dist/bridge/a2a/mapper.test.js.map +1 -0
- package/dist/bridge/a2a/message.test.d.ts +20 -0
- package/dist/bridge/a2a/message.test.d.ts.map +1 -0
- package/dist/bridge/a2a/message.test.js +116 -0
- package/dist/bridge/a2a/message.test.js.map +1 -0
- package/dist/bridge/a2a/task.test.d.ts +29 -0
- package/dist/bridge/a2a/task.test.d.ts.map +1 -0
- package/dist/bridge/a2a/task.test.js +198 -0
- package/dist/bridge/a2a/task.test.js.map +1 -0
- package/dist/bridge/mcp/connector/adapter.test.d.ts +27 -0
- package/dist/bridge/mcp/connector/adapter.test.d.ts.map +1 -0
- package/dist/bridge/mcp/connector/adapter.test.js +203 -0
- package/dist/bridge/mcp/connector/adapter.test.js.map +1 -0
- package/dist/bridge/sse/mapper.test.d.ts +27 -0
- package/dist/bridge/sse/mapper.test.d.ts.map +1 -0
- package/dist/bridge/sse/mapper.test.js +271 -0
- package/dist/bridge/sse/mapper.test.js.map +1 -0
- package/dist/bridge/tools/connector/adapter.d.ts +2 -2
- package/dist/bridge/tools/connector/adapter.test.d.ts +28 -0
- package/dist/bridge/tools/connector/adapter.test.d.ts.map +1 -0
- package/dist/bridge/tools/connector/adapter.test.js +182 -0
- package/dist/bridge/tools/connector/adapter.test.js.map +1 -0
- package/dist/bridge/tools/connector/definitions.test.d.ts +23 -0
- package/dist/bridge/tools/connector/definitions.test.d.ts.map +1 -0
- package/dist/bridge/tools/connector/definitions.test.js +158 -0
- package/dist/bridge/tools/connector/definitions.test.js.map +1 -0
- package/dist/bridge/tools/connector/router.test.d.ts +21 -0
- package/dist/bridge/tools/connector/router.test.d.ts.map +1 -0
- package/dist/bridge/tools/connector/router.test.js +139 -0
- package/dist/bridge/tools/connector/router.test.js.map +1 -0
- package/dist/bus/breaker.test.d.ts +41 -0
- package/dist/bus/breaker.test.d.ts.map +1 -0
- package/dist/bus/breaker.test.js +242 -0
- package/dist/bus/breaker.test.js.map +1 -0
- package/dist/bus/index.d.ts +3 -1
- package/dist/bus/index.d.ts.map +1 -1
- package/dist/bus/index.js +18 -11
- package/dist/bus/index.js.map +1 -1
- package/dist/bus/index.test.d.ts +25 -0
- package/dist/bus/index.test.d.ts.map +1 -0
- package/dist/bus/index.test.js +151 -0
- package/dist/bus/index.test.js.map +1 -0
- package/dist/bus/lock.test.d.ts +44 -0
- package/dist/bus/lock.test.d.ts.map +1 -0
- package/dist/bus/lock.test.js +226 -0
- package/dist/bus/lock.test.js.map +1 -0
- package/dist/bus/ownership.test.d.ts +26 -0
- package/dist/bus/ownership.test.d.ts.map +1 -0
- package/dist/bus/ownership.test.js +205 -0
- package/dist/bus/ownership.test.js.map +1 -0
- package/dist/config/runtime.d.ts +28 -28
- package/dist/connector/BaseConnector.test.d.ts +21 -0
- package/dist/connector/BaseConnector.test.d.ts.map +1 -0
- package/dist/connector/BaseConnector.test.js +108 -0
- package/dist/connector/BaseConnector.test.js.map +1 -0
- package/dist/connector/builtins/http.test.d.ts +30 -0
- package/dist/connector/builtins/http.test.d.ts.map +1 -0
- package/dist/connector/builtins/http.test.js +232 -0
- package/dist/connector/builtins/http.test.js.map +1 -0
- package/dist/connector/builtins/webhook.test.d.ts +20 -0
- package/dist/connector/builtins/webhook.test.d.ts.map +1 -0
- package/dist/connector/builtins/webhook.test.js +113 -0
- package/dist/connector/builtins/webhook.test.js.map +1 -0
- package/dist/connector/execution/factory.test.d.ts +16 -0
- package/dist/connector/execution/factory.test.d.ts.map +1 -0
- package/dist/connector/execution/factory.test.js +64 -0
- package/dist/connector/execution/factory.test.js.map +1 -0
- package/dist/connector/execution/remote.test.d.ts +16 -0
- package/dist/connector/execution/remote.test.d.ts.map +1 -0
- package/dist/connector/execution/remote.test.js +53 -0
- package/dist/connector/execution/remote.test.js.map +1 -0
- package/dist/connector/mcp/adapter.test.d.ts +34 -0
- package/dist/connector/mcp/adapter.test.d.ts.map +1 -0
- package/dist/connector/mcp/adapter.test.js +199 -0
- package/dist/connector/mcp/adapter.test.js.map +1 -0
- package/dist/probe/context.d.ts +8 -0
- package/dist/probe/context.d.ts.map +1 -0
- package/dist/probe/context.js +7 -0
- package/dist/probe/context.js.map +1 -0
- package/dist/probe/errors.d.ts +12 -0
- package/dist/probe/errors.d.ts.map +1 -0
- package/dist/probe/errors.js +21 -0
- package/dist/probe/errors.js.map +1 -0
- package/dist/probe/index.d.ts +5 -0
- package/dist/probe/index.d.ts.map +1 -0
- package/dist/probe/index.js +4 -0
- package/dist/probe/index.js.map +1 -0
- package/dist/probe/registry.d.ts +24 -0
- package/dist/probe/registry.d.ts.map +1 -0
- package/dist/probe/registry.js +228 -0
- package/dist/probe/registry.js.map +1 -0
- package/dist/probe/registry.test.d.ts +7 -0
- package/dist/probe/registry.test.d.ts.map +1 -0
- package/dist/probe/registry.test.js +310 -0
- package/dist/probe/registry.test.js.map +1 -0
- package/dist/provider/instrumentation.d.ts +9 -0
- package/dist/provider/instrumentation.d.ts.map +1 -0
- package/dist/provider/instrumentation.js +104 -0
- package/dist/provider/instrumentation.js.map +1 -0
- package/dist/provider/instrumentation.test.d.ts +2 -0
- package/dist/provider/instrumentation.test.d.ts.map +1 -0
- package/dist/provider/instrumentation.test.js +152 -0
- package/dist/provider/instrumentation.test.js.map +1 -0
- package/dist/public-runtime.d.ts +5 -0
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +4 -0
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-types.d.ts +3 -0
- package/dist/public-types.d.ts.map +1 -1
- package/dist/rag/chunking.test.d.ts +20 -0
- package/dist/rag/chunking.test.d.ts.map +1 -0
- package/dist/rag/chunking.test.js +92 -0
- package/dist/rag/chunking.test.js.map +1 -0
- package/dist/rag/context-assembler.test.d.ts +19 -0
- package/dist/rag/context-assembler.test.d.ts.map +1 -0
- package/dist/rag/context-assembler.test.js +98 -0
- package/dist/rag/context-assembler.test.js.map +1 -0
- package/dist/rag/embedding.test.d.ts +19 -0
- package/dist/rag/embedding.test.d.ts.map +1 -0
- package/dist/rag/embedding.test.js +115 -0
- package/dist/rag/embedding.test.js.map +1 -0
- package/dist/rag/ingestion.test.d.ts +22 -0
- package/dist/rag/ingestion.test.d.ts.map +1 -0
- package/dist/rag/ingestion.test.js +99 -0
- package/dist/rag/ingestion.test.js.map +1 -0
- package/dist/rag/knowledge-base.test.d.ts +17 -0
- package/dist/rag/knowledge-base.test.d.ts.map +1 -0
- package/dist/rag/knowledge-base.test.js +77 -0
- package/dist/rag/knowledge-base.test.js.map +1 -0
- package/dist/rag/rag-tool.test.d.ts +21 -0
- package/dist/rag/rag-tool.test.d.ts.map +1 -0
- package/dist/rag/rag-tool.test.js +149 -0
- package/dist/rag/rag-tool.test.js.map +1 -0
- package/dist/rag/retriever.test.d.ts +26 -0
- package/dist/rag/retriever.test.d.ts.map +1 -0
- package/dist/rag/retriever.test.js +180 -0
- package/dist/rag/retriever.test.js.map +1 -0
- package/dist/rag/vector-store.test.d.ts +38 -0
- package/dist/rag/vector-store.test.d.ts.map +1 -0
- package/dist/rag/vector-store.test.js +175 -0
- package/dist/rag/vector-store.test.js.map +1 -0
- package/dist/registry/ManagedRegistry.test.d.ts +21 -0
- package/dist/registry/ManagedRegistry.test.d.ts.map +1 -0
- package/dist/registry/ManagedRegistry.test.js +98 -0
- package/dist/registry/ManagedRegistry.test.js.map +1 -0
- package/dist/registry/Registry.test.d.ts +18 -0
- package/dist/registry/Registry.test.d.ts.map +1 -0
- package/dist/registry/Registry.test.js +79 -0
- package/dist/registry/Registry.test.js.map +1 -0
- package/dist/registry/agent/definitions.test.d.ts +15 -0
- package/dist/registry/agent/definitions.test.d.ts.map +1 -0
- package/dist/registry/agent/definitions.test.js +84 -0
- package/dist/registry/agent/definitions.test.js.map +1 -0
- package/dist/registry/connector/definitions.test.d.ts +13 -0
- package/dist/registry/connector/definitions.test.d.ts.map +1 -0
- package/dist/registry/connector/definitions.test.js +41 -0
- package/dist/registry/connector/definitions.test.js.map +1 -0
- package/dist/registry/connector/scoped.test.d.ts +21 -0
- package/dist/registry/connector/scoped.test.d.ts.map +1 -0
- package/dist/registry/connector/scoped.test.js +115 -0
- package/dist/registry/connector/scoped.test.js.map +1 -0
- package/dist/registry/plugin/index.test.d.ts +12 -0
- package/dist/registry/plugin/index.test.d.ts.map +1 -0
- package/dist/registry/plugin/index.test.js +69 -0
- package/dist/registry/plugin/index.test.js.map +1 -0
- package/dist/registry/tool/execute.test.d.ts +42 -0
- package/dist/registry/tool/execute.test.d.ts.map +1 -0
- package/dist/registry/tool/execute.test.js +281 -0
- package/dist/registry/tool/execute.test.js.map +1 -0
- package/dist/runtime/query/events.d.ts +3 -1
- package/dist/runtime/query/events.d.ts.map +1 -1
- package/dist/runtime/query/events.js +6 -1
- package/dist/runtime/query/events.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +3 -1
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +30 -1
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.test.d.ts +42 -0
- package/dist/runtime/query/iteration/phases/advisory.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/advisory.test.js +334 -0
- package/dist/runtime/query/iteration/phases/advisory.test.js.map +1 -0
- package/dist/test-setup.d.ts +22 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +23 -0
- package/dist/test-setup.js.map +1 -0
- package/dist/types/bus/index.d.ts +46 -2
- package/dist/types/bus/index.d.ts.map +1 -1
- package/dist/types/doctor/check.d.ts +41 -0
- package/dist/types/doctor/check.d.ts.map +1 -0
- package/dist/types/doctor/check.js +2 -0
- package/dist/types/doctor/check.js.map +1 -0
- package/dist/types/doctor/index.d.ts +2 -0
- package/dist/types/doctor/index.d.ts.map +1 -0
- package/dist/types/doctor/index.js +2 -0
- package/dist/types/doctor/index.js.map +1 -0
- package/dist/types/probe/event-kind.d.ts +6 -0
- package/dist/types/probe/event-kind.d.ts.map +1 -0
- package/dist/types/probe/event-kind.js +2 -0
- package/dist/types/probe/event-kind.js.map +1 -0
- package/dist/types/probe/event-of.d.ts +5 -0
- package/dist/types/probe/event-of.d.ts.map +1 -0
- package/dist/types/probe/event-of.js +2 -0
- package/dist/types/probe/event-of.js.map +1 -0
- package/dist/types/probe/index.d.ts +4 -0
- package/dist/types/probe/index.d.ts.map +1 -0
- package/dist/types/probe/index.js +2 -0
- package/dist/types/probe/index.js.map +1 -0
- package/dist/types/probe/registry.d.ts +27 -0
- package/dist/types/probe/registry.d.ts.map +1 -0
- package/dist/types/probe/registry.js +2 -0
- package/dist/types/probe/registry.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +5 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/vault/instrumentation.d.ts +11 -0
- package/dist/vault/instrumentation.d.ts.map +1 -0
- package/dist/vault/instrumentation.js +32 -0
- package/dist/vault/instrumentation.js.map +1 -0
- package/dist/vault/instrumentation.test.d.ts +2 -0
- package/dist/vault/instrumentation.test.d.ts.map +1 -0
- package/dist/vault/instrumentation.test.js +80 -0
- package/dist/vault/instrumentation.test.js.map +1 -0
- package/package.json +4 -1
- package/src/advisory/context.test.ts +109 -0
- package/src/advisory/evaluator.test.ts +192 -0
- package/src/advisory/executor.test.ts +272 -0
- package/src/advisory/registry.test.ts +75 -0
- package/src/bridge/a2a/agent-card.test.ts +140 -0
- package/src/bridge/a2a/mapper.test.ts +293 -0
- package/src/bridge/a2a/message.test.ts +138 -0
- package/src/bridge/a2a/task.test.ts +235 -0
- package/src/bridge/mcp/connector/adapter.test.ts +230 -0
- package/src/bridge/sse/mapper.test.ts +422 -0
- package/src/bridge/tools/connector/adapter.test.ts +224 -0
- package/src/bridge/tools/connector/definitions.test.ts +183 -0
- package/src/bridge/tools/connector/router.test.ts +159 -0
- package/src/bus/breaker.test.ts +274 -0
- package/src/bus/index.test.ts +183 -0
- package/src/bus/index.ts +21 -10
- package/src/bus/lock.test.ts +265 -0
- package/src/bus/ownership.test.ts +243 -0
- package/src/connector/BaseConnector.test.ts +130 -0
- package/src/connector/builtins/http.test.ts +290 -0
- package/src/connector/builtins/webhook.test.ts +138 -0
- package/src/connector/execution/factory.test.ts +75 -0
- package/src/connector/execution/remote.test.ts +63 -0
- package/src/connector/mcp/adapter.test.ts +249 -0
- package/src/probe/context.ts +14 -0
- package/src/probe/errors.ts +27 -0
- package/src/probe/index.ts +4 -0
- package/src/probe/registry.test.ts +480 -0
- package/src/probe/registry.ts +276 -0
- package/src/provider/instrumentation.test.ts +192 -0
- package/src/provider/instrumentation.ts +139 -0
- package/src/public-runtime.ts +17 -0
- package/src/public-types.ts +3 -0
- package/src/rag/chunking.test.ts +107 -0
- package/src/rag/context-assembler.test.ts +114 -0
- package/src/rag/embedding.test.ts +130 -0
- package/src/rag/ingestion.test.ts +114 -0
- package/src/rag/knowledge-base.test.ts +106 -0
- package/src/rag/rag-tool.test.ts +167 -0
- package/src/rag/retriever.test.ts +210 -0
- package/src/rag/vector-store.test.ts +196 -0
- package/src/registry/ManagedRegistry.test.ts +118 -0
- package/src/registry/Registry.test.ts +91 -0
- package/src/registry/agent/definitions.test.ts +100 -0
- package/src/registry/connector/definitions.test.ts +51 -0
- package/src/registry/connector/scoped.test.ts +129 -0
- package/src/registry/plugin/index.test.ts +85 -0
- package/src/registry/tool/execute.test.ts +330 -0
- package/src/runtime/query/events.ts +6 -1
- package/src/runtime/query/executor.ts +34 -0
- package/src/runtime/query/iteration/phases/advisory.test.ts +412 -0
- package/src/test-setup.ts +24 -0
- package/src/types/bus/index.ts +54 -2
- package/src/types/doctor/check.ts +53 -0
- package/src/types/doctor/index.ts +9 -0
- package/src/types/probe/event-kind.ts +8 -0
- package/src/types/probe/event-of.ts +3 -0
- package/src/types/probe/index.ts +11 -0
- package/src/types/probe/registry.ts +36 -0
- package/src/utils/logger.ts +6 -1
- package/src/vault/instrumentation.test.ts +98 -0
- package/src/vault/instrumentation.ts +56 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import { createProbeRegistry } from '../probe/registry.js'
|
|
4
|
+
import type { AgentBusEvent } from '../types/bus/index.js'
|
|
5
|
+
import type { CredentialId, TenantId } from '../types/ids/index.js'
|
|
6
|
+
|
|
7
|
+
import { InMemoryCredentialVault } from './InMemoryCredentialVault.js'
|
|
8
|
+
import { wrapVaultWithProbes } from './instrumentation.js'
|
|
9
|
+
|
|
10
|
+
const tenant = 'tnt_acme' as TenantId
|
|
11
|
+
const connector = 'conn_x' as never
|
|
12
|
+
|
|
13
|
+
describe('wrapVaultWithProbes', () => {
|
|
14
|
+
it('emits vault_lookup with found:true when retrieve hits', async () => {
|
|
15
|
+
const reg = createProbeRegistry()
|
|
16
|
+
const seen: AgentBusEvent[] = []
|
|
17
|
+
reg.onAny((event) => seen.push(event as AgentBusEvent))
|
|
18
|
+
|
|
19
|
+
const inner = new InMemoryCredentialVault()
|
|
20
|
+
const ref = await inner.store(tenant, connector, 'k', { type: 'apiKey', apiKey: 's' } as never)
|
|
21
|
+
const wrapped = wrapVaultWithProbes(inner, { probes: reg, vaultId: 'in-memory' })
|
|
22
|
+
|
|
23
|
+
const result = await wrapped.retrieve(ref.id)
|
|
24
|
+
expect(result).toBeDefined()
|
|
25
|
+
expect(seen.length).toBe(1)
|
|
26
|
+
const event = seen[0] as AgentBusEvent & { type: 'vault_lookup' }
|
|
27
|
+
expect(event.type).toBe('vault_lookup')
|
|
28
|
+
expect(event.found).toBe(true)
|
|
29
|
+
expect(event.vaultId).toBe('in-memory')
|
|
30
|
+
expect(event.credentialId).toBe(ref.id)
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
it('emits vault_lookup with found:false when retrieve misses', async () => {
|
|
34
|
+
const reg = createProbeRegistry()
|
|
35
|
+
const seen: AgentBusEvent[] = []
|
|
36
|
+
reg.onAny((event) => seen.push(event as AgentBusEvent))
|
|
37
|
+
|
|
38
|
+
const wrapped = wrapVaultWithProbes(new InMemoryCredentialVault(), {
|
|
39
|
+
probes: reg,
|
|
40
|
+
vaultId: 'in-memory',
|
|
41
|
+
})
|
|
42
|
+
const missing = 'cred_missing' as CredentialId
|
|
43
|
+
const result = await wrapped.retrieve(missing)
|
|
44
|
+
|
|
45
|
+
expect(result).toBeUndefined()
|
|
46
|
+
expect(seen.length).toBe(1)
|
|
47
|
+
const event = seen[0] as AgentBusEvent & { type: 'vault_lookup' }
|
|
48
|
+
expect(event.found).toBe(false)
|
|
49
|
+
expect(event.credentialId).toBe(missing)
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
it('does not emit on store/revoke/list — retrieve is the audit point', async () => {
|
|
53
|
+
const reg = createProbeRegistry()
|
|
54
|
+
const seen: AgentBusEvent[] = []
|
|
55
|
+
reg.onAny((event) => seen.push(event as AgentBusEvent))
|
|
56
|
+
|
|
57
|
+
const wrapped = wrapVaultWithProbes(new InMemoryCredentialVault(), { probes: reg })
|
|
58
|
+
const ref = await wrapped.store(tenant, connector, 'k', {
|
|
59
|
+
type: 'apiKey',
|
|
60
|
+
apiKey: 's',
|
|
61
|
+
} as never)
|
|
62
|
+
await wrapped.list(tenant)
|
|
63
|
+
await wrapped.revoke(ref.id)
|
|
64
|
+
expect(seen.length).toBe(0)
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
it('does not leak the secret value in the emitted event', async () => {
|
|
68
|
+
const reg = createProbeRegistry()
|
|
69
|
+
const seen: AgentBusEvent[] = []
|
|
70
|
+
reg.onAny((event) => seen.push(event as AgentBusEvent))
|
|
71
|
+
|
|
72
|
+
const inner = new InMemoryCredentialVault()
|
|
73
|
+
const ref = await inner.store(tenant, connector, 'k', {
|
|
74
|
+
type: 'apiKey',
|
|
75
|
+
apiKey: 'super-secret-value',
|
|
76
|
+
} as never)
|
|
77
|
+
const wrapped = wrapVaultWithProbes(inner, { probes: reg })
|
|
78
|
+
await wrapped.retrieve(ref.id)
|
|
79
|
+
|
|
80
|
+
const event = seen[0]
|
|
81
|
+
const serialized = JSON.stringify(event)
|
|
82
|
+
expect(serialized).not.toContain('super-secret-value')
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
it('falls back to constructor.name as vaultId when not specified', async () => {
|
|
86
|
+
const reg = createProbeRegistry()
|
|
87
|
+
const seen: AgentBusEvent[] = []
|
|
88
|
+
reg.onAny((event) => seen.push(event as AgentBusEvent))
|
|
89
|
+
|
|
90
|
+
const inner = new InMemoryCredentialVault()
|
|
91
|
+
const ref = await inner.store(tenant, connector, 'k', { type: 'apiKey', apiKey: 's' } as never)
|
|
92
|
+
const wrapped = wrapVaultWithProbes(inner, { probes: reg })
|
|
93
|
+
await wrapped.retrieve(ref.id)
|
|
94
|
+
|
|
95
|
+
const event = seen[0] as AgentBusEvent & { type: 'vault_lookup' }
|
|
96
|
+
expect(event.vaultId).toBe('InMemoryCredentialVault')
|
|
97
|
+
})
|
|
98
|
+
})
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { buildProbeContext } from '../probe/context.js'
|
|
2
|
+
import { type ProbeRegistry, probe as defaultProbeRegistry } from '../probe/registry.js'
|
|
3
|
+
import type { AuthConfig, CredentialRef, CredentialVault } from '../types/connector/index.js'
|
|
4
|
+
import type { ConnectorId, CredentialId, RunId, TenantId } from '../types/ids/index.js'
|
|
5
|
+
|
|
6
|
+
export interface VaultInstrumentationOptions {
|
|
7
|
+
readonly probes?: ProbeRegistry
|
|
8
|
+
readonly runId?: RunId
|
|
9
|
+
readonly vaultId?: string
|
|
10
|
+
readonly tenantId?: TenantId
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function wrapVaultWithProbes(
|
|
14
|
+
vault: CredentialVault,
|
|
15
|
+
opts: VaultInstrumentationOptions = {},
|
|
16
|
+
): CredentialVault {
|
|
17
|
+
const probes = opts.probes ?? defaultProbeRegistry
|
|
18
|
+
const runId = opts.runId
|
|
19
|
+
const vaultId = opts.vaultId ?? vault.constructor.name
|
|
20
|
+
const tenantIdHint = opts.tenantId
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
store(
|
|
24
|
+
tenantId: TenantId,
|
|
25
|
+
connectorId: ConnectorId,
|
|
26
|
+
label: string,
|
|
27
|
+
auth: AuthConfig,
|
|
28
|
+
): Promise<CredentialRef> {
|
|
29
|
+
return vault.store(tenantId, connectorId, label, auth)
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
async retrieve(credentialId: CredentialId): Promise<AuthConfig | undefined> {
|
|
33
|
+
const result = await vault.retrieve(credentialId)
|
|
34
|
+
probes.dispatch(
|
|
35
|
+
{
|
|
36
|
+
type: 'vault_lookup',
|
|
37
|
+
vaultId,
|
|
38
|
+
credentialId,
|
|
39
|
+
tenantId: tenantIdHint,
|
|
40
|
+
found: result !== undefined,
|
|
41
|
+
runId,
|
|
42
|
+
},
|
|
43
|
+
buildProbeContext({ runId }),
|
|
44
|
+
)
|
|
45
|
+
return result
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
revoke(credentialId: CredentialId): Promise<boolean> {
|
|
49
|
+
return vault.revoke(credentialId)
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
list(tenantId: TenantId, connectorId?: ConnectorId): Promise<CredentialRef[]> {
|
|
53
|
+
return vault.list(tenantId, connectorId)
|
|
54
|
+
},
|
|
55
|
+
}
|
|
56
|
+
}
|