@nuanu-ai/agentbrowse 0.2.46 → 0.2.48
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/README.md +69 -10
- package/dist/agentpay-gateway.d.ts +9 -0
- package/dist/agentpay-gateway.d.ts.map +1 -1
- package/dist/agentpay-gateway.js +30 -0
- package/dist/agentpay-stagehand-llm.d.ts.map +1 -1
- package/dist/agentpay-stagehand-llm.js +9 -1
- package/dist/command-api-tracing.d.ts +19 -0
- package/dist/command-api-tracing.d.ts.map +1 -0
- package/dist/command-api-tracing.js +137 -0
- package/dist/commands/act.d.ts.map +1 -1
- package/dist/commands/act.js +822 -670
- package/dist/commands/act.test-harness.d.ts +6 -0
- package/dist/commands/act.test-harness.d.ts.map +1 -1
- package/dist/commands/act.test-harness.js +44 -1
- package/dist/commands/action-acceptance.d.ts.map +1 -1
- package/dist/commands/action-acceptance.js +115 -0
- package/dist/commands/captcha-solve.d.ts.map +1 -1
- package/dist/commands/captcha-solve.js +83 -16
- package/dist/commands/click-action-executor.d.ts +0 -1
- package/dist/commands/click-action-executor.d.ts.map +1 -1
- package/dist/commands/click-action-executor.js +31 -77
- package/dist/commands/close.d.ts +3 -3
- package/dist/commands/close.d.ts.map +1 -1
- package/dist/commands/close.js +178 -0
- package/dist/commands/descriptor-validation.d.ts.map +1 -1
- package/dist/commands/descriptor-validation.js +75 -57
- package/dist/commands/end-session.d.ts +25 -0
- package/dist/commands/end-session.d.ts.map +1 -0
- package/dist/commands/end-session.js +161 -0
- package/dist/commands/extract-stagehand-executor.js +1 -1
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +339 -202
- package/dist/commands/fill-secret.d.ts +3 -3
- package/dist/commands/fill-secret.d.ts.map +1 -1
- package/dist/commands/fill-secret.js +419 -234
- package/dist/commands/get-secrets-catalog.d.ts.map +1 -1
- package/dist/commands/get-secrets-catalog.js +66 -5
- package/dist/commands/interaction-kernel.d.ts +46 -0
- package/dist/commands/interaction-kernel.d.ts.map +1 -0
- package/dist/commands/interaction-kernel.js +215 -0
- package/dist/commands/launch.d.ts +0 -2
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +109 -17
- package/dist/commands/navigate.d.ts.map +1 -1
- package/dist/commands/navigate.js +188 -45
- package/dist/commands/observe-accessibility.d.ts.map +1 -1
- package/dist/commands/observe-accessibility.js +50 -39
- package/dist/commands/observe-dom-label-contract.d.ts.map +1 -1
- package/dist/commands/observe-dom-label-contract.js +5 -0
- package/dist/commands/observe-inventory.d.ts +13 -0
- package/dist/commands/observe-inventory.d.ts.map +1 -1
- package/dist/commands/observe-inventory.js +320 -65
- package/dist/commands/observe-persistence.d.ts.map +1 -1
- package/dist/commands/observe-persistence.js +3 -0
- package/dist/commands/observe-projection.d.ts +1 -0
- package/dist/commands/observe-projection.d.ts.map +1 -1
- package/dist/commands/observe-projection.js +7 -2
- package/dist/commands/observe-protected.d.ts +1 -0
- package/dist/commands/observe-protected.d.ts.map +1 -1
- package/dist/commands/observe-protected.js +9 -4
- package/dist/commands/observe-semantics.d.ts.map +1 -1
- package/dist/commands/observe-semantics.js +5 -2
- package/dist/commands/observe-stagehand.d.ts +1 -0
- package/dist/commands/observe-stagehand.d.ts.map +1 -1
- package/dist/commands/observe-stagehand.js +2 -0
- package/dist/commands/observe.d.ts +2 -0
- package/dist/commands/observe.d.ts.map +1 -1
- package/dist/commands/observe.js +387 -203
- package/dist/commands/observe.test-harness.d.ts +8 -0
- package/dist/commands/observe.test-harness.d.ts.map +1 -1
- package/dist/commands/observe.test-harness.js +48 -1
- package/dist/commands/poll-secret.d.ts +6 -0
- package/dist/commands/poll-secret.d.ts.map +1 -0
- package/dist/commands/poll-secret.js +159 -0
- package/dist/commands/request-secret.d.ts +6 -0
- package/dist/commands/request-secret.d.ts.map +1 -0
- package/dist/commands/request-secret.js +284 -0
- package/dist/commands/screenshot.d.ts.map +1 -1
- package/dist/commands/screenshot.js +172 -7
- package/dist/commands/select-action-executor.d.ts.map +1 -1
- package/dist/commands/semantic-observe.d.ts +4 -0
- package/dist/commands/semantic-observe.d.ts.map +1 -1
- package/dist/commands/semantic-observe.js +388 -17
- package/dist/commands/start-session.d.ts +31 -0
- package/dist/commands/start-session.d.ts.map +1 -0
- package/dist/commands/start-session.js +347 -0
- package/dist/commands/status.d.ts +2 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +166 -144
- package/dist/control-semantics.d.ts +1 -0
- package/dist/control-semantics.d.ts.map +1 -1
- package/dist/control-semantics.js +51 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +144 -45
- package/dist/otel-exporter.d.ts +58 -0
- package/dist/otel-exporter.d.ts.map +1 -0
- package/dist/otel-exporter.js +263 -0
- package/dist/otel-projector.d.ts +75 -0
- package/dist/otel-projector.d.ts.map +1 -0
- package/dist/otel-projector.js +409 -0
- package/dist/owned-browser.d.ts +1 -1
- package/dist/owned-browser.d.ts.map +1 -1
- package/dist/owned-browser.js +13 -1
- package/dist/owned-process.d.ts +2 -0
- package/dist/owned-process.d.ts.map +1 -1
- package/dist/owned-process.js +7 -3
- package/dist/playwright-runtime.d.ts +1 -1
- package/dist/playwright-runtime.d.ts.map +1 -1
- package/dist/playwright-runtime.js +8 -8
- package/dist/run-observability.d.ts +25 -0
- package/dist/run-observability.d.ts.map +1 -0
- package/dist/run-observability.js +115 -0
- package/dist/run-store.d.ts +274 -0
- package/dist/run-store.d.ts.map +1 -0
- package/dist/run-store.js +631 -0
- package/dist/runtime-metrics.d.ts +27 -0
- package/dist/runtime-metrics.d.ts.map +1 -0
- package/dist/runtime-metrics.js +66 -0
- package/dist/runtime-page-state.d.ts +11 -0
- package/dist/runtime-page-state.d.ts.map +1 -0
- package/dist/runtime-page-state.js +62 -0
- package/dist/runtime-protected-state.d.ts +16 -0
- package/dist/runtime-protected-state.d.ts.map +1 -0
- package/dist/runtime-protected-state.js +157 -0
- package/dist/runtime-state.d.ts +10 -44
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js +57 -222
- package/dist/secrets/backend.d.ts +65 -16
- package/dist/secrets/backend.d.ts.map +1 -1
- package/dist/secrets/backend.js +135 -95
- package/dist/secrets/catalog-sync.d.ts.map +1 -1
- package/dist/secrets/catalog-sync.js +4 -1
- package/dist/secrets/form-matcher.d.ts +5 -5
- package/dist/secrets/form-matcher.d.ts.map +1 -1
- package/dist/secrets/form-matcher.js +292 -164
- package/dist/secrets/intent-output.d.ts +6 -10
- package/dist/secrets/intent-output.d.ts.map +1 -1
- package/dist/secrets/intent-output.js +4 -58
- package/dist/secrets/mock-agentpay-cabinet.d.ts +38 -27
- package/dist/secrets/mock-agentpay-cabinet.d.ts.map +1 -1
- package/dist/secrets/mock-agentpay-cabinet.js +177 -111
- package/dist/secrets/protected-artifact-guard.d.ts +2 -2
- package/dist/secrets/protected-artifact-guard.d.ts.map +1 -1
- package/dist/secrets/protected-artifact-guard.js +2 -2
- package/dist/secrets/protected-bindings.d.ts +1 -1
- package/dist/secrets/protected-bindings.d.ts.map +1 -1
- package/dist/secrets/protected-bindings.js +6 -0
- package/dist/secrets/protected-field-semantics.d.ts +9 -0
- package/dist/secrets/protected-field-semantics.d.ts.map +1 -0
- package/dist/secrets/protected-field-semantics.js +154 -0
- package/dist/secrets/protected-field-values.d.ts.map +1 -1
- package/dist/secrets/protected-field-values.js +3 -3
- package/dist/secrets/protected-fill.d.ts +1 -1
- package/dist/secrets/protected-fill.d.ts.map +1 -1
- package/dist/secrets/protected-fill.js +45 -149
- package/dist/secrets/protected-value-adapters.d.ts +2 -1
- package/dist/secrets/protected-value-adapters.d.ts.map +1 -1
- package/dist/secrets/protected-value-adapters.js +80 -1
- package/dist/secrets/request-output.d.ts +11 -0
- package/dist/secrets/request-output.d.ts.map +1 -0
- package/dist/secrets/request-output.js +75 -0
- package/dist/secrets/types.d.ts +15 -9
- package/dist/secrets/types.d.ts.map +1 -1
- package/dist/secrets/types.js +3 -0
- package/dist/session-event-exporter.d.ts +36 -0
- package/dist/session-event-exporter.d.ts.map +1 -0
- package/dist/session-event-exporter.js +428 -0
- package/dist/session.d.ts +16 -7
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +150 -23
- package/dist/sessions-backend.d.ts +354 -0
- package/dist/sessions-backend.d.ts.map +1 -0
- package/dist/sessions-backend.js +126 -0
- package/dist/solver/browser-launcher.d.ts +1 -1
- package/dist/solver/browser-launcher.d.ts.map +1 -1
- package/dist/solver/browser-launcher.js +39 -13
- package/dist/solver/captcha-solver.d.ts.map +1 -1
- package/dist/solver/captcha-solver.js +8 -1
- package/dist/solver/types.d.ts +1 -0
- package/dist/solver/types.d.ts.map +1 -1
- package/dist/workflow-session-completion.d.ts +33 -0
- package/dist/workflow-session-completion.d.ts.map +1 -0
- package/dist/workflow-session-completion.js +156 -0
- package/package.json +9 -1
- package/dist/commands/create-intent.d.ts +0 -6
- package/dist/commands/create-intent.d.ts.map +0 -1
- package/dist/commands/create-intent.js +0 -75
- package/dist/commands/poll-intent.d.ts +0 -6
- package/dist/commands/poll-intent.d.ts.map +0 -1
- package/dist/commands/poll-intent.js +0 -57
package/dist/secrets/backend.js
CHANGED
|
@@ -1,41 +1,66 @@
|
|
|
1
1
|
import { tryResolveAgentpayGatewayConfig } from '../agentpay-gateway.js';
|
|
2
|
+
import { AgentpayRequestError, claimRemoteSecret, createRemoteSecretRequest, getRemoteSessionSecretCatalog, getRemoteSecretRequest, } from '../sessions-backend.js';
|
|
2
3
|
import { resolveHostFromInput, resolveMockStoredSecretValues, syncMockSecretCatalog, } from './mock-agentpay-backend.js';
|
|
3
|
-
import {
|
|
4
|
+
import { approveMockSecretRequest, claimMockSecretRequest, createOrReuseMockSecretRequest, denyMockSecretRequest, getMockSecretRequest, } from './mock-agentpay-cabinet.js';
|
|
4
5
|
const ENABLE_MOCK_SECRETS_ENV = 'AGENTBROWSE_ENABLE_MOCK_SECRETS';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
|
|
10
|
-
? parsed
|
|
11
|
-
: null;
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
6
|
+
function asJsonRecord(value) {
|
|
7
|
+
return value && typeof value === 'object' && !Array.isArray(value)
|
|
8
|
+
? { ...value }
|
|
9
|
+
: {};
|
|
16
10
|
}
|
|
17
|
-
function
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return `agentpay_secret_backend_http_${status}:${parsed.error}`;
|
|
11
|
+
function pickFirstString(record, keys) {
|
|
12
|
+
for (const key of keys) {
|
|
13
|
+
const value = record[key];
|
|
14
|
+
if (typeof value === 'string' && value.trim().length > 0) {
|
|
15
|
+
return value.trim();
|
|
16
|
+
}
|
|
24
17
|
}
|
|
25
|
-
return
|
|
18
|
+
return undefined;
|
|
26
19
|
}
|
|
27
|
-
function
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
20
|
+
function mapRemoteSessionState(response) {
|
|
21
|
+
return {
|
|
22
|
+
sessionId: response.session.id,
|
|
23
|
+
status: response.session.status,
|
|
24
|
+
currentRequestId: response.current_request?.id ?? null,
|
|
25
|
+
lastEventSeq: response.session.last_event_seq,
|
|
26
|
+
browserSessionId: response.browser_session_id,
|
|
27
|
+
};
|
|
33
28
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
function mapSessionRequestToSnapshot(request) {
|
|
30
|
+
const payload = asJsonRecord(request.payload);
|
|
31
|
+
const storedSecret = asJsonRecord(payload.stored_secret);
|
|
32
|
+
return {
|
|
33
|
+
requestId: request.id,
|
|
34
|
+
fillRef: pickFirstString(payload, ['fill_ref', 'fillRef']) ?? '',
|
|
35
|
+
requestType: request.type === 'secret_write' ? 'secret_write' : 'secret_read',
|
|
36
|
+
status: request.status,
|
|
37
|
+
storedSecretRef: pickFirstString(payload, ['stored_secret_ref', 'storedSecretRef']) ??
|
|
38
|
+
pickFirstString(storedSecret, ['id']),
|
|
39
|
+
kind: payload.kind === 'login' || payload.kind === 'identity' || payload.kind === 'payment_card'
|
|
40
|
+
? payload.kind
|
|
41
|
+
: undefined,
|
|
42
|
+
host: pickFirstString(payload, ['host']),
|
|
43
|
+
pageRef: pickFirstString(asJsonRecord(payload.page), ['ref']),
|
|
44
|
+
scopeRef: pickFirstString(payload, ['scope_ref', 'scopeRef']),
|
|
45
|
+
createdAt: request.created_at,
|
|
46
|
+
updatedAt: request.updated_at,
|
|
47
|
+
...(request.expires_at ? { expiresAt: request.expires_at } : {}),
|
|
48
|
+
...(request.resolved_at ? { resolvedAt: request.resolved_at } : {}),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function mapClaimedSecret(response) {
|
|
52
|
+
return {
|
|
53
|
+
requestId: response.request_id,
|
|
54
|
+
issuedAt: response.issued_at,
|
|
55
|
+
expiresAt: response.expires_at ?? undefined,
|
|
56
|
+
secret: {
|
|
57
|
+
values: { ...response.secret.values },
|
|
58
|
+
source: response.secret.source,
|
|
59
|
+
storedSecretRef: response.secret.stored_secret_ref ?? undefined,
|
|
60
|
+
credentialId: response.secret.credential_id ?? undefined,
|
|
61
|
+
kind: response.secret.kind ?? undefined,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
39
64
|
}
|
|
40
65
|
function toStoredSecretFieldKeys(fields) {
|
|
41
66
|
return fields
|
|
@@ -70,71 +95,63 @@ function mapApiCatalogEntryToStoredSecret(entry, host) {
|
|
|
70
95
|
: { target: 'host', value: host },
|
|
71
96
|
};
|
|
72
97
|
}
|
|
73
|
-
function
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
: {};
|
|
77
|
-
return {
|
|
78
|
-
intentId: intent.id,
|
|
79
|
-
fillRef: typeof metadata.fill_ref === 'string' ? metadata.fill_ref : '',
|
|
80
|
-
storedSecretRef: typeof metadata.secret_id === 'string' ? metadata.secret_id : '',
|
|
81
|
-
status: intent.status,
|
|
82
|
-
approvalChannel: APPROVAL_CHANNEL,
|
|
83
|
-
host: typeof metadata.host === 'string' ? metadata.host : undefined,
|
|
84
|
-
scopeRef: typeof metadata.scope_ref === 'string' ? metadata.scope_ref : undefined,
|
|
85
|
-
createdAt: intent.created_at,
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
async function requestAgentpay(method, path, body) {
|
|
89
|
-
const gateway = tryResolveAgentpayGatewayConfig();
|
|
90
|
-
if (!gateway) {
|
|
91
|
-
throw new SecretBackendDisabledError('Secret backend is not configured. AgentPay API key is required.');
|
|
98
|
+
function envFlagEnabled(value) {
|
|
99
|
+
if (!value) {
|
|
100
|
+
return false;
|
|
92
101
|
}
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
});
|
|
101
|
-
if (!response.ok) {
|
|
102
|
-
const text = await response.text().catch(() => '');
|
|
103
|
-
throw new Error(formatAgentpayBackendError(response.status, text));
|
|
102
|
+
const normalized = value.trim().toLowerCase();
|
|
103
|
+
return normalized === '1' || normalized === 'true' || normalized === 'yes' || normalized === 'on';
|
|
104
|
+
}
|
|
105
|
+
export class SecretBackendDisabledError extends Error {
|
|
106
|
+
constructor(message = 'Mock secret backend is disabled for this build/runtime.') {
|
|
107
|
+
super(message);
|
|
108
|
+
this.name = 'SecretBackendDisabledError';
|
|
104
109
|
}
|
|
105
|
-
return (await response.json());
|
|
106
110
|
}
|
|
107
111
|
const mockSecretBackend = {
|
|
108
112
|
kind: 'mock',
|
|
109
113
|
resolveCatalogHost: resolveHostFromInput,
|
|
110
|
-
async syncSecretCatalog(urlOrHost) {
|
|
114
|
+
async syncSecretCatalog(_sessionId, urlOrHost) {
|
|
111
115
|
return syncMockSecretCatalog(urlOrHost);
|
|
112
116
|
},
|
|
113
|
-
async
|
|
114
|
-
return
|
|
117
|
+
async createOrReuseSecretRequest(input) {
|
|
118
|
+
return createOrReuseMockSecretRequest({
|
|
119
|
+
sessionId: input.sessionId,
|
|
120
|
+
clientRequestId: input.clientRequestId,
|
|
121
|
+
fillRef: input.fillRef,
|
|
122
|
+
purpose: input.purpose,
|
|
123
|
+
merchantName: input.merchantName,
|
|
124
|
+
host: input.secretHint.host ?? resolveHostFromInput(input.page?.url ?? input.fillRef),
|
|
125
|
+
pageRef: input.page?.ref ?? 'p0',
|
|
126
|
+
scopeRef: input.secretHint.scopeRef,
|
|
127
|
+
storedSecretRef: input.secretHint.storedSecretRef,
|
|
128
|
+
kind: input.secretHint.kind,
|
|
129
|
+
fields: input.secretHint.fields,
|
|
130
|
+
});
|
|
115
131
|
},
|
|
116
|
-
async
|
|
117
|
-
const
|
|
118
|
-
if (!
|
|
132
|
+
async getSecretRequest(sessionId, requestId) {
|
|
133
|
+
const request = getMockSecretRequest(sessionId, requestId);
|
|
134
|
+
if (!request) {
|
|
119
135
|
return null;
|
|
120
136
|
}
|
|
121
|
-
if (snapshot.status !== 'approved') {
|
|
122
|
-
return { snapshot };
|
|
123
|
-
}
|
|
124
|
-
const deliveredValues = resolveMockStoredSecretValues(snapshot.storedSecretRef) ?? undefined;
|
|
125
|
-
const completed = markMockSecretIntentCompleted(intentId);
|
|
126
137
|
return {
|
|
127
|
-
snapshot:
|
|
128
|
-
|
|
138
|
+
snapshot: request.snapshot,
|
|
139
|
+
session: request.session,
|
|
129
140
|
};
|
|
130
141
|
},
|
|
142
|
+
async claimSecretRequest(sessionId, requestId, claimId) {
|
|
143
|
+
const claimed = claimMockSecretRequest(sessionId, requestId, claimId, {
|
|
144
|
+
resolveValues: (storedSecretRef) => resolveMockStoredSecretValues(storedSecretRef),
|
|
145
|
+
});
|
|
146
|
+
return claimed;
|
|
147
|
+
},
|
|
131
148
|
};
|
|
132
149
|
const agentpayApiSecretBackend = {
|
|
133
150
|
kind: 'agentpay_api',
|
|
134
151
|
resolveCatalogHost: resolveHostFromInput,
|
|
135
|
-
async syncSecretCatalog(urlOrHost) {
|
|
152
|
+
async syncSecretCatalog(sessionId, urlOrHost) {
|
|
136
153
|
const host = resolveHostFromInput(urlOrHost);
|
|
137
|
-
const entries = await
|
|
154
|
+
const entries = await getRemoteSessionSecretCatalog(sessionId, host);
|
|
138
155
|
return {
|
|
139
156
|
source: 'agentpay_api',
|
|
140
157
|
host,
|
|
@@ -142,39 +159,58 @@ const agentpayApiSecretBackend = {
|
|
|
142
159
|
storedSecrets: entries.map((entry) => mapApiCatalogEntryToStoredSecret(entry, host)),
|
|
143
160
|
};
|
|
144
161
|
},
|
|
145
|
-
async
|
|
146
|
-
const response = await
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
162
|
+
async createOrReuseSecretRequest(input) {
|
|
163
|
+
const response = await createRemoteSecretRequest(input.sessionId, {
|
|
164
|
+
clientRequestId: input.clientRequestId,
|
|
165
|
+
fillRef: input.fillRef,
|
|
166
|
+
purpose: input.purpose,
|
|
167
|
+
merchantName: input.merchantName,
|
|
168
|
+
...(input.page ? { page: input.page } : {}),
|
|
169
|
+
secretHint: {
|
|
170
|
+
...(input.secretHint.storedSecretRef
|
|
171
|
+
? { storedSecretRef: input.secretHint.storedSecretRef }
|
|
172
|
+
: {}),
|
|
173
|
+
...(input.secretHint.credentialKey
|
|
174
|
+
? { credentialKey: input.secretHint.credentialKey }
|
|
175
|
+
: {}),
|
|
176
|
+
...(input.secretHint.credentialName
|
|
177
|
+
? { credentialName: input.secretHint.credentialName }
|
|
178
|
+
: {}),
|
|
179
|
+
...(input.secretHint.kind ? { kind: input.secretHint.kind } : {}),
|
|
180
|
+
...(input.secretHint.host ? { host: input.secretHint.host } : {}),
|
|
181
|
+
...(input.secretHint.scopeRef ? { scopeRef: input.secretHint.scopeRef } : {}),
|
|
182
|
+
fields: input.secretHint.fields,
|
|
156
183
|
},
|
|
184
|
+
...(input.telemetry ? { telemetry: input.telemetry } : {}),
|
|
185
|
+
...(input.run ? { run: input.run } : {}),
|
|
186
|
+
...(input.step ? { step: input.step } : {}),
|
|
157
187
|
});
|
|
158
188
|
return {
|
|
159
|
-
|
|
160
|
-
reused:
|
|
189
|
+
snapshot: mapSessionRequestToSnapshot(response.request),
|
|
190
|
+
reused: response.reused,
|
|
191
|
+
duplicate: response.duplicate,
|
|
192
|
+
session: mapRemoteSessionState(response),
|
|
161
193
|
};
|
|
162
194
|
},
|
|
163
|
-
async
|
|
195
|
+
async getSecretRequest(sessionId, requestId) {
|
|
164
196
|
try {
|
|
165
|
-
const response = await
|
|
197
|
+
const response = await getRemoteSecretRequest(sessionId, requestId);
|
|
166
198
|
return {
|
|
167
|
-
snapshot:
|
|
168
|
-
|
|
199
|
+
snapshot: mapSessionRequestToSnapshot(response.request),
|
|
200
|
+
session: mapRemoteSessionState(response),
|
|
169
201
|
};
|
|
170
202
|
}
|
|
171
203
|
catch (error) {
|
|
172
|
-
if (error instanceof
|
|
204
|
+
if (error instanceof AgentpayRequestError && error.status === 404) {
|
|
173
205
|
return null;
|
|
174
206
|
}
|
|
175
207
|
throw error;
|
|
176
208
|
}
|
|
177
209
|
},
|
|
210
|
+
async claimSecretRequest(sessionId, requestId, claimId) {
|
|
211
|
+
const response = await claimRemoteSecret(sessionId, requestId, claimId);
|
|
212
|
+
return mapClaimedSecret(response);
|
|
213
|
+
},
|
|
178
214
|
};
|
|
179
215
|
export function isMockSecretBackendEnabled() {
|
|
180
216
|
return envFlagEnabled(process.env[ENABLE_MOCK_SECRETS_ENV]);
|
|
@@ -188,3 +224,7 @@ export function getSecretBackend() {
|
|
|
188
224
|
}
|
|
189
225
|
throw new SecretBackendDisabledError(`Secret backend is not configured. Set AGENTPAY_API_KEY for real AgentPay API access or ${ENABLE_MOCK_SECRETS_ENV}=1 only for local/dev testing.`);
|
|
190
226
|
}
|
|
227
|
+
export const __testSecretBackend = {
|
|
228
|
+
approveMockSecretRequest,
|
|
229
|
+
denyMockSecretRequest,
|
|
230
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-sync.d.ts","sourceRoot":"","sources":["../../src/secrets/catalog-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAG9E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,oBAAoB,CAO5F;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"catalog-sync.d.ts","sourceRoot":"","sources":["../../src/secrets/catalog-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAG9E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,oBAAoB,CAO5F;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC,CAOhC;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAazF"}
|
|
@@ -13,7 +13,10 @@ export function summarizeSecretCatalog(snapshot) {
|
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
export async function syncSecretCatalogForUrl(session, urlOrHost) {
|
|
16
|
-
|
|
16
|
+
if (!session.intentSessionId) {
|
|
17
|
+
throw new Error('Workflow session id is required for secret catalog sync.');
|
|
18
|
+
}
|
|
19
|
+
const snapshot = await getSecretBackend().syncSecretCatalog(session.intentSessionId, urlOrHost);
|
|
17
20
|
return saveSecretCatalog(session, snapshot);
|
|
18
21
|
}
|
|
19
22
|
export function resolveCatalogHost(urlOrHost) {
|
|
@@ -16,29 +16,29 @@ declare const protectedFormPlanSchema: z.ZodObject<{
|
|
|
16
16
|
bindings: z.ZodArray<z.ZodObject<{
|
|
17
17
|
targetRef: z.ZodString;
|
|
18
18
|
fieldKey: z.ZodString;
|
|
19
|
-
valueHint: z.ZodOptional<z.ZodEnum<["direct", "full_name.given", "full_name.family"]>>;
|
|
19
|
+
valueHint: z.ZodOptional<z.ZodEnum<["direct", "full_name.given", "full_name.family", "date_of_birth.day", "date_of_birth.month", "date_of_birth.year"]>>;
|
|
20
20
|
}, "strip", z.ZodTypeAny, {
|
|
21
21
|
targetRef: string;
|
|
22
22
|
fieldKey: string;
|
|
23
|
-
valueHint?: "direct" | "full_name.given" | "full_name.family" | undefined;
|
|
23
|
+
valueHint?: "direct" | "full_name.given" | "full_name.family" | "date_of_birth.day" | "date_of_birth.month" | "date_of_birth.year" | undefined;
|
|
24
24
|
}, {
|
|
25
25
|
targetRef: string;
|
|
26
26
|
fieldKey: string;
|
|
27
|
-
valueHint?: "direct" | "full_name.given" | "full_name.family" | undefined;
|
|
27
|
+
valueHint?: "direct" | "full_name.given" | "full_name.family" | "date_of_birth.day" | "date_of_birth.month" | "date_of_birth.year" | undefined;
|
|
28
28
|
}>, "many">;
|
|
29
29
|
}, "strip", z.ZodTypeAny, {
|
|
30
30
|
confidence: "high" | "medium" | "low";
|
|
31
31
|
bindings: {
|
|
32
32
|
targetRef: string;
|
|
33
33
|
fieldKey: string;
|
|
34
|
-
valueHint?: "direct" | "full_name.given" | "full_name.family" | undefined;
|
|
34
|
+
valueHint?: "direct" | "full_name.given" | "full_name.family" | "date_of_birth.day" | "date_of_birth.month" | "date_of_birth.year" | undefined;
|
|
35
35
|
}[];
|
|
36
36
|
}, {
|
|
37
37
|
confidence: "high" | "medium" | "low";
|
|
38
38
|
bindings: {
|
|
39
39
|
targetRef: string;
|
|
40
40
|
fieldKey: string;
|
|
41
|
-
valueHint?: "direct" | "full_name.given" | "full_name.family" | undefined;
|
|
41
|
+
valueHint?: "direct" | "full_name.given" | "full_name.family" | "date_of_birth.day" | "date_of_birth.month" | "date_of_birth.year" | undefined;
|
|
42
42
|
}[];
|
|
43
43
|
}>;
|
|
44
44
|
declare function selectorSignalFragments(selector: string): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-matcher.d.ts","sourceRoot":"","sources":["../../src/secrets/form-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,KAAK,EAAE,gBAAgB,EAA2B,MAAM,qBAAqB,CAAC;AACrF,OAAO,KAAK,EACV,wBAAwB,EAExB,qBAAqB,EACrB,qBAAqB,EAErB,gBAAgB,EACjB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"form-matcher.d.ts","sourceRoot":"","sources":["../../src/secrets/form-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,KAAK,EAAE,gBAAgB,EAA2B,MAAM,qBAAqB,CAAC;AACrF,OAAO,KAAK,EACV,wBAAwB,EAExB,qBAAqB,EACrB,qBAAqB,EAErB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AASpB,KAAK,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;AAEhE,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC9C;AAED,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAgCD,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW3B,CAAC;AAsCH,iBAAS,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAS3D;AAsBD,iBAAS,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAsC1D;AA0eD,iBAAS,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CA6BxD;AAED,iBAAS,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,eAAe,EAAE,CAkBvF;AAwFD,iBAAS,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAalF;AAED,iBAAS,gBAAgB,CACvB,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GACnF,wBAAwB,EAAE,CA6C5B;AAuPD,wBAAsB,mCAAmC,CACvD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACxC,OAAO,EAAE,qBAAqB,GAAG,IAAI,EACrC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuC9B;AAED,eAAO,MAAM,iBAAiB;;;;;;;CAO7B,CAAC"}
|