@alfe.ai/openclaw-sync 0.2.2 → 0.2.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/dist/cli/index.js +1 -1
- package/dist/defaults/common.alfesyncignore +6 -0
- package/dist/index.d.cts +139 -36
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +139 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/plugin.d.cts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin2.cjs +11 -4
- package/dist/plugin2.js +12 -5
- package/dist/plugin2.js.map +1 -1
- package/dist/sync-engine.cjs +365 -29
- package/dist/sync-engine.js +361 -31
- package/dist/sync-engine.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,16 @@ interface ManifestEntry {
|
|
|
22
22
|
}
|
|
23
23
|
interface LocalManifest {
|
|
24
24
|
files: Record<string, ManifestEntry>;
|
|
25
|
+
/**
|
|
26
|
+
* Owner of this manifest. The manifest lives at a machine-global path
|
|
27
|
+
* (`~/.alfe/sync/manifest.json`), so if a machine is re-adopted by a
|
|
28
|
+
* DIFFERENT agent without clearing `~/.alfe/sync/`, the entries describe
|
|
29
|
+
* the previous agent's sync state and must not be trusted for recovery
|
|
30
|
+
* classification. Absent on pre-upgrade manifests — those are trusted
|
|
31
|
+
* (grandfathered: same-agent continuation is overwhelmingly the norm, and
|
|
32
|
+
* distrust would sidecar-spam every diverged file after upgrade).
|
|
33
|
+
*/
|
|
34
|
+
agentId?: string;
|
|
25
35
|
}
|
|
26
36
|
interface RemoteManifest {
|
|
27
37
|
version: 1;
|
|
@@ -63,6 +73,15 @@ declare function writeManifest(workspacePath: string, manifest: LocalManifest):
|
|
|
63
73
|
* Update a single file entry in the local manifest.
|
|
64
74
|
*/
|
|
65
75
|
declare function updateManifestEntry(workspacePath: string, relativePath: string, entry: ManifestEntry): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Update many file entries in one read-modify-write pass.
|
|
78
|
+
*
|
|
79
|
+
* `updateManifestEntry` re-reads and rewrites the whole manifest JSON per
|
|
80
|
+
* call — fine for single-file watcher events, quadratic for bulk heals, and
|
|
81
|
+
* lossy when calls overlap. Use this for any batch (e.g. the recovery
|
|
82
|
+
* "identical → heal" pass). Optionally stamps the owning agentId.
|
|
83
|
+
*/
|
|
84
|
+
|
|
66
85
|
/**
|
|
67
86
|
* Remove a file entry from the local manifest.
|
|
68
87
|
*/
|
|
@@ -201,10 +220,15 @@ interface KnowledgeSearchHit {
|
|
|
201
220
|
score: number;
|
|
202
221
|
scopeType: KnowledgeScopeType;
|
|
203
222
|
scopeId: string;
|
|
223
|
+
/**
|
|
224
|
+
* Provenance of the hit. All live results are `"doc"`; `"fact"` only ever
|
|
225
|
+
* appears for legacy vectors indexed before the facts primitive was removed
|
|
226
|
+
* (the search index stays tolerant of them). Treat every hit as a doc.
|
|
227
|
+
*/
|
|
204
228
|
source: "doc" | "fact";
|
|
205
|
-
/**
|
|
229
|
+
/** The canonical file under shared/<scope>/ (present on doc hits). */
|
|
206
230
|
filePath?: string;
|
|
207
|
-
/**
|
|
231
|
+
/** Legacy-only: the id of a pre-removal fact vector. */
|
|
208
232
|
factId?: string;
|
|
209
233
|
}
|
|
210
234
|
interface KnowledgeSearchResult {
|
|
@@ -225,16 +249,6 @@ interface KnowledgeProfile {
|
|
|
225
249
|
updatedAt: string | null;
|
|
226
250
|
updatedBy: string | null;
|
|
227
251
|
}
|
|
228
|
-
interface KnowledgeFact {
|
|
229
|
-
factId: string;
|
|
230
|
-
scopeType: KnowledgeScopeType;
|
|
231
|
-
scopeId: string;
|
|
232
|
-
text: string;
|
|
233
|
-
sourceType: string;
|
|
234
|
-
createdBy: string;
|
|
235
|
-
createdAt: string;
|
|
236
|
-
updatedAt: string;
|
|
237
|
-
}
|
|
238
252
|
interface KnowledgeDoc {
|
|
239
253
|
filePath: string;
|
|
240
254
|
fileName: string;
|
|
@@ -244,6 +258,47 @@ interface KnowledgeDoc {
|
|
|
244
258
|
createdAt: string;
|
|
245
259
|
updatedAt: string;
|
|
246
260
|
}
|
|
261
|
+
type ChangeRequestResourceType = "doc" | "profile";
|
|
262
|
+
type ChangeRequestOperation = "create" | "update" | "delete";
|
|
263
|
+
type ChangeRequestStatus = "open" | "approved" | "rejected" | "withdrawn" | "superseded";
|
|
264
|
+
type ChangeRequestActorKind = "human" | "agent";
|
|
265
|
+
/** Public projection of a change request (mirrors `PublicChangeRequest` in services/org). */
|
|
266
|
+
interface KnowledgeChangeRequest {
|
|
267
|
+
changeRequestId: string;
|
|
268
|
+
scopeType: KnowledgeScopeType;
|
|
269
|
+
scopeId: string;
|
|
270
|
+
resourceType: ChangeRequestResourceType;
|
|
271
|
+
operation: ChangeRequestOperation;
|
|
272
|
+
targetPath: string | null;
|
|
273
|
+
baseVersionId: string | null;
|
|
274
|
+
proposedContentType: string | null;
|
|
275
|
+
status: ChangeRequestStatus;
|
|
276
|
+
proposerId: string;
|
|
277
|
+
proposerKind: ChangeRequestActorKind;
|
|
278
|
+
rationale: string;
|
|
279
|
+
reviewerId: string | null;
|
|
280
|
+
reviewerKind: ChangeRequestActorKind | null;
|
|
281
|
+
reviewedAt: string | null;
|
|
282
|
+
reviewNote: string | null;
|
|
283
|
+
appliedRef: string | null;
|
|
284
|
+
createdAt: string;
|
|
285
|
+
updatedAt: string;
|
|
286
|
+
}
|
|
287
|
+
/** Per-type proposal payload for `proposeScopeChange`. */
|
|
288
|
+
interface ProposeScopeChangeInput {
|
|
289
|
+
resourceType: ChangeRequestResourceType;
|
|
290
|
+
operation: ChangeRequestOperation;
|
|
291
|
+
/** Why the change is proposed — shown to the reviewer. */
|
|
292
|
+
rationale: string;
|
|
293
|
+
/** doc: the path the proposal applies to (e.g. designs/data-center.md). */
|
|
294
|
+
targetPath?: string;
|
|
295
|
+
/** doc create/update: the staged body to upload (markdown or other text). */
|
|
296
|
+
content?: string;
|
|
297
|
+
/** doc create/update: content type of the staged body (default text/markdown). */
|
|
298
|
+
contentType?: string;
|
|
299
|
+
/** profile: the proposed value ({ about, description, links }). */
|
|
300
|
+
proposedValue?: unknown;
|
|
301
|
+
}
|
|
247
302
|
/** Voice settings — core agent config. Mirrors `VoiceConfig` in `@alfe/types`. */
|
|
248
303
|
interface AgentVoiceConfig {
|
|
249
304
|
/** ElevenLabs voice ID; platform default when unset. */
|
|
@@ -1324,25 +1379,6 @@ declare class AgentApiClient {
|
|
|
1324
1379
|
}>;
|
|
1325
1380
|
/** Read a scope's structured knowledge profile (after membership check). */
|
|
1326
1381
|
getScopeProfile(scopeType: KnowledgeScopeType, scopeId: string): Promise<KnowledgeProfile>;
|
|
1327
|
-
/** List a scope's facts (non-semantic, full enumeration). */
|
|
1328
|
-
listScopeFacts(scopeType: KnowledgeScopeType, scopeId: string, opts?: {
|
|
1329
|
-
limit?: number;
|
|
1330
|
-
cursor?: string;
|
|
1331
|
-
}): Promise<{
|
|
1332
|
-
facts: KnowledgeFact[];
|
|
1333
|
-
nextCursor: string | null;
|
|
1334
|
-
}>;
|
|
1335
|
-
/**
|
|
1336
|
-
* Publish a fact at a scope. This is the deliberate cross-agent learning
|
|
1337
|
-
* boundary — facts are attributable (the agent is recorded as author) and
|
|
1338
|
-
* never an automatic merge. Membership is enforced server-side (403 for a
|
|
1339
|
-
* non-member scope).
|
|
1340
|
-
*/
|
|
1341
|
-
createScopeFact(scopeType: KnowledgeScopeType, scopeId: string, text: string): Promise<KnowledgeFact>;
|
|
1342
|
-
/** Delete a fact at a scope. */
|
|
1343
|
-
deleteScopeFact(scopeType: KnowledgeScopeType, scopeId: string, factId: string): Promise<{
|
|
1344
|
-
removed: boolean;
|
|
1345
|
-
}>;
|
|
1346
1382
|
/** List a scope's docs (the org-files corpus; mirrored to shared/<scope>/). */
|
|
1347
1383
|
listScopeDocs(scopeType: KnowledgeScopeType, scopeId: string, opts?: {
|
|
1348
1384
|
limit?: number;
|
|
@@ -1373,6 +1409,26 @@ declare class AgentApiClient {
|
|
|
1373
1409
|
}): Promise<{
|
|
1374
1410
|
filePath: string;
|
|
1375
1411
|
}>;
|
|
1412
|
+
/**
|
|
1413
|
+
* Open a change request against a scope's knowledge resource. For a doc
|
|
1414
|
+
* create/update, `services/org` returns a presigned staging PUT; this method
|
|
1415
|
+
* uploads the proposed `content` to it (echoing the same Content-Type that
|
|
1416
|
+
* was signed), mirroring `writeScopeDoc`. The staged body is applied to the
|
|
1417
|
+
* canonical doc — attributed to this agent — only when a reviewer approves.
|
|
1418
|
+
*/
|
|
1419
|
+
proposeScopeChange(scopeType: KnowledgeScopeType, scopeId: string, input: ProposeScopeChangeInput): Promise<KnowledgeChangeRequest>;
|
|
1420
|
+
/**
|
|
1421
|
+
* List the agent's OWN change requests in a scope (filtered server-side to
|
|
1422
|
+
* this agent as proposer). Pass `status` to narrow to open / approved / etc.
|
|
1423
|
+
*/
|
|
1424
|
+
listScopeChangeRequests(scopeType: KnowledgeScopeType, scopeId: string, opts?: {
|
|
1425
|
+
status?: ChangeRequestStatus;
|
|
1426
|
+
limit?: number;
|
|
1427
|
+
cursor?: string;
|
|
1428
|
+
}): Promise<{
|
|
1429
|
+
changeRequests: KnowledgeChangeRequest[];
|
|
1430
|
+
nextCursor: string | null;
|
|
1431
|
+
}>;
|
|
1376
1432
|
registerDatabaseCredentials(): Promise<{
|
|
1377
1433
|
connectionString: string;
|
|
1378
1434
|
username: string;
|
|
@@ -1436,6 +1492,26 @@ interface SyncResult {
|
|
|
1436
1492
|
conflicts: number;
|
|
1437
1493
|
errors: number;
|
|
1438
1494
|
}
|
|
1495
|
+
/**
|
|
1496
|
+
* Recovery artifacts: `.conflict-<ts>` sidecars and `RECOVERY-<ts>.md`
|
|
1497
|
+
* reports. Anchored to the timestamp shape so legitimate user files like
|
|
1498
|
+
* `my.conflict-notes.txt` or `RECOVERY-plan.md` are never misclassified.
|
|
1499
|
+
*
|
|
1500
|
+
* They seed UP to the cloud so a preserved local version survives even if
|
|
1501
|
+
* the VM dies before the agent merges it (retrievable via the dashboard
|
|
1502
|
+
* file manager), but they are never AUTO-restored back down and never
|
|
1503
|
+
* preserved again — restoring would resurrect copies the agent already
|
|
1504
|
+
* cleaned up, and re-preserving would cascade `.conflict`-of-`.conflict`
|
|
1505
|
+
* files. Cloud copies are reclaimed when the agent's local cleanup
|
|
1506
|
+
* propagates through the watcher; artifacts orphaned by a rebuild before
|
|
1507
|
+
* cleanup linger until then (accepted: small, user-visible, deletable).
|
|
1508
|
+
* The watcher's delete brake also exempts them so the agent's post-merge
|
|
1509
|
+
* cleanup of many sidecars can't trip it.
|
|
1510
|
+
*
|
|
1511
|
+
* Deliberately NOT in the ignore set: ignored paths don't seed up and would
|
|
1512
|
+
* be eligible for pruneIgnored deletion.
|
|
1513
|
+
*/
|
|
1514
|
+
|
|
1439
1515
|
interface SyncEngineOptions {
|
|
1440
1516
|
workspacePath: string;
|
|
1441
1517
|
client: AgentApiClient;
|
|
@@ -1444,6 +1520,11 @@ interface SyncEngineOptions {
|
|
|
1444
1520
|
* every scan (push / fullSync / firstRunReconcile). Default: "openclaw".
|
|
1445
1521
|
*/
|
|
1446
1522
|
runtime?: string;
|
|
1523
|
+
/**
|
|
1524
|
+
* Recovery sidecar size cap override — see MAX_PRESERVE_BYTES. Exists so
|
|
1525
|
+
* tests can exercise the over-cap path without multi-hundred-MB fixtures.
|
|
1526
|
+
*/
|
|
1527
|
+
maxPreserveBytes?: number;
|
|
1447
1528
|
}
|
|
1448
1529
|
/**
|
|
1449
1530
|
* Construct a sync engine bound to a workspace + agent API client.
|
|
@@ -1454,7 +1535,8 @@ interface SyncEngineOptions {
|
|
|
1454
1535
|
declare function createSyncEngine({
|
|
1455
1536
|
workspacePath,
|
|
1456
1537
|
client,
|
|
1457
|
-
runtime
|
|
1538
|
+
runtime,
|
|
1539
|
+
maxPreserveBytes
|
|
1458
1540
|
}: SyncEngineOptions): {
|
|
1459
1541
|
workspacePath: string;
|
|
1460
1542
|
client: AgentApiClient;
|
|
@@ -1503,10 +1585,24 @@ declare function createSyncEngine({
|
|
|
1503
1585
|
* manifest has no entry for it). fullSync pushes before it pulls, so it
|
|
1504
1586
|
* would still clobber the cloud edit before restoring it locally.
|
|
1505
1587
|
*
|
|
1506
|
-
* Conflict direction:
|
|
1507
|
-
*
|
|
1508
|
-
*
|
|
1509
|
-
*
|
|
1588
|
+
* Conflict direction: the CLOUD copy is authoritative for anything it
|
|
1589
|
+
* holds, but diverged UNSYNCED local content is never silently
|
|
1590
|
+
* destroyed — it is preserved next to the restored file as a
|
|
1591
|
+
* `.conflict-<ts>` sidecar and indexed in a `RECOVERY-<ts>.md` report
|
|
1592
|
+
* the agent is nudged (via HEARTBEAT.md, openclaw only) to reconcile.
|
|
1593
|
+
* Known noise: on a fresh-disk rebuild the setup-seeded persona
|
|
1594
|
+
* templates diverge from the edited cloud copies, so each gets a small
|
|
1595
|
+
* sidecar of the pristine template — bounded, listed in the report, and
|
|
1596
|
+
* cleaned up by the agent. The plugin can't tell a seed from an edit
|
|
1597
|
+
* without the template registry, and guessing (e.g. mtime windows)
|
|
1598
|
+
* would reintroduce exactly the silent-loss hole this closes.
|
|
1599
|
+
*
|
|
1600
|
+
* Per-path classification (see classifyRestorePaths): files whose local
|
|
1601
|
+
* manifest entry matches the cloud hash but whose disk content moved on
|
|
1602
|
+
* (`localAhead` — edited while the plugin was down) are PUSHED, not
|
|
1603
|
+
* restored; files deleted locally while the plugin was down
|
|
1604
|
+
* (`offlineDelete`) are not resurrected; files already matching the
|
|
1605
|
+
* cloud are healed into the manifest without a download.
|
|
1510
1606
|
*/
|
|
1511
1607
|
firstRunReconcile(options?: {
|
|
1512
1608
|
quiet?: boolean;
|
|
@@ -1579,6 +1675,13 @@ interface UploadResult {
|
|
|
1579
1675
|
size?: number;
|
|
1580
1676
|
error?: string;
|
|
1581
1677
|
}
|
|
1678
|
+
/**
|
|
1679
|
+
* Prefixes stored as GLACIER_IR on the sync bucket. Shared with the recovery
|
|
1680
|
+
* classifier in sync-engine.ts, which must never cut conflict sidecars for
|
|
1681
|
+
* archive objects (their presigned GETs fail until restored, so hashing/
|
|
1682
|
+
* preserving them is wasted work on a pull that can't succeed anyway).
|
|
1683
|
+
*/
|
|
1684
|
+
|
|
1582
1685
|
/**
|
|
1583
1686
|
* Upload many files, batched by `concurrency`.
|
|
1584
1687
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["ChangelogAction","ChangelogActor","ChangelogEntry","ChangelogEntry$1","EncryptedEnvelopeV1","EncryptedEnvelopeV1$1","Field","FieldEnvelope","FieldEnvelope$1","FieldFormat","FieldFormat$1","FieldSensitivity","FieldSensitivity$1","FieldView","GeneratedDataKey","GeneratedDataKey$1","IntegrationConfigResult","IntegrationConfigResult$1","IntegrationConfigSchemaField","IntegrationInstall","IntegrationInstall$1","RegistryEntry","RegistryEntry$1","ScopeInfo","ScopeInfo$1","SecretAggregate","SecretAggregate$1","SecretCategory","SecretCategory$1","SecretMetadata","SecretMetadata$1","SecretScope","SecretScope$1","AgentApiClientConfig","RemoteSessionInfo","SyncAgentInfo","SyncManifestEntry","SyncManifest","Record","SyncPresignedUrl","SyncConfirmedUpload","SyncReconstructFile","SyncReconstructBundle","SyncAgentStats","SyncFileEntry","SyncSessionEntry","SyncSessionContent","SharedFileEntry","KnowledgeScopeType","KnowledgeScope","KnowledgeSearchHit","KnowledgeSearchResult","KnowledgeProfileLink","KnowledgeProfile","KnowledgeFact","KnowledgeDoc","AgentVoiceConfig","AgentSelf","AgentAvatarPresign","AgentVoice","VoiceTtsModel","VoiceTtsArgs","VoiceTtsResult","Buffer","VoiceSttArgs","Uint8Array","VoiceSttResult","AgentApiClient","Promise"],"sources":["../src/manifest.ts","../src/ignore.ts","../../agent-api-client/dist/index.d.ts","../src/sync-engine.ts","../src/watcher.ts","../src/uploader.ts","../src/downloader.ts","../src/retry.ts","../src/shared-sync.ts"],"sourcesContent":["import { ChangelogAction, ChangelogActor, ChangelogEntry, ChangelogEntry as ChangelogEntry$1, EncryptedEnvelopeV1, EncryptedEnvelopeV1 as EncryptedEnvelopeV1$1, Field, FieldEnvelope, FieldEnvelope as FieldEnvelope$1, FieldFormat, FieldFormat as FieldFormat$1, FieldSensitivity, FieldSensitivity as FieldSensitivity$1, FieldView, GeneratedDataKey, GeneratedDataKey as GeneratedDataKey$1, IntegrationConfigResult, IntegrationConfigResult as IntegrationConfigResult$1, IntegrationConfigSchemaField, IntegrationInstall, IntegrationInstall as IntegrationInstall$1, RegistryEntry, RegistryEntry as RegistryEntry$1, ScopeInfo, ScopeInfo as ScopeInfo$1, SecretAggregate, SecretAggregate as SecretAggregate$1, SecretCategory, SecretCategory as SecretCategory$1, SecretMetadata, SecretMetadata as SecretMetadata$1, SecretScope, SecretScope as SecretScope$1 } from \"@alfe/types\";\n\n//#region src/index.d.ts\n\ninterface AgentApiClientConfig {\n apiKey: string;\n apiUrl: string;\n}\ninterface RemoteSessionInfo {\n sessionId: string;\n agentId: string;\n surface: \"browser\" | \"terminal\";\n status: \"agent_driving\" | \"awaiting_human\" | \"human_in_control\" | \"resuming\" | \"completed\" | \"expired\" | \"failed\";\n url?: string;\n instructions?: string;\n requestedAt?: string;\n}\ninterface SyncAgentInfo {\n agentId: string;\n tenantId: string;\n displayName: string;\n s3Prefix: string;\n status: \"stale\" | \"syncing\" | \"synced\";\n fileCount?: number;\n totalSize?: number;\n lastSync?: string;\n}\ninterface SyncManifestEntry {\n hash: string;\n size: number;\n modified: string;\n etag?: string;\n storageClass?: string;\n compressed?: boolean;\n}\ninterface SyncManifest {\n version: 1;\n agentId: string;\n lastSync: string;\n files: Record<string, SyncManifestEntry>;\n}\ninterface SyncPresignedUrl {\n path: string;\n url: string;\n expiresAt: string;\n}\ninterface SyncConfirmedUpload {\n filePath: string;\n hash: string;\n size: number;\n storageClass: \"STANDARD\" | \"GLACIER_IR\";\n syncedAt: string;\n}\ninterface SyncReconstructFile {\n path: string;\n size: number;\n url: string;\n storageClass?: string;\n compressed?: boolean;\n}\ninterface SyncReconstructBundle {\n agentId: string;\n mode: \"full\" | \"active\" | \"memory\";\n fileCount: number;\n totalSize: number;\n files: SyncReconstructFile[];\n expiresAt: string;\n}\ninterface SyncAgentStats {\n agentId: string;\n standardBytes: number;\n glacierBytes: number;\n fileCount: number;\n lastSyncAt: string | null;\n}\ninterface SyncFileEntry {\n filePath: string;\n size: number;\n modified: string;\n contentHash: string;\n storageClass?: string;\n compressed?: boolean;\n}\ninterface SyncSessionEntry {\n sessionId: string;\n size: number;\n lastModified: string;\n storageClass?: string;\n isArchived: boolean;\n}\ninterface SyncSessionContent {\n sessionId: string;\n content: string;\n compressed: boolean;\n}\ninterface SharedFileEntry {\n filePath: string;\n fileName: string;\n size: number;\n contentType?: string;\n}\ntype KnowledgeScopeType = \"org\" | \"team\" | \"project\";\ninterface KnowledgeScope {\n scopeType: KnowledgeScopeType;\n scopeId: string;\n name: string;\n}\ninterface KnowledgeSearchHit {\n id: string;\n text: string;\n /** Normalized relevance in (0,1]; higher = closer. */\n score: number;\n scopeType: KnowledgeScopeType;\n scopeId: string;\n source: \"doc\" | \"fact\";\n /** Present when `source === \"doc\"` — the canonical file under shared/<scope>/. */\n filePath?: string;\n /** Present when `source === \"fact\"`. */\n factId?: string;\n}\ninterface KnowledgeSearchResult {\n results: KnowledgeSearchHit[];\n /** True when fan-out breadth was capped (more member scopes than the cap). */\n truncatedScopes: boolean;\n}\ninterface KnowledgeProfileLink {\n label: string;\n url: string;\n}\ninterface KnowledgeProfile {\n scopeType: KnowledgeScopeType;\n scopeId: string;\n about: string | null;\n description: string | null;\n links: KnowledgeProfileLink[];\n updatedAt: string | null;\n updatedBy: string | null;\n}\ninterface KnowledgeFact {\n factId: string;\n scopeType: KnowledgeScopeType;\n scopeId: string;\n text: string;\n sourceType: string;\n createdBy: string;\n createdAt: string;\n updatedAt: string;\n}\ninterface KnowledgeDoc {\n filePath: string;\n fileName: string;\n contentType?: string;\n size: number;\n uploadedBy?: string;\n createdAt: string;\n updatedAt: string;\n}\n/** Voice settings — core agent config. Mirrors `VoiceConfig` in `@alfe/types`. */\ninterface AgentVoiceConfig {\n /** ElevenLabs voice ID; platform default when unset. */\n voiceId?: string;\n ttsModel?: string;\n enabled?: boolean;\n}\n/**\n * The agent's own public identity, as returned by `updateSelf`, `generateAvatar`,\n * `presignAvatar`'s finalize (`finalizeAvatar`). This is the public agent\n * projection; only the identity-relevant fields are typed here — the response\n * carries the full public agent record.\n */\ninterface AgentSelf {\n agentId: string;\n tenantId: string;\n name: string;\n avatarUrl?: string;\n voiceConfig?: AgentVoiceConfig;\n status: string;\n}\n/** Result of `presignAvatar` — the agent PUTs bytes to `uploadUrl`, then finalizes with `s3Key`. */\ninterface AgentAvatarPresign {\n /** Presigned PUT URL to upload the image bytes to. */\n uploadUrl: string;\n /** Object key — echoed back to `finalizeAvatar`. */\n s3Key: string;\n /** Stable public URL the avatar will be served from once finalized. */\n publicUrl: string;\n /** ISO expiry of the presigned PUT URL. */\n expiresAt: string;\n}\n/** A voice in the platform catalogue (ElevenLabs), from `listVoices`. */\ninterface AgentVoice {\n id: string;\n name: string;\n previewUrl: string;\n description: string;\n labels: Record<string, string>;\n category: string;\n}\n/** The ElevenLabs models with a pricing row — the TTS endpoint rejects any other value. */\ntype VoiceTtsModel = \"eleven_turbo_v2_5\" | \"eleven_multilingual_v2\";\ninterface VoiceTtsArgs {\n /** Text to synthesize (1–5000 chars — the endpoint enforces this). */\n text: string;\n /** ElevenLabs voice id; platform default when unset. */\n voiceId?: string;\n /** TTS model; `eleven_turbo_v2_5` (lower latency) when unset. */\n model?: VoiceTtsModel;\n}\n/** Raw synthesized audio plus its PCM framing (from the response headers). */\ninterface VoiceTtsResult {\n /** Raw little-endian PCM samples — no container. Wrap in WAV to make a playable file. */\n audio: Buffer;\n /** Samples per second (e.g. 24000). */\n sampleRate: number;\n /** Channel count (mono = 1). */\n channels: number;\n /** Bits per sample (e.g. 16). */\n bitDepth: number;\n}\ninterface VoiceSttArgs {\n /** Raw linear16 (16-bit little-endian) mono PCM samples — no WAV/container header. */\n audio: Uint8Array;\n /** Sample rate of `audio` in Hz (8000–48000). */\n sampleRate: number;\n}\ninterface VoiceSttResult {\n text: string;\n /** Deepgram confidence in (0,1]. */\n confidence: number;\n}\ndeclare class AgentApiClient {\n private readonly apiKey;\n private readonly apiUrl;\n constructor(config: AgentApiClientConfig);\n private request;\n syncRegister(args?: {\n displayName?: string;\n }): Promise<{\n agent: SyncAgentInfo;\n }>;\n syncGetManifest(): Promise<SyncManifest>;\n syncPresign(args: {\n files: {\n path: string;\n operation: \"put\" | \"get\";\n contentType?: string;\n }[];\n }): Promise<{\n urls: SyncPresignedUrl[];\n }>;\n syncConfirmUpload(args: {\n filePath: string;\n hash: string;\n size: number;\n storageClass?: \"STANDARD\" | \"GLACIER_IR\";\n }): Promise<SyncConfirmedUpload>;\n syncReconstruct(args: {\n mode: \"full\" | \"active\" | \"memory\";\n }): Promise<SyncReconstructBundle>;\n syncGetStats(): Promise<SyncAgentStats>;\n syncListFiles(args?: {\n prefix?: string;\n }): Promise<{\n files: SyncFileEntry[];\n }>;\n syncListSessions(): Promise<{\n sessions: SyncSessionEntry[];\n }>;\n syncGetSession(sessionId: string): Promise<SyncSessionContent>;\n syncDeleteFile(filePath: string): Promise<{\n removed: boolean;\n }>;\n sharedListFiles(args: {\n scope: \"org\" | \"team\" | \"project\";\n scopeId: string;\n }): Promise<{\n files: SharedFileEntry[];\n nextCursor: string | null;\n }>;\n sharedDownloadUrl(args: {\n scope: \"org\" | \"team\" | \"project\";\n scopeId: string;\n filePath: string;\n }): Promise<{\n downloadUrl: string;\n expiresIn: number;\n }>;\n listIntegrations(): Promise<IntegrationInstall$1[]>;\n getIntegrationConfig(integrationId: string): Promise<IntegrationConfigResult$1>;\n updateIntegrationConfig(integrationId: string, config: Record<string, unknown>): Promise<void>;\n installIntegration(integrationId: string, options?: {\n version?: string;\n config?: Record<string, unknown>;\n }): Promise<IntegrationInstall$1>;\n removeIntegration(integrationId: string): Promise<IntegrationInstall$1>;\n getOAuthUrl(provider: string, scopes?: string[]): Promise<{\n url: string;\n provider: string;\n expiresIn: number;\n }>;\n getOAuthStatus(provider: string): Promise<{\n provider: string;\n connected: boolean;\n config?: Record<string, string>;\n }>;\n getRegistry(): Promise<{\n integrations: RegistryEntry$1[];\n }>;\n /**\n * Returns every connected Google account for the agent. Multi-account by\n * design — the openclaw-google plugin requires the LLM to pass `email`\n * explicitly to `google_run_command` so an account is always selected\n * deliberately.\n *\n * 2026-05-14 (connections-redesign PR 1): the legacy flat shape (`email`,\n * `refreshToken`, `accessToken`, etc., populated from the default account)\n * is gone. Iterate over `accounts`.\n */\n getGoogleCredentials(): Promise<{\n accounts: {\n email: string;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n displayName?: string;\n connectedAt?: string;\n }[];\n }>;\n disconnectGoogleAccount(email: string): Promise<{\n accounts: {\n email: string;\n displayName?: string;\n connectedAt?: string;\n }[];\n }>;\n getGoogleChatCredentials(): Promise<{\n email: string;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n displayName?: string;\n }>;\n /**\n * Fetch decrypted credentials for ONE specific connection by its\n * stable connectionId (connection-scoped, vs the provider-scoped\n * `get<Provider>Credentials` helpers). Used by the daemon to resolve\n * a Custom Connection-driven integration's credentials from the\n * exact connection it was installed from — every custom connection\n * shares the `custom` provider id, so provider-scoping is ambiguous.\n *\n * For custom connections `accessToken` is the JSON-encoded secret\n * bundle (the daemon un-bundles it); non-secret fields are on\n * `providerMetadata`. The endpoint enforces that the connection is in\n * the calling agent's effective scope (403 otherwise).\n */\n getConnectionCredentials(connectionId: string): Promise<{\n provider: string;\n connectionId: string;\n accountIdentifier?: string;\n accessToken?: string;\n providerMetadata?: Record<string, unknown>;\n [key: string]: unknown;\n }>;\n /**\n * @deprecated Returns a single primary credential blob (legacy \"pick-the-\n * default-connection\" shape). Use `getGithubAccounts()` for the multi-\n * account shape required by Pattern A — explicit selector args on every\n * tool. Retained because the `@alfe.ai/github-mcp` proxy is the\n * only consumer that knows about Pattern A; legacy env-interpolation\n * callers will keep hitting `/credentials` until they move to the proxy.\n */\n getGithubCredentials(): Promise<{\n login: string;\n accessToken: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for GitHub.\n *\n * Returns every agent-scoped GitHub connection. The caller is expected\n * to require a `login` selector on every credential-touching tool and\n * look up the matching account at dispatch time.\n *\n * GitHub OAuth tokens have no expiry (`tokenLifecycle: \"no_expiry\"`),\n * so there is intentionally no `refreshGithubAccountToken` method — if\n * a token is revoked the user must re-run the OAuth flow.\n *\n * Returned `accounts[i].login` is the GitHub username — the stable\n * cross-session identifier the LLM should pass.\n */\n getGithubAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n login: string;\n scopes: string;\n }[];\n }>;\n /**\n * @deprecated Returns a single primary credential blob (legacy \"pick-the-\n * default-connection\" shape). Use `getXeroAccounts()` for the multi-\n * account shape required by Pattern A — explicit selector args on every\n * tool. This method will be removed once all consumers migrate.\n */\n getXeroCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n xeroTenantId: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for Xero. Returns every\n * agent-scoped Xero connection. The caller is expected to require a\n * selector arg (e.g. `xeroTenantId`) on every credential-touching tool\n * and look up the matching account by that selector at dispatch time.\n *\n * Returned `accounts[i].accountIdentifier` is the Xero tenantId — the\n * stable cross-session identifier the LLM should pass.\n */\n getXeroAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n accessTokenExpiresAt: string;\n xeroTenantId: string;\n }[];\n }>;\n refreshXeroToken(): Promise<{\n accessToken: string;\n expiresAt: string;\n }>;\n /**\n * Pattern A: refresh a specific Xero connection by its `accountIdentifier`\n * (the Xero `tenantId`). The legacy `refreshXeroToken()` only refreshes\n * the *primary* connection, which is wrong for multi-tenant Xero where\n * each tenant has its own non-interchangeable access token.\n */\n refreshXeroAccountToken(xeroTenantId: string): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n expiresAt: string;\n }>;\n /**\n * @deprecated Returns a single primary credential blob (legacy \"pick-the-\n * default-connection\" shape). Use `getNotionAccounts()` for the multi-\n * account shape required by Pattern A.\n */\n getNotionCredentials(): Promise<{\n accessToken: string;\n workspaceId: string;\n workspaceName: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for Notion. Returns every\n * agent-scoped Notion connection. The caller is expected to require a\n * selector arg (e.g. `workspaceId`) on every credential-touching tool.\n *\n * Returned `accounts[i].accountIdentifier` is the Notion workspaceId.\n */\n getNotionAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n workspaceId: string;\n workspaceName: string;\n }[];\n }>;\n /**\n * @deprecated Returns a single primary Atlassian Connection's credentials\n * (one OAuth user, one cloudId) — the legacy \"pick-the-default-connection\"\n * shape. Atlassian is multi-site by nature (each OAuth user may have\n * access to multiple Cloud sites), so Pattern A plugins MUST use\n * `getAtlassianAccounts()` to discover the full set and dispatch via\n * the `cloudId` selector arg.\n */\n getAtlassianCredentials(): Promise<{\n accessToken: string;\n refreshToken: string;\n accessTokenExpiresAt: string;\n cloudId: string;\n siteName: string;\n siteUrl: string;\n email: string;\n enabledProducts: string[];\n clientId: string;\n clientSecret: string;\n }>;\n refreshAtlassianToken(): Promise<{\n accessToken: string;\n expiresAt: string;\n }>;\n /**\n * Pattern A: multi-account / multi-site credential fetch for Atlassian.\n *\n * Returns every agent-scoped Atlassian Connection. Each Connection is\n * one OAuth user with a single access token and N accessible Cloud\n * sites (`availableSites`). The caller is expected to:\n *\n * 1. Flatten (connection × cloudId) into one MCP child per site.\n * 2. Require a `cloudId` selector on every credential-touching tool.\n * 3. Use the access token bound to the Connection that owns the\n * requested `cloudId` (Atlassian shares one access token across\n * all sites accessible to the OAuth user).\n *\n * Per-account token refresh uses `refreshAtlassianAccountToken(email)`\n * — refreshing one Connection rotates its single access token, which\n * then applies to every cloudId for that Connection.\n *\n * Returned `accounts[i].accountIdentifier` is the OAuth user's email\n * — the stable cross-session identifier for refresh purposes. The LLM\n * never sees this directly: it picks a site via the `cloudId` arg\n * instead.\n */\n getAtlassianAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n accessTokenExpiresAt: string;\n clientId: string;\n clientSecret: string;\n cloudId: string;\n siteName: string;\n siteUrl: string;\n availableSites: {\n id: string;\n url: string;\n name: string;\n scopes?: string[];\n avatarUrl?: string;\n }[];\n }[];\n }>;\n /**\n * Pattern A: refresh a specific Atlassian Connection by `accountIdentifier`\n * (the OAuth user's email).\n *\n * Atlassian rotates refresh tokens (`rotatesRefreshToken: true`); the\n * server-side per-account refresh endpoint handles rotation and\n * persistence. Refreshing one Connection updates its single access\n * token, which applies to every accessible Cloud site (cloudId) for\n * that OAuth user.\n *\n * Returns the new access token + expiry. The proxy is responsible for\n * fanning the new token out to every child server it spawned for\n * cloudIds owned by this Connection.\n */\n refreshAtlassianAccountToken(accountIdentifier: string): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n expiresAt: string;\n }>;\n /**\n * @deprecated Returns a single primary credential blob (legacy \"pick-the-\n * default-connection\" shape). Use `getMYOBAccounts()` for the multi-\n * account shape required by Pattern A.\n */\n getMYOBCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n myobBusinessId: string;\n clientId: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for MYOB. Returns every\n * agent-scoped MYOB connection. The caller is expected to require a\n * selector arg (e.g. `myobBusinessId` / `accountIdentifier`) on every\n * credential-touching tool.\n *\n * Returned `accounts[i].accountIdentifier` is the MYOB businessId.\n */\n getMYOBAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n accessTokenExpiresAt: string;\n myobBusinessId: string;\n clientId: string;\n }[];\n }>;\n refreshMYOBToken(): Promise<{\n accessToken: string;\n expiresAt: string;\n }>;\n /**\n * @deprecated Returns a single primary credential blob. Use\n * `getSalesforceAccounts()` for the multi-account shape required by\n * Pattern A.\n */\n getSalesforceCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n instanceUrl: string;\n orgId: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for Salesforce. Returns every\n * agent-scoped Salesforce connection. One OAuth grant maps to one org, so\n * `accounts[i].accountIdentifier` (and `orgId`) is the Salesforce org id —\n * the selector every credential-touching tool requires.\n */\n getSalesforceAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n accessTokenExpiresAt: string;\n instanceUrl: string;\n orgId: string;\n }[];\n }>;\n /**\n * Refresh the access token for a specific Salesforce org. Salesforce\n * tokens aren't interchangeable across orgs, so the connection is targeted\n * by `accountIdentifier` (the org id) — mirrors `refreshXeroAccountToken`.\n */\n refreshSalesforceAccountToken(orgId: string): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n expiresAt: string;\n }>;\n /**\n * Microsoft 365 (delegated OAuth) credential fetch — single-account shape.\n *\n * @deprecated Use `getMicrosoftAccounts()` and dispatch via the `email`\n * selector once per-account plugins land. Retained because the existing\n * `integrations/connect/microsoft/hooks/post_activate.mjs` writes\n * `mgc` credentials for the single (default) Microsoft account.\n *\n * Returns the agent's effective Microsoft delegated-OAuth credentials.\n * Distinct from `getTeamsCredentials()` (Azure bot credentials for the\n * Teams adapter, which is admin-consent flow on services/microsoft, not\n * delegated OAuth on services/connect).\n */\n getMicrosoftCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt?: string;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n email?: string;\n microsoftTenantId?: string;\n workspaceDomain?: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for Microsoft 365.\n *\n * Returns every agent-scoped Microsoft connection. The caller is expected\n * to require an `email` selector on every credential-touching tool and\n * look up the matching account at dispatch time.\n *\n * Returned `accounts[i].accountIdentifier` is the user's primary email\n * (or the tid claim as fallback) — the stable cross-session identifier\n * the LLM should pass.\n *\n * Per-account token refresh is exposed via `refreshMicrosoftAccountToken`,\n * NOT `refreshXeroAccountToken` — Microsoft refresh tokens are not\n * interchangeable across (tenant, user) pairs.\n */\n getMicrosoftAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n accessTokenExpiresAt: string;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n email: string;\n microsoftTenantId: string;\n workspaceDomain: string;\n }[];\n }>;\n /**\n * Pattern A: refresh a specific Microsoft 365 connection by its\n * `accountIdentifier`. For Microsoft, `accountIdentifier` is the user's\n * email when the Graph profile fetch succeeded at connect time, and the\n * Azure tenant id (`tid` claim) as fallback. Callers should pass the\n * value returned by `getMicrosoftAccounts()` rather than synthesising\n * an email locally.\n *\n * Microsoft refresh tokens are bound to a specific (tenant, user) pair —\n * they are NOT interchangeable across accounts, so per-account refresh\n * is mandatory. The generic /accounts/{accountIdentifier}/refresh\n * endpoint walks the agent's full visible scope chain to find a matching\n * connection (works for inherited team/project Microsoft connections).\n */\n refreshMicrosoftAccountToken(accountIdentifier: string): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n expiresAt: string;\n }>;\n getTeamsCredentials(): Promise<{\n agentId: string;\n tenantId: string;\n azureAppId: string;\n azureBotId: string;\n azureClientSecret: string;\n botDisplayName?: string;\n teamsTenantId?: string;\n serviceUrl?: string;\n }>;\n sendTeamsMessage(data: {\n conversationId: string;\n text?: string;\n adaptiveCard?: Record<string, unknown>;\n }): Promise<{\n ok: boolean;\n activityId: string;\n }>;\n listTeamsChannels(): Promise<{\n channels: {\n id: string;\n name: string;\n description?: string;\n }[];\n }>;\n presignAttachments(files: {\n filename: string;\n mimeType: string;\n size: number;\n }[]): Promise<{\n attachments: {\n id: string;\n uploadUrl: string;\n downloadUrl: string;\n s3Key: string;\n expiresAt: string;\n }[];\n }>;\n /**\n * Generate an image from a text prompt and get back a STABLE, public URL\n * (served from the agent-assets CDN — it does not expire). The image is\n * generated + stored server-side; embed the returned `imageUrl` in a reply as\n * markdown to show it to the user.\n *\n * Unlike most methods this reads the server's error body so a bad-request\n * detail (e.g. an unsupported `size`) reaches the caller instead of an opaque\n * \"request failed (400)\". Not retried — generation is expensive and\n * non-idempotent.\n */\n generateImage(args: {\n prompt: string;\n model?: string;\n size?: string;\n quality?: string;\n }): Promise<{\n imageUrl: string;\n model: string;\n }>;\n recordActivity(data: {\n userId?: string;\n channel: string;\n role: \"user\" | \"assistant\";\n }): Promise<{\n recorded: boolean;\n }>;\n /** Update the agent's own name and/or voice config. Returns the updated agent. */\n updateSelf(update: {\n name?: string;\n voiceConfig?: AgentVoiceConfig;\n }): Promise<AgentSelf>;\n /**\n * Generate the agent's own avatar from a text prompt. The image is generated,\n * stored, and set on the agent server-side; returns the updated agent.\n */\n generateAvatar(args: {\n prompt: string;\n }): Promise<AgentSelf>;\n /**\n * Get a presigned PUT URL to upload a new avatar image. Upload the bytes to\n * `uploadUrl`, then call `finalizeAvatar(s3Key)` to set it on the agent.\n */\n presignAvatar(args: {\n mimeType: string;\n size: number;\n }): Promise<AgentAvatarPresign>;\n /**\n * Finalize an avatar upload — validates ownership + size, then sets the\n * agent's `avatarUrl` server-side. Returns the updated agent.\n */\n finalizeAvatar(s3Key: string): Promise<AgentSelf>;\n /** List the platform voice catalogue (ElevenLabs) so the agent can pick its own voice. */\n listVoices(): Promise<{\n voices: AgentVoice[];\n }>;\n /**\n * Mint a fresh AES-256 data key for a specific (secret, field) pair. The\n * encryption context is rebuilt server-side from `auth.tenantId` + the body\n * fields including `fieldKey`; the agent cannot forge context for a scope\n * or field it doesn't own. Legacy single-envelope secrets are migrated to\n * `field#value` rows by the data migration, so call with `fieldKey: \"value\"`\n * to reach them.\n */\n generateSecretDataKey(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n fieldKey: string;\n }): Promise<GeneratedDataKey$1>;\n /**\n * Unwrap a wrapped data key so the agent can decrypt the envelope locally.\n * `fieldKey` MUST match the value supplied when the data key was generated\n * (it's bound into KMS encryption context); mismatch fails with\n * `InvalidCiphertextException`.\n */\n decryptSecretDataKey(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n fieldKey: string;\n dataKeyCiphertext: string;\n }): Promise<{\n plaintextKey: string;\n }>;\n /**\n * Create a new secret with one or more fields. Encrypted fields must arrive\n * pre-sealed (the agent has already obtained per-field data keys via\n * `generateSecretDataKey({ ..., fieldKey })` and AES-encrypted locally).\n * Plaintext fields ship the value inline.\n */\n createSecret(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n secretName: string;\n category?: SecretCategory$1;\n description?: string;\n tags?: string[];\n fields: {\n key: string;\n format?: FieldFormat$1;\n sensitivity: FieldSensitivity$1;\n value?: string;\n envelope?: EncryptedEnvelopeV1$1;\n }[];\n reason?: string;\n }): Promise<SecretAggregate$1>;\n /** Fetch the secret aggregate plus per-field encrypted envelopes. */\n getSecret(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n }): Promise<{\n aggregate: SecretAggregate$1;\n envelopes: FieldEnvelope$1[];\n }>;\n /** Fetch one field. Plaintext: value inline. Encrypted: envelope. */\n getSecretField(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n fieldKey: string;\n }): Promise<{\n key: string;\n sensitivity: FieldSensitivity$1;\n format?: FieldFormat$1;\n value?: string;\n envelope?: EncryptedEnvelopeV1$1;\n rotatedAt?: string;\n createdAt: string;\n updatedAt: string;\n }>;\n /** Add OR rotate one field. */\n setSecretField(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n fieldKey: string;\n sensitivity: FieldSensitivity$1;\n format?: FieldFormat$1;\n value?: string;\n envelope?: EncryptedEnvelopeV1$1;\n reason?: string;\n }): Promise<{\n fieldKey: string;\n rotated: boolean;\n }>;\n /** Remove one field. */\n removeSecretField(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n fieldKey: string;\n }): Promise<void>;\n /** Update secret-level metadata (name/description/tags/category). */\n updateSecretMetadata(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n secretName?: string;\n description?: string;\n tags?: string[];\n category?: SecretCategory$1;\n reason?: string;\n }): Promise<SecretAggregate$1>;\n /** List metadata for secrets in a scope. Optional filters route through the byFacet GSI. */\n listSecrets(args: {\n scope: SecretScope$1;\n scopeId: string;\n category?: SecretCategory$1;\n tag?: string;\n fieldKey?: string;\n }): Promise<SecretMetadata$1[]>;\n /** Bounded changelog read — metadata-only audit entries. */\n getSecretHistory(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n limit?: number;\n cursor?: string;\n }): Promise<{\n entries: ChangelogEntry$1[];\n nextCursor?: string;\n }>;\n /** Delete a secret (and all its field rows + tag rows + changelog rows). */\n deleteSecret(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n }): Promise<void>;\n /** Enumerate scopes (org/team/project/agent) this agent can access. */\n listSecretScopes(): Promise<ScopeInfo$1[]>;\n /**\n * Returns the calling agent's own identity context — `{ agentId, tenantId }`\n * decoded server-side from the agent API token. Used by the\n * `@alfe.ai/openclaw-identity` plugin to bootstrap context when the\n * OpenClaw daemon doesn't plumb `ctx.agentId` through to plugin hooks.\n * Plugins should cache this for the daemon's lifetime (single-agent-per-\n * process invariant). One HTTP round-trip per process activate; not for\n * per-call use.\n */\n whoami(): Promise<{\n agentId: string;\n tenantId: string;\n }>;\n resolveIdentity(args: {\n provider: string;\n platformId: string;\n kind?: \"user\" | \"agent\" | \"service\" | \"bot\" | \"workspace\";\n displayName?: string;\n }): Promise<{\n identityId: string | null;\n status: string;\n created?: boolean;\n reason?: string;\n /**\n * Flattened auriclabs permission strings for the resolved identity\n * (scope-prefixed where applicable). Empty array on miss / org service\n * outage — the runtime gate fails closed in that case.\n */\n permissions: string[];\n }>;\n searchIdentities(args?: {\n q?: string;\n status?: string;\n limit?: number;\n }): Promise<{\n identities: unknown[];\n }>;\n getIdentityContext(identityId: string): Promise<{\n context: unknown;\n }>;\n mergeIdentities(survivorId: string, args: {\n mergedId: string;\n changedBy: {\n type: string;\n id: string;\n name?: string;\n };\n }): Promise<{\n ok: boolean;\n error?: string;\n }>;\n unmergeIdentity(identityId: string, args: {\n changedBy: {\n type: string;\n id: string;\n name?: string;\n };\n }): Promise<{\n ok: boolean;\n error?: string;\n }>;\n addIdentityNote(identityId: string, args: {\n content: string;\n category?: string;\n changedBy: {\n type: string;\n id: string;\n name?: string;\n };\n }): Promise<{\n noteId: string | null;\n }>;\n tagIdentity(identityId: string, args: {\n tag: string;\n action: \"add\" | \"remove\";\n changedBy: {\n type: string;\n id: string;\n name?: string;\n };\n }): Promise<{\n ok: boolean;\n }>;\n getIdentityChangelog(identityId: string, args?: {\n limit?: number;\n }): Promise<{\n entries: unknown[];\n }>;\n rollbackIdentity(identityId: string, args: {\n targetVersion: number;\n changedBy: {\n type: string;\n id: string;\n name?: string;\n };\n }): Promise<{\n ok: boolean;\n entry?: unknown;\n }>;\n requestIdentityVerification(args: {\n claimedIdentityId: string;\n requestingIdentityId: string;\n requestingProvider: string;\n requestingPlatformId: string;\n preferredChannel?: \"mobile\" | \"email\";\n /**\n * Phase 2: agent-supplied contact endpoint. When provided, the top-level\n * `preferredChannel` is ignored — the contact's channel wins.\n */\n contact?: {\n channel: \"email\" | \"mobile\";\n value: string;\n };\n }): Promise<{\n verificationId: string;\n channel: string;\n deliveredTo: string;\n expiresAt: string;\n availableChannels: {\n channel: string;\n deliveredTo: string;\n }[];\n } | {\n error: string;\n }>;\n confirmIdentityVerification(args: {\n claimedIdentityId: string;\n verificationId: string;\n phrase: string;\n }): Promise<{\n verified: boolean;\n identityId?: string;\n /** Phase 2: how the confirm resolved — Scenario A vs B. */\n action?: \"merged\" | \"contact_verified\";\n error?: string;\n }>;\n /**\n * Update display-shape fields on an Identity. Body excludes `email` /\n * `phone` / `title` / `company` / `metadata` per Section D4 — contacts go\n * via the verify flow, title/company live on OrgMembership, metadata is\n * not agent-writable.\n */\n updateIdentity(identityId: string, args: {\n name?: string;\n avatarUrl?: string;\n timezone?: string;\n locale?: string;\n }): Promise<{\n ok: boolean;\n }>;\n /**\n * Phase 2 (Section H): server-side verification of a Google Chat sender via\n * the agent's existing Google OAuth credentials. Returns the resolved\n * identity (created or matched via Scenario-B email enrichment).\n */\n resolveGoogleChatSender(args: {\n senderUserId: string;\n spaceId?: string;\n }): Promise<{\n identityId: string | null;\n status: string;\n }>;\n memorySearch(query: string, opts?: {\n limit?: number;\n topic?: string;\n subtopic?: string;\n tag?: string;\n includeKnowledge?: boolean;\n }): Promise<{\n facts: {\n subject: string;\n predicate: string;\n object: string;\n since: string;\n confidence: number;\n }[];\n memories: {\n id: string;\n text: string;\n topic: string;\n subtopic: string;\n tag: string;\n importance: number;\n timestamp: number;\n score: number;\n }[];\n }>;\n memoryStore(text: string, opts?: {\n topic?: string;\n subtopic?: string;\n tag?: string;\n importance?: number;\n }): Promise<{\n memoryId: string;\n }>;\n memoryIngest(sessionKey: string, messages: {\n role: string;\n content: string;\n index: number;\n timestamp?: string;\n }[], metadata?: {\n channelId?: string;\n userId?: string;\n userName?: string;\n }): Promise<{\n queued: boolean;\n messageCount: number;\n }>;\n memoryLoadContext(tier?: number, topicHint?: string): Promise<{\n formatted: string;\n [key: string]: unknown;\n }>;\n memoryLookupEntity(subject: string): Promise<{\n subject: string;\n triples: {\n tripleId: string;\n predicate: string;\n object: string;\n validFrom: string;\n validTo?: string;\n confidence: number;\n }[];\n }>;\n memoryNavigate(): Promise<{\n topics: {\n name: string;\n tripleCount: number;\n subtopics: string[];\n }[];\n cursor: string | null;\n }>;\n memoryDelete(memoryId: string): Promise<{\n deleted: boolean;\n }>;\n memoryStats(): Promise<{\n vectorCount: number;\n tripleCount: number;\n storageEstimateBytes: number;\n lastIngestionAt?: string;\n }>;\n memoryLearn(args: {\n text: string;\n source?: string;\n sourceType?: \"file\" | \"url\" | \"inline\";\n metadata?: {\n sessionId?: string;\n channelId?: string;\n userName?: string;\n };\n }): Promise<{\n memoriesStored: number;\n triplesStored: number;\n chunks: number;\n source?: string;\n }>;\n memoryBootstrapStatus(): Promise<{\n synced: boolean;\n syncedAt?: string;\n sessionsBackfillSynced?: boolean;\n sessionsBackfillSyncedAt?: string;\n }>;\n memoryBootstrapStatusMark(scope?: \"files\" | \"sessions\"): Promise<{\n synced: true;\n syncedAt: string;\n }>;\n searchWeb(params: {\n query: string;\n count?: number;\n offset?: number;\n country?: string;\n freshness?: string;\n }): Promise<unknown>;\n searchImages(params: {\n query: string;\n count?: number;\n }): Promise<unknown>;\n searchNews(params: {\n query: string;\n count?: number;\n freshness?: string;\n }): Promise<unknown>;\n /**\n * Semantic search across the agent's member scopes. Fan-out is gated\n * server-side by `listScopes` set-inclusion (fail-closed). Pass\n * `scopeType` + `scopeId` to narrow to one scope; a non-member scope\n * yields empty results (never a cross-scope leak).\n */\n knowledgeSearch(query: string, opts?: {\n limit?: number;\n scopeType?: KnowledgeScopeType;\n scopeId?: string;\n }): Promise<KnowledgeSearchResult>;\n /** Enumerate the scopes (org + teams + projects) this agent belongs to. */\n listScopes(): Promise<{\n scopes: KnowledgeScope[];\n }>;\n /** Read a scope's structured knowledge profile (after membership check). */\n getScopeProfile(scopeType: KnowledgeScopeType, scopeId: string): Promise<KnowledgeProfile>;\n /** List a scope's facts (non-semantic, full enumeration). */\n listScopeFacts(scopeType: KnowledgeScopeType, scopeId: string, opts?: {\n limit?: number;\n cursor?: string;\n }): Promise<{\n facts: KnowledgeFact[];\n nextCursor: string | null;\n }>;\n /**\n * Publish a fact at a scope. This is the deliberate cross-agent learning\n * boundary — facts are attributable (the agent is recorded as author) and\n * never an automatic merge. Membership is enforced server-side (403 for a\n * non-member scope).\n */\n createScopeFact(scopeType: KnowledgeScopeType, scopeId: string, text: string): Promise<KnowledgeFact>;\n /** Delete a fact at a scope. */\n deleteScopeFact(scopeType: KnowledgeScopeType, scopeId: string, factId: string): Promise<{\n removed: boolean;\n }>;\n /** List a scope's docs (the org-files corpus; mirrored to shared/<scope>/). */\n listScopeDocs(scopeType: KnowledgeScopeType, scopeId: string, opts?: {\n limit?: number;\n cursor?: string;\n }): Promise<{\n files: KnowledgeDoc[];\n nextCursor: string | null;\n }>;\n /**\n * Read the full text of a scope doc. Resolves a presigned download URL\n * from `services/org`, then fetches the bytes directly from S3 (the one\n * legitimate raw fetch in a plugin — same pattern as sync).\n */\n readScopeDoc(scopeType: KnowledgeScopeType, scopeId: string, filePath: string): Promise<{\n filePath: string;\n text: string;\n }>;\n /**\n * Write (create or overwrite) a scope doc. Two-step presigned upload:\n * `services/org` returns a signed URL plus `requiredHeaders` (author /\n * authorKind / message as `x-amz-meta-*`) that MUST be sent verbatim on\n * the PUT, alongside the same `Content-Type` that was signed. Author and\n * authorKind are server-set from the agent token — never trusted here.\n */\n writeScopeDoc(scopeType: KnowledgeScopeType, scopeId: string, filePath: string, content: string, opts?: {\n contentType?: string;\n message?: string;\n }): Promise<{\n filePath: string;\n }>;\n registerDatabaseCredentials(): Promise<{\n connectionString: string;\n username: string;\n password: string;\n databases: string[];\n }>;\n reportDatabaseAudit(entry: {\n database: string;\n collection: string;\n operation: string;\n summary?: string;\n }): Promise<void>;\n requestBrowserTakeover(args: {\n instructions: string;\n url?: string;\n conversationId?: string;\n }): Promise<{\n sessionId: string;\n status: string;\n }>;\n getRemoteSession(sessionId: string): Promise<RemoteSessionInfo>;\n completeRemoteSession(sessionId: string): Promise<{\n ok: boolean;\n }>;\n /**\n * Issue a request that returns the raw `Response` (no JSON parsing, no\n * forced Content-Type). The caller sets `Content-Type`/`Accept` on `headers`\n * and reads the body itself (`arrayBuffer()` / `json()`).\n *\n * A single retry fires only on the same transient statuses `request()`\n * retries (authorizer-timeout 500 + LB 502/503/504) and transient network\n * errors — before the route handler runs — so re-issuing a POST does not\n * risk a duplicate side effect. Voice TTS/STT are effectively idempotent\n * (re-synthesize / re-transcribe) and meter server-side keyed on the\n * gateway requestId, so a retried transcription doesn't double-bill.\n */\n private rawFetch;\n /**\n * Text-to-speech. Returns raw PCM audio bytes plus their framing — the\n * voice service defaults to 24 kHz / mono / 16-bit. Wrap in a WAV container\n * to produce a playable file. Metered per character against the tenant\n * credit pool server-side; TTS completes regardless of metering outcome.\n */\n tts(args: VoiceTtsArgs): Promise<VoiceTtsResult>;\n /**\n * Speech-to-text. Accepts raw linear16 (16-bit LE) mono PCM — NOT a WAV or\n * other container (the endpoint transcribes with a fixed linear16 encoding,\n * so a container header would be transcribed as noise). Strip any WAV header\n * and pass `sampleRate` from it before calling. Metered by transcribed\n * duration against the tenant credit pool server-side.\n */\n stt(args: VoiceSttArgs): Promise<VoiceSttResult>;\n}\n//# sourceMappingURL=index.d.ts.map\n//#endregion\nexport { AgentApiClient, AgentApiClientConfig, AgentAvatarPresign, AgentSelf, AgentVoice, AgentVoiceConfig, type ChangelogAction, type ChangelogActor, type ChangelogEntry, type EncryptedEnvelopeV1, type Field, type FieldEnvelope, type FieldFormat, type FieldSensitivity, type FieldView, type GeneratedDataKey, type IntegrationConfigResult, type IntegrationConfigSchemaField, type IntegrationInstall, KnowledgeDoc, KnowledgeFact, KnowledgeProfile, KnowledgeProfileLink, KnowledgeScope, KnowledgeScopeType, KnowledgeSearchHit, KnowledgeSearchResult, type RegistryEntry, RemoteSessionInfo, type ScopeInfo, type SecretAggregate, type SecretCategory, type SecretMetadata, type SecretScope, SharedFileEntry, SyncAgentInfo, SyncAgentStats, SyncConfirmedUpload, SyncFileEntry, SyncManifest, SyncManifestEntry, SyncPresignedUrl, SyncReconstructBundle, SyncReconstructFile, SyncSessionContent, SyncSessionEntry, VoiceSttArgs, VoiceSttResult, VoiceTtsArgs, VoiceTtsModel, VoiceTtsResult };\n//# sourceMappingURL=index.d.ts.map"],"mappings":";;;;;;;;;AAyBA;AAOA;;;;;AAIA;AAiBiB,UA5BA,aAAA,CA4BY;EA4BP,IAAA,EAAA,MAAA;EAAY,IAAA,EAAA,MAAA;YAEvB,EAAA,MAAA;cAAR,EAAA,UAAA,GAAA,YAAA;;AAmBmB,UAtEL,aAAA,CAsEkB;EAAA,KAAA,EArE1B,MAqE0B,CAAA,MAAA,EArEX,aAqEW,CAAA;;AAGhC,UArEc,cAAA,CAqEd;EAAO,OAAA,EAAA,CAAA;EAUY,OAAA,EAAA,MAAA;EAAmB,QAAA,EAAA,MAAA;OAGhC,EA9EA,MA8EA,CAAA,MAAA,EAAA;IACN,IAAA,EAAA,MAAA;IAAO,IAAA,EAAA,MAAA;IASY,QAAA,EAAA,MAAA;IAgBA,IAAA,CAAA,EAAA,MAAA;IAgBN,YAAa,CAAA,EAAA,MAAA;IAAA,UAAA,CAAA,EAAA,OAAA;;;AAG1B,UA9Gc,YAAA,CA8Gd;EAAY;;;;EC1FF;EAiDS,SAAA,EAAA,MAAA,EAAA;EA+BN;EAuBA,aAAA,EAAA,MAAe,EAAA;AAU/B;;;;AC1Lo2B;AAIt0B;AAIH;AASJ;AAkBbqC,iBF8CY,YAAA,CE9CA,aAAA,EAAA,MAAA,CAAA,EFgDnB,OEhDmB,CFgDX,aEhDW,CAAA;;;;;AAMZE,iBF6DY,aAAA,CE7DI,aAAA,EAAA,MAAA,EAAA,QAAA,EF+Dd,aE/Dc,CAAA,EFgEvB,OEhEuB,CAAA,IAAA,CAAA;AAAA;AAKG;AAOA;AAenBI,iBF+CY,mBAAA,CE/CE,aAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EFkDf,aElDe,CAAA,EFmDrB,OEnDqB,CAAA,IAAA,CAAA;AAAA;AAOD;AAQG;AAYhBI,iBFiCY,mBAAA,CEjCG,aAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EFoCtB,OEpCsB,CAAA,IAAA,CAAA;AAAA;AAMF;AAEQ;AASA;AAarBK,iBFmBY,eAAA,CEnBQ,QAAA,EAAA,MAAA,CAAA,EFmB2B,OEnB3B,CAAA,MAAA,CAAA;AAAA;;;;;AAapBE,iBFsBM,aAAA,CEpBHN,KAAAA,EFqBJ,aErBsB,EAAA,MAAA,EFsBrB,cEtBqB,CAAA,EFuB5B,YEvB4B;AAAA;;;cDnElB;iBAiDS,kBAAA,2CAGnB;iBA4Ba,YAAA;ADhIC,iBCuJD,eAAA,CDvJc,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA;AAOb,iBC0JD,aAAA,CD1Jc,KAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA;;;;;;AAP9B,UErBUf,oBAAAA,CFqBoB;EAO9B,MAAiB,EAAA,MAAA;EAAa,MAAA,EAAA,MAAA;;UExBpBC,iBAAAA,CFyBD;EAAM,SAAA,EAAA,MAAA;EAGf,OAAiB,EAAA,MAAA;EAiBjB,OAAiB,EAAA,SAAY,GAAA,UAAA;EA4B7B,MAAsB,EAAA,eAAY,GAAA,gBAAA,GAAA,kBAAA,GAAA,UAAA,GAAA,WAAA,GAAA,SAAA,GAAA,QAAA;EAAA,GAAA,CAAA,EAAA,MAAA;cAEvB,CAAA,EAAA,MAAA;aAAR,CAAA,EAAA,MAAA;;AAmBH,UErFUC,aAAAA,CFqFyB;EAAA,OAAA,EAAA,MAAA;UAEvB,EAAA,MAAA;aACT,EAAA,MAAA;EAAO,QAAA,EAAA,MAAA;EAUV,MAAsB,EAAA,OAAA,GAAA,SAAmB,GAAA,QAAA;EAAA,SAAA,CAAA,EAAA,MAAA;WAGhC,CAAA,EAAA,MAAA;UACN,CAAA,EAAA,MAAA;;AASH,UErGUC,iBAAAA,CFqG+B;EAgBzC,IAAsB,EAAA,MAAA;EAgBtB,IAAgB,EAAA,MAAA;EAAa,QAAA,EAAA,MAAA;OACpB,EAAA,MAAA;cACC,CAAA,EAAA,MAAA;YACP,CAAA,EAAA,OAAA;;UEhIOC,YAAAA;;;EDsCV,QAAa,EAAA,MAAA;EAiDb,KAAsB,ECnFbC,MDmFa,CAAA,MAAA,ECnFEF,iBDsFrB,CAAA;AA4BH;AAuBA,UCvIUG,gBAAAA,CDuIqB;EAU/B,IAAgB,EAAA,MAAA;;;;AC1Lo1B,UA8C11BC,mBAAAA,CA1CoB;EAAA,QAIpBN,EAAAA,MAAAA;EAAiB,IASjBC,EAAAA,MAAAA;EAAa,IAUbC,EAAAA,MAAAA;EAAiB,YAQjBC,EAAAA,UAAY,GAAA,YAAA;EAAA,QAAA,EAAA,MAAA;;UAkBZI,mBAAAA,CAdDH;EAAM,IAAA,EAAA,MAAA;EAAA,IAELC,EAAAA,MAAAA;EAAgB,GAKhBC,EAAAA,MAAAA;EAAmB,YAOnBC,CAAAA,EAAAA,MAAAA;EAAmB,UAOnBC,CAAAA,EAAAA,OAAAA;AAKkB;AAGJ,UARdA,qBAAAA,CAea;EAAA,OAQbG,EAAAA,MAAAA;EAAgB,IAOhBC,EAAAA,MAAAA,GAAAA,QAAkB,GAAA,QAAA;EAAA,SAKlBC,EAAAA,MAAAA;EAAe,SAMpBC,EAAAA,MAAAA;EAAkB,KACbC,EArCDR,mBAqCe,EAAA;EACO,SAIrBS,EAAAA,MAAAA;AAKqB;AASF,UArDnBP,cAAAA,CAyDAS;EAAoB,OAIpBC,EAAAA,MAAAA;EAAgB,aAAA,EAAA,MAAA;cACbL,EAAAA,MAAAA;WAIJI,EAAAA,MAAAA;EAAoB,UAAA,EAAA,MAAA,GAAA,IAAA;AAAA;AAME,UAjErBR,aAAAA,CAyEY;EAAA,QAUZY,EAAAA,MAAAA;EAAgB,IAYhBC,EAAAA,MAAAA;EAKsB,QAItBC,EAAAA,MAAAA;EAAkB,WAWlBC,EAAAA,MAAU;EAKJ,YAIXC,CAAAA,EAAAA,MAAa;EAAA,UACRC,CAAAA,EAAAA,OAAY;AAMC;AAKR,UAhILhB,gBAAAA,CAwIY;EAEH,SAITqB,EAAAA,MAAAA;EAAc,IAKVC,EAAAA,MAAAA;EAAc,YAAA,EAAA,MAAA;cAGNlC,CAAAA,EAAAA,MAAAA;YAKXE,EAAAA,OAAAA;;UApJDW,kBAAAA,CAsJmBT;WAAR+B,EAAAA,MAAAA;SAQX7B,EAAAA,MAAAA;YADJ6B,EAAAA,OAAAA;;UAxJIrB,eAAAA,CAgKJqB;UAGQ1B,EAAAA,MAAAA;UAAR0B,EAAAA,MAAAA;QACoBzB,MAAAA;aAARyB,CAAAA,EAAAA,MAAAA;;KA9JbpB,kBAAAA,GAiKCoB,KAAAA,GAAAA,MAAAA,GAAAA,SAAAA;UAhKInB,cAAAA,CAoKIJ;WADQuB,EAlKTpB,kBAkKSoB;SAGuBtB,EAAAA,MAAAA;QAARsB,MAAAA;;UAjK3BlB,kBAAAA,CAyKCH;YADLqB;QAQAA,MAAAA;;OAIgBA,EAAAA,MAAAA;WACiCnD,EAhL1C+B,kBAgL0C/B;SAARmD,EAAAA,MAAAA;QACU9B,EAAAA,KAAAA,GAAAA,MAAAA;;UAG5CA,CAAAA,EAAAA,MAAAA;;QACP8B,CAAAA,EAAAA,MAAAA;;UA7KIjB,qBAAAA,CA8KkCiB;SACQA,EA9KzClB,kBA8KyCkB,EAAAA;;iBAKhBA,EAAAA,OAAAA;;UA/K1BhB,oBAAAA,CAoLOgB;OAaSA,EAAAA,MAAAA;OAUgBA,MAAAA;;UAvMhCf,gBAAAA,CAuOaf;WAL2B8B,EAjOrCpB,kBAiOqCoB;SAgBxBA,EAAAA,MAAAA;OAkBHA,EAAAA,MAAAA,GAAAA,IAAAA;aAiBCA,EAAAA,MAAAA,GAAAA,IAAAA;OAcHA,EA9RZhB,oBA8RYgB,EAAAA;WAWCA,EAAAA,MAAAA,GAAAA,IAAAA;WAU2BA,EAAAA,MAAAA,GAAAA,IAAAA;;UA/SvCd,aAAAA,CAqUac;QAmBMA,EAAAA,MAAAA;WAYFA,EAlWdpB,kBAkWcoB;SA0BDA,EAAAA,MAAAA;QAoCiCA,MAAAA;YAUnCA,EAAAA,MAAAA;WAcHA,EAAAA,MAAAA;WAYCA,EAAAA,MAAAA;WASQA,EAAAA,MAAAA;;UArcpBb,YAAAA,CAkesCa;UAkBnBA,EAAAA,MAAAA;UAyBHA,EAAAA,MAAAA;aA8BiCA,CAAAA,EAAAA,MAAAA;QAKlCA,MAAAA;YAaN9B,CAAAA,EAAAA,MAAAA;WACb8B,EAAAA,MAAAA;WAIiBA,EAAAA,MAAAA;;;UAxjBbZ,gBAAAA,CAomBJY;;SAOQX,CAAAA,EAAAA,MAAAA;UAARW,CAAAA,EAAAA,MAAAA;SAOQX,CAAAA,EAAAA,OAAAA;;;;;;;;UAtmBJA,SAAAA,CAioBCzB;SAIGjB,EAAAA,MAAAA;UAARqD,EAAAA,MAAAA;QAQKpC,MAAAA;WAKLoC,CAAAA,EAAAA,MAAAA;aAUKpC,CAAAA,EAvpBKwB,gBAupBLxB;QAIIJ,EAAAA,MAAAA;;;UAvpBL8B,kBAAAA,CA+pBOrD;;WAGX+D,EAAAA,MAAAA;;OAOS1C,EAAAA,MAAAA;;WADT0C,EAAAA,MAAAA;;WAYWxD,EAAAA,MAAAA;;;UAzqBP+C,UAAAA,CAuqBJS;YAYKpC;QAIMpB,MAAAA;YACJF,EAAAA,MAAAA;aAEEL,EAAAA,MAAAA;QAET+D,EAvrBI9B,MAurBJ8B,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;UAMKpC,EAAAA,MAAAA;;;KAzrBN4B,aAAAA,GAssBUhC,mBAAAA,GAAAA,wBAAAA;UArsBLiC,YAAAA,CAusBInC;;QAGHM,MAAAA;;SAKGF,CAAAA,EAAAA,MAAAA;;OAGHE,CAAAA,EA5sBD4B,aA4sBC5B;;;UAzsBD8B,cAAAA,CAotBC9B;;OAKmBR,EAvtBrBuC,MAutBqBvC;;YAUlB4C,EAAAA,MAAAA;;UAyBNA,EAAAA,MAAAA;;UAaAA,EAAAA,MAAAA;;UA/vBIJ,YAAAA,CAqxBJI;;OAgBAA,EAnyBGH,UAmyBHG;;YA4BAA,EAAAA,MAAAA;;UA3zBIF,cAAAA,CA61BJE;QAWAA,MAAAA;;YAkCAA,EAAAA,MAAAA;;cAr4BQD,cAAAA,CAq5B0CC;mBAIjBA,MAAAA;mBAWnBA,MAAAA;aAQcA,CAAAA,MAAAA,EAz6BZnC,oBAy6BYmC;UAGjBA,OAAAA;cAeXA,CAAAA,KAAAA,EAAAA;eAMqBA,CAAAA,EAAAA,MAAAA;MA77BrBA,OAm8BqDA,CAAAA;SAUrDA,EA58BKjC,aA48BLiC;;iBASAA,CAAAA,CAAAA,EAn9BeA,OAm9BfA,CAn9BuB/B,YAm9BvB+B,CAAAA;aASUpB,CAAAA,IAAAA,EAAAA;SAEFG,EAAAA;UAARiB,EAAAA,MAAAA;eAGMnB,EAAAA,KAAAA,GAAAA,KAAAA;iBADImB,CAAAA,EAAAA,MAAAA;OAIapB;MA79BvBoB,OA69BqEf,CAAAA;QAARe,EA59BzD7B,gBA49ByD6B,EAAAA;;mBAMxDd,CAAAA,IAAAA,EAAAA;YADLc,EAAAA,MAAAA;QAUuBpB,EAAAA,MAAAA;QAA4DM,EAAAA,MAAAA;gBAARc,CAAAA,EAAAA,UAAAA,GAAAA,YAAAA;MAp+B3EA,OAs+BuBpB,CAt+BfR,mBAs+BeQ,CAAAA;iBAAsDoB,CAAAA,IAAAA,EAAAA;QAIxDpB,EAAAA,MAAAA,GAAAA,QAAAA,GAAAA,QAAAA;MAv+BrBoB,OA2+BKb,CA3+BGb,qBA2+BHa,CAAAA;cADLa,CAAAA,CAAAA,EAz+BYA,OAy+BZA,CAz+BoBzB,cAy+BpByB,CAAAA;eASoBpB,CAAAA,KAAAA,EAAAA;UAAwDoB,CAAAA,EAAAA,MAAAA;MA/+B5EA,OA0/BqBpB,CAAAA;SAGrBoB,EA5/BKxB,aA4/BLwB,EAAAA;;kBAcAA,CAAAA,CAAAA,EAxgCgBA,OAwgChBA,CAAAA;YAKAA,EA5gCQvB,gBA4gCRuB,EAAAA;;gBAIiCA,CAAAA,SAAAA,EAAAA,MAAAA,CAAAA,EA9gCFA,OA8gCEA,CA9gCMtB,kBA8gCNsB,CAAAA;gBACKA,CAAAA,QAAAA,EAAAA,MAAAA,CAAAA,EA9gCRA,OA8gCQA,CAAAA;WAsBhCP,EAAAA,OAAAA;;iBAAeO,CAAAA,IAAAA,EAAAA;SAQfJ,EAAAA,KAAAA,GAAAA,MAAAA,GAAAA,SAAAA;WAAuBE,EAAAA,MAAAA;MAtiC7BE,OAsiCqBA,CAAAA;IAAO,KAAA,EAriCvBrB,eAqiCuB,EAAA;;;;IC3xCjB,KAAA,EAAA,KAAA,GAAU,MAAA,GAAA,SAAA;IAOV,OAAA,EAAA,MAAA;IAgBD,QAAA,EAAA,MAAA;EAAgB,CAAA,CAAA,EDsO1BqB,OCtO0B,CAAA;eAAG,EAAA,MAAA;aAAe,EAAA,MAAA;;kBAAgC,CAAA,CAAA,ED0O5DA,OC1O4D,CD0OpDhD,kBC1OoD,EAAA,CAAA;+CD2OnCgD,QAAQnD;yBC9NxC,CAAA,aAAA,EAAA,MAAA,EAAA,MAAA,ED+N0CqB,MC/N1C,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,ED+NoE8B,OC/NpE,CAAA,IAAA,CAAA;oBAAR,CAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA;WAwCQ,CAAA,EAAA,MAAA;UAAR,CAAA,ED0LM9B,MC1LN,CAAA,MAAA,EAAA,OAAA,CAAA;MD2LD8B,OC/JqD,CD+J7ChD,kBC/J6C,CAAA;mBAAR,CAAA,aAAA,EAAA,MAAA,CAAA,EDgKPgD,OChKO,CDgKChD,kBChKD,CAAA;aAqCY,CAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,MAAA,EAAA,CAAA,ED4HXgD,OC5HW,CAAA;OAAR,EAAA,MAAA;YAkHxC,EAAA,MAAA;aAAR,EAAA,MAAA;;gBA8DA,CAAA,QAAA,EAAA,MAAA,CAAA,ED/C6BA,OC+C7B,CAAA;YAgDQ,EAAA,MAAA;aAAR,EAAA,OAAA;UAgCA,CAAA,ED5HM9B,MC4HN,CAAA,MAAA,EAAA,MAAA,CAAA;EAAO,CAAA,CAAA;EAmBd,WAAY,CAAA,CAAA,ED7IK8B,OC6IK,CAAA;IAAA,YAAA,ED5IJ9C,aC4II,EAAA;;;;;;;ACnbtB;AAmBA;;;;sBAEG,CAAA,CAAA,EF8RuB8C,OE9RvB,CAAA;IAAO,QAAA,EAAA;;;;MCTO,YAAA,EAAY,MAAA;MA4FP,WAAA,CAAW,EAAA,MAAA;MAAA,WAAA,CAAA,EAAA,MAAA;OAGvB;;yBAEP,CAAA,KAAA,EAAA,MAAA,CAAA,EHgNuCA,OGhNvC,CAAA;IAAO,QAAA,EAAA;;;;ICnGO,CAAA,EAAA;EAqDjB,CAAA,CAAsB;EAAa,wBAAA,CAAA,CAAA,EJqQLA,OIrQK,CAAA;SAGzB,EAAA,MAAA;gBACS,EAAA,MAAA;YAER,EAAA,MAAA;gBAAR,EAAA,MAAA;IAAO,WAAA,CAAA,EAAA,MAAA;;;;ACxEV;AAUA;;;;;;;;;;kDLiVkDA;IMrUjC,QAAA,EAAA,MAAW;IAMX,YAAA,EAAA,MAAgB;IAKvB,iBAAY,CAAA,EAAA,MAAA;IAOL,WAAA,CAAA,EAAA,MAAgB;IAAA,gBAAA,CAAA,ENwTV9B,MMxTU,CAAA,MAAA,EAAA,OAAA,CAAA;QACZ,EAAA,MAAA,CAAA,EAAA,OAAA;;;;;;;;AAOrB;;sBACU,CAAA,CAAA,EN0TgB8B,OM1ThB,CAAA;SACH,EAAA,MAAA;eACJ,EAAA,MAAA;EAAgB,CAAA,CAAA;;;;;;;;;;;;;;;uBN0UIA;;;;;;;;;;;;;;;;;wBAiBCA;;;;;;;;;;;;;;qBAcHA;;;;;;;;;;;sBAWCA;;;;;;;;;;iDAU2BA;;;;;;;;;;0BAUvBA;;;;;;;;;;;;uBAYHA;;;;;;;;;;;;;;;;;;;6BAmBMA;;;;;;;;;;;;2BAYFA;;;;;;;;;;;;;;;;;;;;;;;;;;0BA0BDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2DAoCiCA;;;;;;;;;;wBAUnCA;;;;;;;;;;;;;;qBAcHA;;;;;;;;;;;;sBAYCA;;;;;;;;;8BASQA;;;;;;;;;;;;2BAYHA;;;;;;;;;;;;;;;;;gDAiBqBA;;;;;;;;;;;;;;;;;;6BAkBnBA;;;;;;;;;;;;;;;;;;;;;;;;;0BAyBHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2DA8BiCA;;;;;yBAKlCA;;;;;;;;;;;;;mBAaN9B;MACb8B;;;;uBAIiBA;;;;;;;;;;;QAWfA;;;;;;;;;;;;;;;;;;;;;;;;;MAyBFA;;;;;;;;MAQAA;;;;;;kBAMYZ;MACZY,QAAQX;;;;;;;MAORW,QAAQX;;;;;;;;MAQRW,QAAQV;;;;;iCAKmBU,QAAQX;;gBAEzBW;YACJT;;;;;;;;;;;WAWD3B;;;;MAILoC,QAAQrD;;;;;;;;WAQHiB;;;;;MAKLoC;;;;;;;;;;WAUKpC;;;;eAIIJ;;;;;eAKAlB;mBACIE;;iBAEFP;;;MAGX+D,QAAQ1C;;;WAGHM;;;MAGLoC;eACS1C;eACAlB;;;;WAIJwB;;;;MAILoC;;iBAEWxD;aACJF;;eAEEL;;;;;;;WAOJ2B;;;;iBAIMpB;aACJF;;eAEEL;;MAET+D;;;;;;WAMKpC;;;;MAILoC;;;WAGKpC;;;;;;eAMIJ;;MAETwC,QAAQ1C;;;WAGHM;;eAEIJ;;;MAGTwC,QAAQtC;;;WAGHE;;;;;MAKLoC;aACOjE;;;;;WAKF6B;;;MAGLoC;;sBAEgBA,QAAQ5C;;;;;;;;;;YAUlB4C;;;;;;;;;MASNA;;;;;;;;;;;;;;;;MAgBAA;;;0CAGoCA;;;;;;;;;;MAUpCA;;;;;;;;;;MAUAA;;;;;;;;;;;;MAYAA;;;;;;;;;;;MAWAA;;;;;MAKAA;;;;;;;;;;MAUAA;;;;;;;;;;;;;;;;;;MAkBAA;;;;;;;;;;;;;;;;MAgBAA;;;;;;;;;;;;;;;;;;MAkBAA;;;;;;;;;;;MAWAA;;;;;;;;;;MAUAA;;;;;;;;;;;;;;;;;;;;;;;;MAwBAA;;;;;;;;;;;;MAYAA;;;;wDAIkDA;;;;uCAIjBA;;;;;;;;;;;oBAWnBA;;;;;;;;kCAQcA;;;iBAGjBA;;;;;;;;;;;;;;;MAeXA;;;;;;2BAMqBA;;;;;;2DAMgCA;;;;;;;;;;MAUrDA;;;;MAIAA;;;;;MAKAA;;;;;;;;;gBASUpB;;MAEVoB,QAAQjB;;gBAEEiB;YACJnB;;;6BAGiBD,sCAAsCoB,QAAQf;;4BAE/CL;;;MAGtBoB;WACKd;;;;;;;;;6BASkBN,oDAAoDoB,QAAQd;;6BAE5DN,sDAAsDoB;;;;2BAIxDpB;;;MAGrBoB;WACKb;;;;;;;;0BAQeP,wDAAwDoB;;;;;;;;;;;2BAWvDpB;;;MAGrBoB;;;iCAG2BA;;;;;;;;;;;MAW3BA;;;;;MAKAA;;;;uCAIiCA,QAAQlC;4CACHkC;;;;;;;;;;;;;;;;;;;;;;YAsBhCP,eAAeO,QAAQN;;;;;;;;YAQvBE,eAAeI,QAAQF;;;;;;AFxuCb,UGnDL,UAAA,CHmDiB;EAAA,MAAA,EAAA,MAAA;QAEvB,EAAA,MAAA;WAAR,EAAA,MAAA;EAAO,MAAA,EAAA,MAAA;AAmBV;AAAmC,UGjElB,iBAAA,CHiEkB;eAEvB,EAAA,MAAA;QACT,EGlEO,cHkEP;EAAO;AAUV;;;SAIG,CAAA,EAAA,MAAA;;AASH;AAgBA;AAgBA;;;;AAGG,iBG9Ga,gBAAA,CH8Gb;EAAA,aAAA;EAAA,MAAA;EAAA;AAAA,CAAA,EG9G+E,iBH8G/E,CAAA,EAAA;EAAY,aAAA,EAAA,MAAA;;;;AC1Ff;AAiDA;AA+BA;EAuBgB,IAAA,CAAA,KAAe,CAAf,EAAA,MAAe,EAAA,EAAA,QAAA,EAAA;IAUf,KAAA,CAAA,EAAA,OAAa;;MExHtB,QAAQ;sCD1DLhC;IAJAD,KAAAA,CAAAA,EAAAA,OAAAA;EAIAC,CAAAA,CAAAA,ECkGH,ODlGGA,CCkGK,UDlGY,CAAA;EASjBC;EAUAC,IAAAA,CAAAA,OAQY,CARZA,EAAAA;IAQAC,KAAAA,CAAAA,EAAAA,OAAY;EAAA,CAAA,CAAA,ECmG6B,ODnG7B,CCmGqC,UDnGrC,CAAA;;;;AAIP;EAOLG,QAAAA,CAAAA,OAcAE,CAdAF,EAAAA;IAOAC,KAAAA,CAAAA,EAAAA,OAAAA;EAOAC,CAAAA,CAAAA,EC+G6C,OD/G7CA,CC+GqD,UD/GrDA,CAAAA;EAQAC;AAAc;AAOD;AAQG;AAOE;AAKH;AAMF;AAEQ;AASA;AASF;AAIC;;;;;AASD;AAME;AAQT;AAUI;AAiBM;AAIJ;AAgBZ;AAIE;AAOK;AAKR;AAUI;AAIK;EAKI,iBAAA,CAAA,QAAA,EAAA;IAGNV,KAAAA,CAAAA,EAAAA,OAAAA;MCoDf,OD/CIE,CC+CI,UD/CJA,CAAAA;;;;;WASLiC,CAAAA,KAAAA,EAAAA,MAAAA,EAAAA,EAAAA,QAAAA,EAAAA;IAQQ5B,KAAAA,CAAAA,EAAAA,OAAAA;MC4FP,OD5FD4B,CC4FS,UD5FTA,CAAAA;;;;;;;;;;;cAc8BA,CAAAA,QAAAA,EAAAA;IAOzBrB,KAAAA,CAAAA,EAAAA,OAAAA;IADLqB,KAAAA,CAAAA,EAAAA,MAAAA;MCwHC,ODhHDA,CCgHS,UDhHTA,CAAAA;;;;;iBAMmD9B,CAAAA,QAAAA,EAAAA,MAAAA,EAAAA,QAAAA,EAAAA;IAA0B8B,KAAAA,CAAAA,EAAAA,OAAAA;MC0I5E,ODvIM9B,CAAAA,IAAAA,CAAAA;;AACP8B,KCyJM,UAAA,GAAa,UDzJnBA,CAAAA,OCyJqC,gBDzJrCA,CAAAA;;;;;;;;AF5QN;AAOA;AAA8B,UIrBb,cAAA,CJqBa;eACN,EAAA,MAAA;;;AAGxB;AAiBA;AA4BA;EAAkC,OAAA,CAAA,EAAA,MAAA;;YAE/B,CAAA,EAAA,MAAA;EAAO;EAmBY,SAAA,EAAA,CAAA,KAAa,EAAA,MAAA,EAAA,EAAA,GAAA,IAAA,GIhFM,OJgFN,CAAA,IAAA,CAAA;;;;;AAanC;;AAGS,iBIxFa,YAAA,CJwFb,OAAA,EIvFE,cJuFF,CAAA,EItFN,OJsFM,CAAA,GAAA,GItFQ,OJsFR,CAAA,IAAA,CAAA,CAAA;;;;AArCa,UK1DL,YAAA,CL0DiB;EAAA,IAAA,EAAA,MAAA;SAEvB,EAAA,OAAA;MAAR,CAAA,EAAA,MAAA;EAAO,IAAA,CAAA,EAAA,MAAA;EAmBY,KAAA,CAAA,EAAA,MAAA;;;;;AAaA,iBKAA,WAAA,CLAmB,aAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EKG/B,cLH+B,EAAA,QAAA,EAAA;EAAA,WAAA,CAAA,EAAA,MAAA;OAGhC,CAAA,EAAA,OAAA;IKEN,OLDA,CKCQ,YLDR,EAAA,CAAA;;;;AAlEc,UMhCA,cAAA,CNgCY;EA4BP,IAAA,EAAA,MAAA;EAAY,OAAA,EAAA,OAAA;MAEvB,CAAA,EAAA,MAAA;OAAR,CAAA,EAAA,MAAA;;AAmBmB,iBM5BA,aAAA,CN4Ba,aAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EMzBzB,cNyByB,EAAA,cAAA,CAAA,EMxBhB,cNwBgB,EAAA,QAAA,EAAA;EAAA,WAAA,CAAA,EAAA,MAAA;OAEvB,CAAA,EAAA,OAAA;IMxBT,ONyBA,CMzBQ,cNyBR,EAAA,CAAA;;;;;;;;AAhFc,UOjBA,YAAA,CPiBa;EAOb,UAAA,CAAA,EAAA,MAAa;EAAA,WAAA,CAAA,EAAA,MAAA;;;;AAI9B;AAiBA;AA4BA;AAAkC,iBO/DZ,SP+DY,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,GAAA,GO9DtB,OP8DsB,CO9Dd,CP8Dc,CAAA,EAAA,OAAA,CAAA,EO7DvB,YP6DuB,CAAA,EO5D/B,OP4D+B,CO5DvB,CP4DuB,CAAA;;;;AAAZ,UQnDL,WAAA,CRmDiB;EAAA,SAAA,EAAA,MAAA,GAAA,SAAA,GAAA,KAAA;SAEvB,EAAA,MAAA;MAAR,EAAA,MAAA;;AAmBmB,UQlEL,gBAAA,CRkEkB;EAAA,aAAA,EAAA,MAAA;QAEvB,EQlEF,cRkEE;;UQ/DF,YAAA,CRgEA;EAUY,IAAA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAmB;EAAA,IAAA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;OAGhC,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;OACN,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AASmB,UQhFL,gBAAA,CRgFwB;EAgBnB,UAAA,CAAA,MAAA,EQ/FD,WR+FoC,EAAA,CAAA,EQ/FpB,OR+F2B,CAAA,IAAA,CAAA;EAgBhD,YAAA,CAAA,MAAa,EQ9GN,WR8GM,EAAA,CAAA,EQ9GU,OR8GV,CAAA,IAAA,CAAA;EAAA,kBAAA,CAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,GAAA,SAAA,CAAA,EQ7G6C,OR6G7C,CAAA,IAAA,CAAA;UACpB,EAAA,EQ7GK,OR6GL,CAAA,IAAA,CAAA;WACC,EAAA,EQ7GK,WR6GL,EAAA;;AACK,iBQ3GC,sBAAA,CR2GD,MAAA,EQ1GL,gBR0GK,EAAA,GAAA,EQzGR,YRyGQ,CAAA,EQxGZ,gBRwGY"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["ChangelogAction","ChangelogActor","ChangelogEntry","ChangelogEntry$1","EncryptedEnvelopeV1","EncryptedEnvelopeV1$1","Field","FieldEnvelope","FieldEnvelope$1","FieldFormat","FieldFormat$1","FieldSensitivity","FieldSensitivity$1","FieldView","GeneratedDataKey","GeneratedDataKey$1","IntegrationConfigResult","IntegrationConfigResult$1","IntegrationConfigSchemaField","IntegrationInstall","IntegrationInstall$1","RegistryEntry","RegistryEntry$1","ScopeInfo","ScopeInfo$1","SecretAggregate","SecretAggregate$1","SecretCategory","SecretCategory$1","SecretMetadata","SecretMetadata$1","SecretScope","SecretScope$1","AgentApiClientConfig","RemoteSessionInfo","SyncAgentInfo","SyncManifestEntry","SyncManifest","Record","SyncPresignedUrl","SyncConfirmedUpload","SyncReconstructFile","SyncReconstructBundle","SyncAgentStats","SyncFileEntry","SyncSessionEntry","SyncSessionContent","SharedFileEntry","KnowledgeScopeType","KnowledgeScope","KnowledgeSearchHit","KnowledgeSearchResult","KnowledgeProfileLink","KnowledgeProfile","KnowledgeDoc","ChangeRequestResourceType","ChangeRequestOperation","ChangeRequestStatus","ChangeRequestActorKind","KnowledgeChangeRequest","ProposeScopeChangeInput","AgentVoiceConfig","AgentSelf","AgentAvatarPresign","AgentVoice","VoiceTtsModel","VoiceTtsArgs","VoiceTtsResult","Buffer","VoiceSttArgs","Uint8Array","VoiceSttResult","AgentApiClient","Promise"],"sources":["../src/manifest.ts","../src/ignore.ts","../../agent-api-client/dist/index.d.ts","../src/sync-engine.ts","../src/watcher.ts","../src/uploader.ts","../src/downloader.ts","../src/retry.ts","../src/shared-sync.ts"],"sourcesContent":["import { ChangelogAction, ChangelogActor, ChangelogEntry, ChangelogEntry as ChangelogEntry$1, EncryptedEnvelopeV1, EncryptedEnvelopeV1 as EncryptedEnvelopeV1$1, Field, FieldEnvelope, FieldEnvelope as FieldEnvelope$1, FieldFormat, FieldFormat as FieldFormat$1, FieldSensitivity, FieldSensitivity as FieldSensitivity$1, FieldView, GeneratedDataKey, GeneratedDataKey as GeneratedDataKey$1, IntegrationConfigResult, IntegrationConfigResult as IntegrationConfigResult$1, IntegrationConfigSchemaField, IntegrationInstall, IntegrationInstall as IntegrationInstall$1, RegistryEntry, RegistryEntry as RegistryEntry$1, ScopeInfo, ScopeInfo as ScopeInfo$1, SecretAggregate, SecretAggregate as SecretAggregate$1, SecretCategory, SecretCategory as SecretCategory$1, SecretMetadata, SecretMetadata as SecretMetadata$1, SecretScope, SecretScope as SecretScope$1 } from \"@alfe/types\";\n\n//#region src/index.d.ts\n\ninterface AgentApiClientConfig {\n apiKey: string;\n apiUrl: string;\n}\ninterface RemoteSessionInfo {\n sessionId: string;\n agentId: string;\n surface: \"browser\" | \"terminal\";\n status: \"agent_driving\" | \"awaiting_human\" | \"human_in_control\" | \"resuming\" | \"completed\" | \"expired\" | \"failed\";\n url?: string;\n instructions?: string;\n requestedAt?: string;\n}\ninterface SyncAgentInfo {\n agentId: string;\n tenantId: string;\n displayName: string;\n s3Prefix: string;\n status: \"stale\" | \"syncing\" | \"synced\";\n fileCount?: number;\n totalSize?: number;\n lastSync?: string;\n}\ninterface SyncManifestEntry {\n hash: string;\n size: number;\n modified: string;\n etag?: string;\n storageClass?: string;\n compressed?: boolean;\n}\ninterface SyncManifest {\n version: 1;\n agentId: string;\n lastSync: string;\n files: Record<string, SyncManifestEntry>;\n}\ninterface SyncPresignedUrl {\n path: string;\n url: string;\n expiresAt: string;\n}\ninterface SyncConfirmedUpload {\n filePath: string;\n hash: string;\n size: number;\n storageClass: \"STANDARD\" | \"GLACIER_IR\";\n syncedAt: string;\n}\ninterface SyncReconstructFile {\n path: string;\n size: number;\n url: string;\n storageClass?: string;\n compressed?: boolean;\n}\ninterface SyncReconstructBundle {\n agentId: string;\n mode: \"full\" | \"active\" | \"memory\";\n fileCount: number;\n totalSize: number;\n files: SyncReconstructFile[];\n expiresAt: string;\n}\ninterface SyncAgentStats {\n agentId: string;\n standardBytes: number;\n glacierBytes: number;\n fileCount: number;\n lastSyncAt: string | null;\n}\ninterface SyncFileEntry {\n filePath: string;\n size: number;\n modified: string;\n contentHash: string;\n storageClass?: string;\n compressed?: boolean;\n}\ninterface SyncSessionEntry {\n sessionId: string;\n size: number;\n lastModified: string;\n storageClass?: string;\n isArchived: boolean;\n}\ninterface SyncSessionContent {\n sessionId: string;\n content: string;\n compressed: boolean;\n}\ninterface SharedFileEntry {\n filePath: string;\n fileName: string;\n size: number;\n contentType?: string;\n}\ntype KnowledgeScopeType = \"org\" | \"team\" | \"project\";\ninterface KnowledgeScope {\n scopeType: KnowledgeScopeType;\n scopeId: string;\n name: string;\n}\ninterface KnowledgeSearchHit {\n id: string;\n text: string;\n /** Normalized relevance in (0,1]; higher = closer. */\n score: number;\n scopeType: KnowledgeScopeType;\n scopeId: string;\n /**\n * Provenance of the hit. All live results are `\"doc\"`; `\"fact\"` only ever\n * appears for legacy vectors indexed before the facts primitive was removed\n * (the search index stays tolerant of them). Treat every hit as a doc.\n */\n source: \"doc\" | \"fact\";\n /** The canonical file under shared/<scope>/ (present on doc hits). */\n filePath?: string;\n /** Legacy-only: the id of a pre-removal fact vector. */\n factId?: string;\n}\ninterface KnowledgeSearchResult {\n results: KnowledgeSearchHit[];\n /** True when fan-out breadth was capped (more member scopes than the cap). */\n truncatedScopes: boolean;\n}\ninterface KnowledgeProfileLink {\n label: string;\n url: string;\n}\ninterface KnowledgeProfile {\n scopeType: KnowledgeScopeType;\n scopeId: string;\n about: string | null;\n description: string | null;\n links: KnowledgeProfileLink[];\n updatedAt: string | null;\n updatedBy: string | null;\n}\ninterface KnowledgeDoc {\n filePath: string;\n fileName: string;\n contentType?: string;\n size: number;\n uploadedBy?: string;\n createdAt: string;\n updatedAt: string;\n}\ntype ChangeRequestResourceType = \"doc\" | \"profile\";\ntype ChangeRequestOperation = \"create\" | \"update\" | \"delete\";\ntype ChangeRequestStatus = \"open\" | \"approved\" | \"rejected\" | \"withdrawn\" | \"superseded\";\ntype ChangeRequestActorKind = \"human\" | \"agent\";\n/** Public projection of a change request (mirrors `PublicChangeRequest` in services/org). */\ninterface KnowledgeChangeRequest {\n changeRequestId: string;\n scopeType: KnowledgeScopeType;\n scopeId: string;\n resourceType: ChangeRequestResourceType;\n operation: ChangeRequestOperation;\n targetPath: string | null;\n baseVersionId: string | null;\n proposedContentType: string | null;\n status: ChangeRequestStatus;\n proposerId: string;\n proposerKind: ChangeRequestActorKind;\n rationale: string;\n reviewerId: string | null;\n reviewerKind: ChangeRequestActorKind | null;\n reviewedAt: string | null;\n reviewNote: string | null;\n appliedRef: string | null;\n createdAt: string;\n updatedAt: string;\n}\n/** Per-type proposal payload for `proposeScopeChange`. */\ninterface ProposeScopeChangeInput {\n resourceType: ChangeRequestResourceType;\n operation: ChangeRequestOperation;\n /** Why the change is proposed — shown to the reviewer. */\n rationale: string;\n /** doc: the path the proposal applies to (e.g. designs/data-center.md). */\n targetPath?: string;\n /** doc create/update: the staged body to upload (markdown or other text). */\n content?: string;\n /** doc create/update: content type of the staged body (default text/markdown). */\n contentType?: string;\n /** profile: the proposed value ({ about, description, links }). */\n proposedValue?: unknown;\n}\n/** Voice settings — core agent config. Mirrors `VoiceConfig` in `@alfe/types`. */\ninterface AgentVoiceConfig {\n /** ElevenLabs voice ID; platform default when unset. */\n voiceId?: string;\n ttsModel?: string;\n enabled?: boolean;\n}\n/**\n * The agent's own public identity, as returned by `updateSelf`, `generateAvatar`,\n * `presignAvatar`'s finalize (`finalizeAvatar`). This is the public agent\n * projection; only the identity-relevant fields are typed here — the response\n * carries the full public agent record.\n */\ninterface AgentSelf {\n agentId: string;\n tenantId: string;\n name: string;\n avatarUrl?: string;\n voiceConfig?: AgentVoiceConfig;\n status: string;\n}\n/** Result of `presignAvatar` — the agent PUTs bytes to `uploadUrl`, then finalizes with `s3Key`. */\ninterface AgentAvatarPresign {\n /** Presigned PUT URL to upload the image bytes to. */\n uploadUrl: string;\n /** Object key — echoed back to `finalizeAvatar`. */\n s3Key: string;\n /** Stable public URL the avatar will be served from once finalized. */\n publicUrl: string;\n /** ISO expiry of the presigned PUT URL. */\n expiresAt: string;\n}\n/** A voice in the platform catalogue (ElevenLabs), from `listVoices`. */\ninterface AgentVoice {\n id: string;\n name: string;\n previewUrl: string;\n description: string;\n labels: Record<string, string>;\n category: string;\n}\n/** The ElevenLabs models with a pricing row — the TTS endpoint rejects any other value. */\ntype VoiceTtsModel = \"eleven_turbo_v2_5\" | \"eleven_multilingual_v2\";\ninterface VoiceTtsArgs {\n /** Text to synthesize (1–5000 chars — the endpoint enforces this). */\n text: string;\n /** ElevenLabs voice id; platform default when unset. */\n voiceId?: string;\n /** TTS model; `eleven_turbo_v2_5` (lower latency) when unset. */\n model?: VoiceTtsModel;\n}\n/** Raw synthesized audio plus its PCM framing (from the response headers). */\ninterface VoiceTtsResult {\n /** Raw little-endian PCM samples — no container. Wrap in WAV to make a playable file. */\n audio: Buffer;\n /** Samples per second (e.g. 24000). */\n sampleRate: number;\n /** Channel count (mono = 1). */\n channels: number;\n /** Bits per sample (e.g. 16). */\n bitDepth: number;\n}\ninterface VoiceSttArgs {\n /** Raw linear16 (16-bit little-endian) mono PCM samples — no WAV/container header. */\n audio: Uint8Array;\n /** Sample rate of `audio` in Hz (8000–48000). */\n sampleRate: number;\n}\ninterface VoiceSttResult {\n text: string;\n /** Deepgram confidence in (0,1]. */\n confidence: number;\n}\ndeclare class AgentApiClient {\n private readonly apiKey;\n private readonly apiUrl;\n constructor(config: AgentApiClientConfig);\n private request;\n syncRegister(args?: {\n displayName?: string;\n }): Promise<{\n agent: SyncAgentInfo;\n }>;\n syncGetManifest(): Promise<SyncManifest>;\n syncPresign(args: {\n files: {\n path: string;\n operation: \"put\" | \"get\";\n contentType?: string;\n }[];\n }): Promise<{\n urls: SyncPresignedUrl[];\n }>;\n syncConfirmUpload(args: {\n filePath: string;\n hash: string;\n size: number;\n storageClass?: \"STANDARD\" | \"GLACIER_IR\";\n }): Promise<SyncConfirmedUpload>;\n syncReconstruct(args: {\n mode: \"full\" | \"active\" | \"memory\";\n }): Promise<SyncReconstructBundle>;\n syncGetStats(): Promise<SyncAgentStats>;\n syncListFiles(args?: {\n prefix?: string;\n }): Promise<{\n files: SyncFileEntry[];\n }>;\n syncListSessions(): Promise<{\n sessions: SyncSessionEntry[];\n }>;\n syncGetSession(sessionId: string): Promise<SyncSessionContent>;\n syncDeleteFile(filePath: string): Promise<{\n removed: boolean;\n }>;\n sharedListFiles(args: {\n scope: \"org\" | \"team\" | \"project\";\n scopeId: string;\n }): Promise<{\n files: SharedFileEntry[];\n nextCursor: string | null;\n }>;\n sharedDownloadUrl(args: {\n scope: \"org\" | \"team\" | \"project\";\n scopeId: string;\n filePath: string;\n }): Promise<{\n downloadUrl: string;\n expiresIn: number;\n }>;\n listIntegrations(): Promise<IntegrationInstall$1[]>;\n getIntegrationConfig(integrationId: string): Promise<IntegrationConfigResult$1>;\n updateIntegrationConfig(integrationId: string, config: Record<string, unknown>): Promise<void>;\n installIntegration(integrationId: string, options?: {\n version?: string;\n config?: Record<string, unknown>;\n }): Promise<IntegrationInstall$1>;\n removeIntegration(integrationId: string): Promise<IntegrationInstall$1>;\n getOAuthUrl(provider: string, scopes?: string[]): Promise<{\n url: string;\n provider: string;\n expiresIn: number;\n }>;\n getOAuthStatus(provider: string): Promise<{\n provider: string;\n connected: boolean;\n config?: Record<string, string>;\n }>;\n getRegistry(): Promise<{\n integrations: RegistryEntry$1[];\n }>;\n /**\n * Returns every connected Google account for the agent. Multi-account by\n * design — the openclaw-google plugin requires the LLM to pass `email`\n * explicitly to `google_run_command` so an account is always selected\n * deliberately.\n *\n * 2026-05-14 (connections-redesign PR 1): the legacy flat shape (`email`,\n * `refreshToken`, `accessToken`, etc., populated from the default account)\n * is gone. Iterate over `accounts`.\n */\n getGoogleCredentials(): Promise<{\n accounts: {\n email: string;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n displayName?: string;\n connectedAt?: string;\n }[];\n }>;\n disconnectGoogleAccount(email: string): Promise<{\n accounts: {\n email: string;\n displayName?: string;\n connectedAt?: string;\n }[];\n }>;\n getGoogleChatCredentials(): Promise<{\n email: string;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n displayName?: string;\n }>;\n /**\n * Fetch decrypted credentials for ONE specific connection by its\n * stable connectionId (connection-scoped, vs the provider-scoped\n * `get<Provider>Credentials` helpers). Used by the daemon to resolve\n * a Custom Connection-driven integration's credentials from the\n * exact connection it was installed from — every custom connection\n * shares the `custom` provider id, so provider-scoping is ambiguous.\n *\n * For custom connections `accessToken` is the JSON-encoded secret\n * bundle (the daemon un-bundles it); non-secret fields are on\n * `providerMetadata`. The endpoint enforces that the connection is in\n * the calling agent's effective scope (403 otherwise).\n */\n getConnectionCredentials(connectionId: string): Promise<{\n provider: string;\n connectionId: string;\n accountIdentifier?: string;\n accessToken?: string;\n providerMetadata?: Record<string, unknown>;\n [key: string]: unknown;\n }>;\n /**\n * @deprecated Returns a single primary credential blob (legacy \"pick-the-\n * default-connection\" shape). Use `getGithubAccounts()` for the multi-\n * account shape required by Pattern A — explicit selector args on every\n * tool. Retained because the `@alfe.ai/github-mcp` proxy is the\n * only consumer that knows about Pattern A; legacy env-interpolation\n * callers will keep hitting `/credentials` until they move to the proxy.\n */\n getGithubCredentials(): Promise<{\n login: string;\n accessToken: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for GitHub.\n *\n * Returns every agent-scoped GitHub connection. The caller is expected\n * to require a `login` selector on every credential-touching tool and\n * look up the matching account at dispatch time.\n *\n * GitHub OAuth tokens have no expiry (`tokenLifecycle: \"no_expiry\"`),\n * so there is intentionally no `refreshGithubAccountToken` method — if\n * a token is revoked the user must re-run the OAuth flow.\n *\n * Returned `accounts[i].login` is the GitHub username — the stable\n * cross-session identifier the LLM should pass.\n */\n getGithubAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n login: string;\n scopes: string;\n }[];\n }>;\n /**\n * @deprecated Returns a single primary credential blob (legacy \"pick-the-\n * default-connection\" shape). Use `getXeroAccounts()` for the multi-\n * account shape required by Pattern A — explicit selector args on every\n * tool. This method will be removed once all consumers migrate.\n */\n getXeroCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n xeroTenantId: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for Xero. Returns every\n * agent-scoped Xero connection. The caller is expected to require a\n * selector arg (e.g. `xeroTenantId`) on every credential-touching tool\n * and look up the matching account by that selector at dispatch time.\n *\n * Returned `accounts[i].accountIdentifier` is the Xero tenantId — the\n * stable cross-session identifier the LLM should pass.\n */\n getXeroAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n accessTokenExpiresAt: string;\n xeroTenantId: string;\n }[];\n }>;\n refreshXeroToken(): Promise<{\n accessToken: string;\n expiresAt: string;\n }>;\n /**\n * Pattern A: refresh a specific Xero connection by its `accountIdentifier`\n * (the Xero `tenantId`). The legacy `refreshXeroToken()` only refreshes\n * the *primary* connection, which is wrong for multi-tenant Xero where\n * each tenant has its own non-interchangeable access token.\n */\n refreshXeroAccountToken(xeroTenantId: string): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n expiresAt: string;\n }>;\n /**\n * @deprecated Returns a single primary credential blob (legacy \"pick-the-\n * default-connection\" shape). Use `getNotionAccounts()` for the multi-\n * account shape required by Pattern A.\n */\n getNotionCredentials(): Promise<{\n accessToken: string;\n workspaceId: string;\n workspaceName: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for Notion. Returns every\n * agent-scoped Notion connection. The caller is expected to require a\n * selector arg (e.g. `workspaceId`) on every credential-touching tool.\n *\n * Returned `accounts[i].accountIdentifier` is the Notion workspaceId.\n */\n getNotionAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n workspaceId: string;\n workspaceName: string;\n }[];\n }>;\n /**\n * @deprecated Returns a single primary Atlassian Connection's credentials\n * (one OAuth user, one cloudId) — the legacy \"pick-the-default-connection\"\n * shape. Atlassian is multi-site by nature (each OAuth user may have\n * access to multiple Cloud sites), so Pattern A plugins MUST use\n * `getAtlassianAccounts()` to discover the full set and dispatch via\n * the `cloudId` selector arg.\n */\n getAtlassianCredentials(): Promise<{\n accessToken: string;\n refreshToken: string;\n accessTokenExpiresAt: string;\n cloudId: string;\n siteName: string;\n siteUrl: string;\n email: string;\n enabledProducts: string[];\n clientId: string;\n clientSecret: string;\n }>;\n refreshAtlassianToken(): Promise<{\n accessToken: string;\n expiresAt: string;\n }>;\n /**\n * Pattern A: multi-account / multi-site credential fetch for Atlassian.\n *\n * Returns every agent-scoped Atlassian Connection. Each Connection is\n * one OAuth user with a single access token and N accessible Cloud\n * sites (`availableSites`). The caller is expected to:\n *\n * 1. Flatten (connection × cloudId) into one MCP child per site.\n * 2. Require a `cloudId` selector on every credential-touching tool.\n * 3. Use the access token bound to the Connection that owns the\n * requested `cloudId` (Atlassian shares one access token across\n * all sites accessible to the OAuth user).\n *\n * Per-account token refresh uses `refreshAtlassianAccountToken(email)`\n * — refreshing one Connection rotates its single access token, which\n * then applies to every cloudId for that Connection.\n *\n * Returned `accounts[i].accountIdentifier` is the OAuth user's email\n * — the stable cross-session identifier for refresh purposes. The LLM\n * never sees this directly: it picks a site via the `cloudId` arg\n * instead.\n */\n getAtlassianAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n accessTokenExpiresAt: string;\n clientId: string;\n clientSecret: string;\n cloudId: string;\n siteName: string;\n siteUrl: string;\n availableSites: {\n id: string;\n url: string;\n name: string;\n scopes?: string[];\n avatarUrl?: string;\n }[];\n }[];\n }>;\n /**\n * Pattern A: refresh a specific Atlassian Connection by `accountIdentifier`\n * (the OAuth user's email).\n *\n * Atlassian rotates refresh tokens (`rotatesRefreshToken: true`); the\n * server-side per-account refresh endpoint handles rotation and\n * persistence. Refreshing one Connection updates its single access\n * token, which applies to every accessible Cloud site (cloudId) for\n * that OAuth user.\n *\n * Returns the new access token + expiry. The proxy is responsible for\n * fanning the new token out to every child server it spawned for\n * cloudIds owned by this Connection.\n */\n refreshAtlassianAccountToken(accountIdentifier: string): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n expiresAt: string;\n }>;\n /**\n * @deprecated Returns a single primary credential blob (legacy \"pick-the-\n * default-connection\" shape). Use `getMYOBAccounts()` for the multi-\n * account shape required by Pattern A.\n */\n getMYOBCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n myobBusinessId: string;\n clientId: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for MYOB. Returns every\n * agent-scoped MYOB connection. The caller is expected to require a\n * selector arg (e.g. `myobBusinessId` / `accountIdentifier`) on every\n * credential-touching tool.\n *\n * Returned `accounts[i].accountIdentifier` is the MYOB businessId.\n */\n getMYOBAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n accessTokenExpiresAt: string;\n myobBusinessId: string;\n clientId: string;\n }[];\n }>;\n refreshMYOBToken(): Promise<{\n accessToken: string;\n expiresAt: string;\n }>;\n /**\n * @deprecated Returns a single primary credential blob. Use\n * `getSalesforceAccounts()` for the multi-account shape required by\n * Pattern A.\n */\n getSalesforceCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n instanceUrl: string;\n orgId: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for Salesforce. Returns every\n * agent-scoped Salesforce connection. One OAuth grant maps to one org, so\n * `accounts[i].accountIdentifier` (and `orgId`) is the Salesforce org id —\n * the selector every credential-touching tool requires.\n */\n getSalesforceAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n accessTokenExpiresAt: string;\n instanceUrl: string;\n orgId: string;\n }[];\n }>;\n /**\n * Refresh the access token for a specific Salesforce org. Salesforce\n * tokens aren't interchangeable across orgs, so the connection is targeted\n * by `accountIdentifier` (the org id) — mirrors `refreshXeroAccountToken`.\n */\n refreshSalesforceAccountToken(orgId: string): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n expiresAt: string;\n }>;\n /**\n * Microsoft 365 (delegated OAuth) credential fetch — single-account shape.\n *\n * @deprecated Use `getMicrosoftAccounts()` and dispatch via the `email`\n * selector once per-account plugins land. Retained because the existing\n * `integrations/connect/microsoft/hooks/post_activate.mjs` writes\n * `mgc` credentials for the single (default) Microsoft account.\n *\n * Returns the agent's effective Microsoft delegated-OAuth credentials.\n * Distinct from `getTeamsCredentials()` (Azure bot credentials for the\n * Teams adapter, which is admin-consent flow on services/microsoft, not\n * delegated OAuth on services/connect).\n */\n getMicrosoftCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt?: string;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n email?: string;\n microsoftTenantId?: string;\n workspaceDomain?: string;\n }>;\n /**\n * Pattern A: multi-account credential fetch for Microsoft 365.\n *\n * Returns every agent-scoped Microsoft connection. The caller is expected\n * to require an `email` selector on every credential-touching tool and\n * look up the matching account at dispatch time.\n *\n * Returned `accounts[i].accountIdentifier` is the user's primary email\n * (or the tid claim as fallback) — the stable cross-session identifier\n * the LLM should pass.\n *\n * Per-account token refresh is exposed via `refreshMicrosoftAccountToken`,\n * NOT `refreshXeroAccountToken` — Microsoft refresh tokens are not\n * interchangeable across (tenant, user) pairs.\n */\n getMicrosoftAccounts(): Promise<{\n accounts: {\n connectionId: string;\n accountIdentifier: string;\n displayName: string | null;\n connectedAt: string;\n accessToken: string;\n accessTokenExpiresAt: string;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n email: string;\n microsoftTenantId: string;\n workspaceDomain: string;\n }[];\n }>;\n /**\n * Pattern A: refresh a specific Microsoft 365 connection by its\n * `accountIdentifier`. For Microsoft, `accountIdentifier` is the user's\n * email when the Graph profile fetch succeeded at connect time, and the\n * Azure tenant id (`tid` claim) as fallback. Callers should pass the\n * value returned by `getMicrosoftAccounts()` rather than synthesising\n * an email locally.\n *\n * Microsoft refresh tokens are bound to a specific (tenant, user) pair —\n * they are NOT interchangeable across accounts, so per-account refresh\n * is mandatory. The generic /accounts/{accountIdentifier}/refresh\n * endpoint walks the agent's full visible scope chain to find a matching\n * connection (works for inherited team/project Microsoft connections).\n */\n refreshMicrosoftAccountToken(accountIdentifier: string): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n expiresAt: string;\n }>;\n getTeamsCredentials(): Promise<{\n agentId: string;\n tenantId: string;\n azureAppId: string;\n azureBotId: string;\n azureClientSecret: string;\n botDisplayName?: string;\n teamsTenantId?: string;\n serviceUrl?: string;\n }>;\n sendTeamsMessage(data: {\n conversationId: string;\n text?: string;\n adaptiveCard?: Record<string, unknown>;\n }): Promise<{\n ok: boolean;\n activityId: string;\n }>;\n listTeamsChannels(): Promise<{\n channels: {\n id: string;\n name: string;\n description?: string;\n }[];\n }>;\n presignAttachments(files: {\n filename: string;\n mimeType: string;\n size: number;\n }[]): Promise<{\n attachments: {\n id: string;\n uploadUrl: string;\n downloadUrl: string;\n s3Key: string;\n expiresAt: string;\n }[];\n }>;\n /**\n * Generate an image from a text prompt and get back a STABLE, public URL\n * (served from the agent-assets CDN — it does not expire). The image is\n * generated + stored server-side; embed the returned `imageUrl` in a reply as\n * markdown to show it to the user.\n *\n * Unlike most methods this reads the server's error body so a bad-request\n * detail (e.g. an unsupported `size`) reaches the caller instead of an opaque\n * \"request failed (400)\". Not retried — generation is expensive and\n * non-idempotent.\n */\n generateImage(args: {\n prompt: string;\n model?: string;\n size?: string;\n quality?: string;\n }): Promise<{\n imageUrl: string;\n model: string;\n }>;\n recordActivity(data: {\n userId?: string;\n channel: string;\n role: \"user\" | \"assistant\";\n }): Promise<{\n recorded: boolean;\n }>;\n /** Update the agent's own name and/or voice config. Returns the updated agent. */\n updateSelf(update: {\n name?: string;\n voiceConfig?: AgentVoiceConfig;\n }): Promise<AgentSelf>;\n /**\n * Generate the agent's own avatar from a text prompt. The image is generated,\n * stored, and set on the agent server-side; returns the updated agent.\n */\n generateAvatar(args: {\n prompt: string;\n }): Promise<AgentSelf>;\n /**\n * Get a presigned PUT URL to upload a new avatar image. Upload the bytes to\n * `uploadUrl`, then call `finalizeAvatar(s3Key)` to set it on the agent.\n */\n presignAvatar(args: {\n mimeType: string;\n size: number;\n }): Promise<AgentAvatarPresign>;\n /**\n * Finalize an avatar upload — validates ownership + size, then sets the\n * agent's `avatarUrl` server-side. Returns the updated agent.\n */\n finalizeAvatar(s3Key: string): Promise<AgentSelf>;\n /** List the platform voice catalogue (ElevenLabs) so the agent can pick its own voice. */\n listVoices(): Promise<{\n voices: AgentVoice[];\n }>;\n /**\n * Mint a fresh AES-256 data key for a specific (secret, field) pair. The\n * encryption context is rebuilt server-side from `auth.tenantId` + the body\n * fields including `fieldKey`; the agent cannot forge context for a scope\n * or field it doesn't own. Legacy single-envelope secrets are migrated to\n * `field#value` rows by the data migration, so call with `fieldKey: \"value\"`\n * to reach them.\n */\n generateSecretDataKey(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n fieldKey: string;\n }): Promise<GeneratedDataKey$1>;\n /**\n * Unwrap a wrapped data key so the agent can decrypt the envelope locally.\n * `fieldKey` MUST match the value supplied when the data key was generated\n * (it's bound into KMS encryption context); mismatch fails with\n * `InvalidCiphertextException`.\n */\n decryptSecretDataKey(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n fieldKey: string;\n dataKeyCiphertext: string;\n }): Promise<{\n plaintextKey: string;\n }>;\n /**\n * Create a new secret with one or more fields. Encrypted fields must arrive\n * pre-sealed (the agent has already obtained per-field data keys via\n * `generateSecretDataKey({ ..., fieldKey })` and AES-encrypted locally).\n * Plaintext fields ship the value inline.\n */\n createSecret(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n secretName: string;\n category?: SecretCategory$1;\n description?: string;\n tags?: string[];\n fields: {\n key: string;\n format?: FieldFormat$1;\n sensitivity: FieldSensitivity$1;\n value?: string;\n envelope?: EncryptedEnvelopeV1$1;\n }[];\n reason?: string;\n }): Promise<SecretAggregate$1>;\n /** Fetch the secret aggregate plus per-field encrypted envelopes. */\n getSecret(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n }): Promise<{\n aggregate: SecretAggregate$1;\n envelopes: FieldEnvelope$1[];\n }>;\n /** Fetch one field. Plaintext: value inline. Encrypted: envelope. */\n getSecretField(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n fieldKey: string;\n }): Promise<{\n key: string;\n sensitivity: FieldSensitivity$1;\n format?: FieldFormat$1;\n value?: string;\n envelope?: EncryptedEnvelopeV1$1;\n rotatedAt?: string;\n createdAt: string;\n updatedAt: string;\n }>;\n /** Add OR rotate one field. */\n setSecretField(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n fieldKey: string;\n sensitivity: FieldSensitivity$1;\n format?: FieldFormat$1;\n value?: string;\n envelope?: EncryptedEnvelopeV1$1;\n reason?: string;\n }): Promise<{\n fieldKey: string;\n rotated: boolean;\n }>;\n /** Remove one field. */\n removeSecretField(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n fieldKey: string;\n }): Promise<void>;\n /** Update secret-level metadata (name/description/tags/category). */\n updateSecretMetadata(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n secretName?: string;\n description?: string;\n tags?: string[];\n category?: SecretCategory$1;\n reason?: string;\n }): Promise<SecretAggregate$1>;\n /** List metadata for secrets in a scope. Optional filters route through the byFacet GSI. */\n listSecrets(args: {\n scope: SecretScope$1;\n scopeId: string;\n category?: SecretCategory$1;\n tag?: string;\n fieldKey?: string;\n }): Promise<SecretMetadata$1[]>;\n /** Bounded changelog read — metadata-only audit entries. */\n getSecretHistory(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n limit?: number;\n cursor?: string;\n }): Promise<{\n entries: ChangelogEntry$1[];\n nextCursor?: string;\n }>;\n /** Delete a secret (and all its field rows + tag rows + changelog rows). */\n deleteSecret(args: {\n scope: SecretScope$1;\n scopeId: string;\n secretId: string;\n }): Promise<void>;\n /** Enumerate scopes (org/team/project/agent) this agent can access. */\n listSecretScopes(): Promise<ScopeInfo$1[]>;\n /**\n * Returns the calling agent's own identity context — `{ agentId, tenantId }`\n * decoded server-side from the agent API token. Used by the\n * `@alfe.ai/openclaw-identity` plugin to bootstrap context when the\n * OpenClaw daemon doesn't plumb `ctx.agentId` through to plugin hooks.\n * Plugins should cache this for the daemon's lifetime (single-agent-per-\n * process invariant). One HTTP round-trip per process activate; not for\n * per-call use.\n */\n whoami(): Promise<{\n agentId: string;\n tenantId: string;\n }>;\n resolveIdentity(args: {\n provider: string;\n platformId: string;\n kind?: \"user\" | \"agent\" | \"service\" | \"bot\" | \"workspace\";\n displayName?: string;\n }): Promise<{\n identityId: string | null;\n status: string;\n created?: boolean;\n reason?: string;\n /**\n * Flattened auriclabs permission strings for the resolved identity\n * (scope-prefixed where applicable). Empty array on miss / org service\n * outage — the runtime gate fails closed in that case.\n */\n permissions: string[];\n }>;\n searchIdentities(args?: {\n q?: string;\n status?: string;\n limit?: number;\n }): Promise<{\n identities: unknown[];\n }>;\n getIdentityContext(identityId: string): Promise<{\n context: unknown;\n }>;\n mergeIdentities(survivorId: string, args: {\n mergedId: string;\n changedBy: {\n type: string;\n id: string;\n name?: string;\n };\n }): Promise<{\n ok: boolean;\n error?: string;\n }>;\n unmergeIdentity(identityId: string, args: {\n changedBy: {\n type: string;\n id: string;\n name?: string;\n };\n }): Promise<{\n ok: boolean;\n error?: string;\n }>;\n addIdentityNote(identityId: string, args: {\n content: string;\n category?: string;\n changedBy: {\n type: string;\n id: string;\n name?: string;\n };\n }): Promise<{\n noteId: string | null;\n }>;\n tagIdentity(identityId: string, args: {\n tag: string;\n action: \"add\" | \"remove\";\n changedBy: {\n type: string;\n id: string;\n name?: string;\n };\n }): Promise<{\n ok: boolean;\n }>;\n getIdentityChangelog(identityId: string, args?: {\n limit?: number;\n }): Promise<{\n entries: unknown[];\n }>;\n rollbackIdentity(identityId: string, args: {\n targetVersion: number;\n changedBy: {\n type: string;\n id: string;\n name?: string;\n };\n }): Promise<{\n ok: boolean;\n entry?: unknown;\n }>;\n requestIdentityVerification(args: {\n claimedIdentityId: string;\n requestingIdentityId: string;\n requestingProvider: string;\n requestingPlatformId: string;\n preferredChannel?: \"mobile\" | \"email\";\n /**\n * Phase 2: agent-supplied contact endpoint. When provided, the top-level\n * `preferredChannel` is ignored — the contact's channel wins.\n */\n contact?: {\n channel: \"email\" | \"mobile\";\n value: string;\n };\n }): Promise<{\n verificationId: string;\n channel: string;\n deliveredTo: string;\n expiresAt: string;\n availableChannels: {\n channel: string;\n deliveredTo: string;\n }[];\n } | {\n error: string;\n }>;\n confirmIdentityVerification(args: {\n claimedIdentityId: string;\n verificationId: string;\n phrase: string;\n }): Promise<{\n verified: boolean;\n identityId?: string;\n /** Phase 2: how the confirm resolved — Scenario A vs B. */\n action?: \"merged\" | \"contact_verified\";\n error?: string;\n }>;\n /**\n * Update display-shape fields on an Identity. Body excludes `email` /\n * `phone` / `title` / `company` / `metadata` per Section D4 — contacts go\n * via the verify flow, title/company live on OrgMembership, metadata is\n * not agent-writable.\n */\n updateIdentity(identityId: string, args: {\n name?: string;\n avatarUrl?: string;\n timezone?: string;\n locale?: string;\n }): Promise<{\n ok: boolean;\n }>;\n /**\n * Phase 2 (Section H): server-side verification of a Google Chat sender via\n * the agent's existing Google OAuth credentials. Returns the resolved\n * identity (created or matched via Scenario-B email enrichment).\n */\n resolveGoogleChatSender(args: {\n senderUserId: string;\n spaceId?: string;\n }): Promise<{\n identityId: string | null;\n status: string;\n }>;\n memorySearch(query: string, opts?: {\n limit?: number;\n topic?: string;\n subtopic?: string;\n tag?: string;\n includeKnowledge?: boolean;\n }): Promise<{\n facts: {\n subject: string;\n predicate: string;\n object: string;\n since: string;\n confidence: number;\n }[];\n memories: {\n id: string;\n text: string;\n topic: string;\n subtopic: string;\n tag: string;\n importance: number;\n timestamp: number;\n score: number;\n }[];\n }>;\n memoryStore(text: string, opts?: {\n topic?: string;\n subtopic?: string;\n tag?: string;\n importance?: number;\n }): Promise<{\n memoryId: string;\n }>;\n memoryIngest(sessionKey: string, messages: {\n role: string;\n content: string;\n index: number;\n timestamp?: string;\n }[], metadata?: {\n channelId?: string;\n userId?: string;\n userName?: string;\n }): Promise<{\n queued: boolean;\n messageCount: number;\n }>;\n memoryLoadContext(tier?: number, topicHint?: string): Promise<{\n formatted: string;\n [key: string]: unknown;\n }>;\n memoryLookupEntity(subject: string): Promise<{\n subject: string;\n triples: {\n tripleId: string;\n predicate: string;\n object: string;\n validFrom: string;\n validTo?: string;\n confidence: number;\n }[];\n }>;\n memoryNavigate(): Promise<{\n topics: {\n name: string;\n tripleCount: number;\n subtopics: string[];\n }[];\n cursor: string | null;\n }>;\n memoryDelete(memoryId: string): Promise<{\n deleted: boolean;\n }>;\n memoryStats(): Promise<{\n vectorCount: number;\n tripleCount: number;\n storageEstimateBytes: number;\n lastIngestionAt?: string;\n }>;\n memoryLearn(args: {\n text: string;\n source?: string;\n sourceType?: \"file\" | \"url\" | \"inline\";\n metadata?: {\n sessionId?: string;\n channelId?: string;\n userName?: string;\n };\n }): Promise<{\n memoriesStored: number;\n triplesStored: number;\n chunks: number;\n source?: string;\n }>;\n memoryBootstrapStatus(): Promise<{\n synced: boolean;\n syncedAt?: string;\n sessionsBackfillSynced?: boolean;\n sessionsBackfillSyncedAt?: string;\n }>;\n memoryBootstrapStatusMark(scope?: \"files\" | \"sessions\"): Promise<{\n synced: true;\n syncedAt: string;\n }>;\n searchWeb(params: {\n query: string;\n count?: number;\n offset?: number;\n country?: string;\n freshness?: string;\n }): Promise<unknown>;\n searchImages(params: {\n query: string;\n count?: number;\n }): Promise<unknown>;\n searchNews(params: {\n query: string;\n count?: number;\n freshness?: string;\n }): Promise<unknown>;\n /**\n * Semantic search across the agent's member scopes. Fan-out is gated\n * server-side by `listScopes` set-inclusion (fail-closed). Pass\n * `scopeType` + `scopeId` to narrow to one scope; a non-member scope\n * yields empty results (never a cross-scope leak).\n */\n knowledgeSearch(query: string, opts?: {\n limit?: number;\n scopeType?: KnowledgeScopeType;\n scopeId?: string;\n }): Promise<KnowledgeSearchResult>;\n /** Enumerate the scopes (org + teams + projects) this agent belongs to. */\n listScopes(): Promise<{\n scopes: KnowledgeScope[];\n }>;\n /** Read a scope's structured knowledge profile (after membership check). */\n getScopeProfile(scopeType: KnowledgeScopeType, scopeId: string): Promise<KnowledgeProfile>;\n /** List a scope's docs (the org-files corpus; mirrored to shared/<scope>/). */\n listScopeDocs(scopeType: KnowledgeScopeType, scopeId: string, opts?: {\n limit?: number;\n cursor?: string;\n }): Promise<{\n files: KnowledgeDoc[];\n nextCursor: string | null;\n }>;\n /**\n * Read the full text of a scope doc. Resolves a presigned download URL\n * from `services/org`, then fetches the bytes directly from S3 (the one\n * legitimate raw fetch in a plugin — same pattern as sync).\n */\n readScopeDoc(scopeType: KnowledgeScopeType, scopeId: string, filePath: string): Promise<{\n filePath: string;\n text: string;\n }>;\n /**\n * Write (create or overwrite) a scope doc. Two-step presigned upload:\n * `services/org` returns a signed URL plus `requiredHeaders` (author /\n * authorKind / message as `x-amz-meta-*`) that MUST be sent verbatim on\n * the PUT, alongside the same `Content-Type` that was signed. Author and\n * authorKind are server-set from the agent token — never trusted here.\n */\n writeScopeDoc(scopeType: KnowledgeScopeType, scopeId: string, filePath: string, content: string, opts?: {\n contentType?: string;\n message?: string;\n }): Promise<{\n filePath: string;\n }>;\n /**\n * Open a change request against a scope's knowledge resource. For a doc\n * create/update, `services/org` returns a presigned staging PUT; this method\n * uploads the proposed `content` to it (echoing the same Content-Type that\n * was signed), mirroring `writeScopeDoc`. The staged body is applied to the\n * canonical doc — attributed to this agent — only when a reviewer approves.\n */\n proposeScopeChange(scopeType: KnowledgeScopeType, scopeId: string, input: ProposeScopeChangeInput): Promise<KnowledgeChangeRequest>;\n /**\n * List the agent's OWN change requests in a scope (filtered server-side to\n * this agent as proposer). Pass `status` to narrow to open / approved / etc.\n */\n listScopeChangeRequests(scopeType: KnowledgeScopeType, scopeId: string, opts?: {\n status?: ChangeRequestStatus;\n limit?: number;\n cursor?: string;\n }): Promise<{\n changeRequests: KnowledgeChangeRequest[];\n nextCursor: string | null;\n }>;\n registerDatabaseCredentials(): Promise<{\n connectionString: string;\n username: string;\n password: string;\n databases: string[];\n }>;\n reportDatabaseAudit(entry: {\n database: string;\n collection: string;\n operation: string;\n summary?: string;\n }): Promise<void>;\n requestBrowserTakeover(args: {\n instructions: string;\n url?: string;\n conversationId?: string;\n }): Promise<{\n sessionId: string;\n status: string;\n }>;\n getRemoteSession(sessionId: string): Promise<RemoteSessionInfo>;\n completeRemoteSession(sessionId: string): Promise<{\n ok: boolean;\n }>;\n /**\n * Issue a request that returns the raw `Response` (no JSON parsing, no\n * forced Content-Type). The caller sets `Content-Type`/`Accept` on `headers`\n * and reads the body itself (`arrayBuffer()` / `json()`).\n *\n * A single retry fires only on the same transient statuses `request()`\n * retries (authorizer-timeout 500 + LB 502/503/504) and transient network\n * errors — before the route handler runs — so re-issuing a POST does not\n * risk a duplicate side effect. Voice TTS/STT are effectively idempotent\n * (re-synthesize / re-transcribe) and meter server-side keyed on the\n * gateway requestId, so a retried transcription doesn't double-bill.\n */\n private rawFetch;\n /**\n * Text-to-speech. Returns raw PCM audio bytes plus their framing — the\n * voice service defaults to 24 kHz / mono / 16-bit. Wrap in a WAV container\n * to produce a playable file. Metered per character against the tenant\n * credit pool server-side; TTS completes regardless of metering outcome.\n */\n tts(args: VoiceTtsArgs): Promise<VoiceTtsResult>;\n /**\n * Speech-to-text. Accepts raw linear16 (16-bit LE) mono PCM — NOT a WAV or\n * other container (the endpoint transcribes with a fixed linear16 encoding,\n * so a container header would be transcribed as noise). Strip any WAV header\n * and pass `sampleRate` from it before calling. Metered by transcribed\n * duration against the tenant credit pool server-side.\n */\n stt(args: VoiceSttArgs): Promise<VoiceSttResult>;\n}\n//# sourceMappingURL=index.d.ts.map\n//#endregion\nexport { AgentApiClient, AgentApiClientConfig, AgentAvatarPresign, AgentSelf, AgentVoice, AgentVoiceConfig, ChangeRequestActorKind, ChangeRequestOperation, ChangeRequestResourceType, ChangeRequestStatus, type ChangelogAction, type ChangelogActor, type ChangelogEntry, type EncryptedEnvelopeV1, type Field, type FieldEnvelope, type FieldFormat, type FieldSensitivity, type FieldView, type GeneratedDataKey, type IntegrationConfigResult, type IntegrationConfigSchemaField, type IntegrationInstall, KnowledgeChangeRequest, KnowledgeDoc, KnowledgeProfile, KnowledgeProfileLink, KnowledgeScope, KnowledgeScopeType, KnowledgeSearchHit, KnowledgeSearchResult, ProposeScopeChangeInput, type RegistryEntry, RemoteSessionInfo, type ScopeInfo, type SecretAggregate, type SecretCategory, type SecretMetadata, type SecretScope, SharedFileEntry, SyncAgentInfo, SyncAgentStats, SyncConfirmedUpload, SyncFileEntry, SyncManifest, SyncManifestEntry, SyncPresignedUrl, SyncReconstructBundle, SyncReconstructFile, SyncSessionContent, SyncSessionEntry, VoiceSttArgs, VoiceSttResult, VoiceTtsArgs, VoiceTtsModel, VoiceTtsResult };\n//# sourceMappingURL=index.d.ts.map"],"mappings":";;;;;;;;;AAyBA;AAOA;;;;;AAcA;AAiBiB,UAtCA,aAAA,CAsCY;EA4BP,IAAA,EAAA,MAAA;EAAY,IAAA,EAAA,MAAA;YAEvB,EAAA,MAAA;cAAR,EAAA,UAAA,GAAA,YAAA;;AAmBmB,UAhFL,aAAA,CAgFkB;EAAA,KAAA,EA/E1B,MA+E0B,CAAA,MAAA,EA/EX,aA+EW,CAAA;;;;AAanC;;;;;AAgCA;EAgBsB,OAAA,CAAA,EAAA,MAAA;AAgBtB;AAA6B,UA/IZ,cAAA,CA+IY;SACpB,EAAA,CAAA;SACC,EAAA,MAAA;UACP,EAAA,MAAA;EAAY,KAAA,EA9IN,MA8IM,CAAA,MAAA,EAAA;;;;ICvHF,IAAA,CAAA,EAAA,MAAA;IAiDS,YAAA,CAAA,EAAA,MAAkB;IA+BxB,UAAA,CAAY,EAAA,OAAA;EAuBZ,CAAA,CAAA;AAUhB;UD3HiB,YAAA;;;EE3DPiC;EAIAC,MAAAA,EAAAA,MAAAA,EAAAA;EASAC;EAUAC,SAAAA,EAAAA,MAAAA,EAAAA;EAQAC;EAAY,aAAA,EAAA,MAAA,EAAA;;;;AAIP;AAEW;AAKG;AAOA;AAYD;AAUlBO,iBFgBY,YAAA,CEhBC,aAAA,EAAA,MAAA,CAAA,EFkBpB,OElBoB,CFkBZ,aElBY,CAAA;AAAA;AAQG;AAOE;AAKH;AAOfK,iBFUY,aAAA,CETTD,aAAkB,EAAA,MAAA,EAAA,QAAA,EFWnB,aEXmB,CAAA,EFY5B,OEZ4B,CAAA,IAAA,CAAA;AAAA;AASA;AAcF;AAQnBK,iBFTY,mBAAA,CESI,aAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EFNjB,aEMiB,CAAA,EFLvB,OEKuB,CAAA,IAAA,CAAA;;;;;AAKG;AAIP;AASQ;AACH;;;;;AAajBI,iBFTY,mBAAA,CESZA,aAAAA,EAAAA,MAAAA,EAAAA,YAAAA,EAAAA,MAAAA,CAAAA,EFNP,OEMOA,CAAAA,IAAAA,CAAAA;;;;AAK4B;AAQL,iBFNX,eAAA,CEMW,QAAA,EAAA,MAAA,CAAA,EFNwB,OEMxB,CAAA,MAAA,CAAA;;;;AAEE;AAaT;AAqBhBM,iBF1BM,aAAA,CE0BY,KAAA,EFzBnB,aEyBmB,EAAA,MAAA,EFxBlB,cEwBkB,CAAA,EFvBzB,YEuByB;AAAA;;;cD9If;iBAiDS,kBAAA,2CAGnB;iBA4Ba,YAAA;ADhIC,iBCuJD,eAAA,CDvJc,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA;AAOb,iBC0JD,aAAA,CD1Jc,KAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA;;;;;;AAP9B,UErBU9B,oBAAAA,CFqBoB;EAO9B,MAAiB,EAAA,MAAA;EAAa,MAAA,EAAA,MAAA;;UExBpBC,iBAAAA,CFyBD;EAAM,SAAA,EAAA,MAAA;EAaf,OAAiB,EAAA,MAAA;EAiBjB,OAAiB,EAAA,SAAY,GAAA,UAAA;EA4B7B,MAAsB,EAAA,eAAY,GAAA,gBAAA,GAAA,kBAAA,GAAA,UAAA,GAAA,WAAA,GAAA,SAAA,GAAA,QAAA;EAAA,GAAA,CAAA,EAAA,MAAA;cAEvB,CAAA,EAAA,MAAA;aAAR,CAAA,EAAA,MAAA;;AAmBH,UE/FUC,aAAAA,CF+FyB;EAAA,OAAA,EAAA,MAAA;UAEvB,EAAA,MAAA;aACT,EAAA,MAAA;EAAO,QAAA,EAAA,MAAA;EAUV,MAAsB,EAAA,OAAA,GAAA,SAAmB,GAAA,QAAA;EAAA,SAAA,CAAA,EAAA,MAAA;WAGhC,CAAA,EAAA,MAAA;UACN,CAAA,EAAA,MAAA;;AA4BH,UElIUC,iBAAAA,CFkI+B;EAgBzC,IAAsB,EAAA,MAAA;EAgBtB,IAAgB,EAAA,MAAA;EAAa,QAAA,EAAA,MAAA;OACpB,EAAA,MAAA;cACC,CAAA,EAAA,MAAA;YACP,CAAA,EAAA,OAAA;;UE7JOC,YAAAA;;;EDsCV,QAAa,EAAA,MAAA;EAiDb,KAAsB,ECnFbC,MDmFa,CAAA,MAAA,ECnFEF,iBDsFrB,CAAA;AA4BH;AAuBA,UCvIUG,gBAAAA,CDuIqB;EAU/B,IAAgB,EAAA,MAAA;;;;AC1Lo1B,UA8C11BC,mBAAAA,CA1CoB;EAAA,QAIpBN,EAAAA,MAAAA;EAAiB,IASjBC,EAAAA,MAAAA;EAAa,IAUbC,EAAAA,MAAAA;EAAiB,YAQjBC,EAAAA,UAAY,GAAA,YAAA;EAAA,QAAA,EAAA,MAAA;;UAkBZI,mBAAAA,CAdDH;EAAM,IAAA,EAAA,MAAA;EAAA,IAELC,EAAAA,MAAAA;EAAgB,GAKhBC,EAAAA,MAAAA;EAAmB,YAOnBC,CAAAA,EAAAA,MAAAA;EAAmB,UAOnBC,CAAAA,EAAAA,OAAAA;AAKkB;AAGJ,UARdA,qBAAAA,CAea;EAAA,OAQbG,EAAAA,MAAAA;EAAgB,IAOhBC,EAAAA,MAAAA,GAAAA,QAAkB,GAAA,QAAA;EAAA,SAKlBC,EAAAA,MAAAA;EAAe,SAMpBC,EAAAA,MAAAA;EAAkB,KACbC,EArCDR,mBAqCe,EAAA;EACO,SAIrBS,EAAAA,MAAAA;AAKqB;AAcF,UA1DnBP,cAAAA,CA8DAS;EAAoB,OAIpBC,EAAAA,MAAAA;EAAgB,aAAA,EAAA,MAAA;cACbL,EAAAA,MAAAA;WAIJI,EAAAA,MAAAA;EAAoB,UAAA,EAAA,MAAA,GAAA,IAAA;AAAA;AAIP,UApEZR,aAAAA,CA6ELW;EAAyB,QACzBC,EAAAA,MAAAA;EAAsB,IACtBC,EAAAA,MAAAA;EAAmB,QACnBC,EAAAA,MAAAA;EAAsB,WAEjBC,EAAAA,MAAAA;EAAsB,YAAA,CAAA,EAAA,MAAA;YAEnBX,CAAAA,EAAAA,OAAAA;;UA5EHH,gBAAAA,CA+EGW;WAIHC,EAAAA,MAAAA;QAEMC,MAAAA;cAGAA,EAAAA,MAAAA;EAAsB,YAAA,CAAA,EAAA,MAAA;EAAA,UAQ5BE,EAAAA,OAAAA;;UAzFAd,kBAAAA,CA0FMS;WACHC,EAAAA,MAAAA;EAAsB,OAAA,EAAA,MAAA;EAAA,UAazBK,EAAAA,OAAAA;AAAgB;AAiBM,UApHtBd,eAAAA,CAwHkB;EAAA,QAWlBiB,EAAAA,MAAU;EAKJ,QAIXC,EAAAA,MAAAA;EAAa,IACRC,EAAAA,MAAAA;EAMa,WAGbC,CAAAA,EAAAA,MAAc;AAET;AAUI,KA5JdnB,kBAAAA,GAgKmB,KAAA,GAAA,MAAA,GAAA,SAAA;AAAA,UA/JdC,cAAAA,CAoKkB;EAAA,SAAA,EAnKfD,kBAmKe;SAGNf,EAAAA,MAAAA;QAKXE,MAAAA;;UAvKDe,kBAAAA,CAyKmBb;YAARoC;QAQXlC,MAAAA;;OAOIC,EAAAA,MAAAA;WAARiC,EAnLOzB,kBAmLPyB;SAGQ/B,EAAAA,MAAAA;;;;;;QAQAG,EAAAA,KAAAA,GAAAA,MAAAA;;UAE+BC,CAAAA,EAAAA,MAAAA;;QACT2B,CAAAA,EAAAA,MAAAA;;UApL1BtB,qBAAAA,CA0LJsB;SAQAA,EAjMKvB,kBAiMLuB,EAAAA;;iBAIgBA,EAAAA,OAAAA;;UAjMZrB,oBAAAA,CAkMqCqB;OACUnC,EAAAA,MAAAA;OAA0BmC,MAAAA;;UA/LzEpB,gBAAAA,CAmMIjC;WAARqD,EAlMOzB,kBAkMPyB;SAC8CrD,EAAAA,MAAAA;OAARqD,EAAAA,MAAAA,GAAAA,IAAAA;aACQA,EAAAA,MAAAA,GAAAA,IAAAA;OAQvCnC,EAxMJc,oBAwMId,EAAAA;WAHuBmC,EAAAA,MAAAA,GAAAA,IAAAA;WAMlBnD,EAAAA,MAAAA,GAAAA,IAAAA;;UAvMRgC,YAAAA,CAmNgBmB;UAUgBA,EAAAA,MAAAA;UAOZA,EAAAA,MAAAA;aAyBPnC,CAAAA,EAAAA,MAAAA;QAL2BmC,MAAAA;YAgBxBA,CAAAA,EAAAA,MAAAA;WAkBHA,EAAAA,MAAAA;WAiBCA,EAAAA,MAAAA;;KAlSnBlB,yBAAAA,GA2TiBkB,KAAAA,GAAAA,SAAAA;KA1TjBjB,sBAAAA,GAoU4CiB,QAAAA,GAAAA,QAAAA,GAAAA,QAAAA;KAnU5ChB,mBAAAA,GA6UqBgB,MAAAA,GAAAA,UAAAA,GAAAA,UAAAA,GAAAA,WAAAA,GAAAA,YAAAA;KA5UrBf,sBAAAA,GAwVkBe,OAAAA,GAAAA,OAAAA;;UAtVbd,sBAAAA,CAqXiBc;iBA0BDA,EAAAA,MAAAA;WAoCiCA,EAjb9CzB,kBAib8CyB;SAUnCA,EAAAA,MAAAA;cAcHA,EAvcLlB,yBAucKkB;WAYCA,EAldTjB,sBAkdSiB;YASQA,EAAAA,MAAAA,GAAAA,IAAAA;eAYHA,EAAAA,MAAAA,GAAAA,IAAAA;qBAiBqBA,EAAAA,MAAAA,GAAAA,IAAAA;QAkBnBA,EAtgBnBhB,mBAsgBmBgB;YAyBHA,EAAAA,MAAAA;cA8BiCA,EA3jB3Cf,sBA2jB2Ce;WAKlCA,EAAAA,MAAAA;YAaNnC,EAAAA,MAAAA,GAAAA,IAAAA;cACbmC,EA3kBUf,sBA2kBVe,GAAAA,IAAAA;YAIiBA,EAAAA,MAAAA,GAAAA,IAAAA;YAWfA,EAAAA,MAAAA,GAAAA,IAAAA;YAyBFA,EAAAA,MAAAA,GAAAA,IAAAA;WAQAA,EAAAA,MAAAA;WAMYZ,EAAAA,MAAAA;;;UAznBRD,uBAAAA,CAioBIE;cAARW,EAhoBUlB,yBAgoBVkB;WAQQV,EAvoBDP,sBAuoBCO;;WAK2BD,EAAAA,MAAAA;;YAG7BE,CAAAA,EAAAA,MAAAA;;SAWDhC,CAAAA,EAAAA,MAAAA;;aAILyC,CAAAA,EAAAA,MAAAA;;eAaAA,CAAAA,EAAAA,OAAAA;;;UA9pBIZ,gBAAAA,CAirBKnD;;SAGEL,CAAAA,EAAAA,MAAAA;UAGHqB,CAAAA,EAAAA,MAAAA;SAAR+C,CAAAA,EAAAA,OAAAA;;;;;;;;UA3qBIX,SAAAA,CAgsBKzD;SALToE,EAAAA,MAAAA;UAYKzC,EAAAA,MAAAA;QAIMpB,MAAAA;WACJF,CAAAA,EAAAA,MAAAA;aAEEL,CAAAA,EAzsBCwD,gBAysBDxD;QAEToE,EAAAA,MAAAA;;;UAvsBIV,kBAAAA,CAotBC/B;;WAQGN,EAAAA,MAAAA;;OAGHM,EAAAA,MAAAA;;WAKGF,EAAAA,MAAAA;;WAGHE,EAAAA,MAAAA;;;UA5tBDgC,UAAAA,CAuuBChC;YAGLyC;QAEwBjD,MAAAA;YAARiD,EAAAA,MAAAA;aAUVA,EAAAA,MAAAA;QASNA,EA1vBInC,MA0vBJmC,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;UAgBAA,EAAAA,MAAAA;;;KAtwBDR,aAAAA,GA6xBCQ,mBAAAA,GAAAA,wBAAAA;UA5xBIP,YAAAA,CAwyBJO;;QAgBAA,MAAAA;;SA4BAA,CAAAA,EAAAA,MAAAA;;OAkCAA,CAAAA,EAh3BIR,aAg3BJQ;;;UA72BIN,cAAAA,CA05BJM;;OAgBkDA,EAx6B/CL,MAw6B+CK;;YAepCA,EAAAA,MAAAA;;UAWHA,EAAAA,MAAAA;;UAqBUA,EAAAA,MAAAA;;UA/8BjBJ,YAAAA,CA+9BJI;;OASAA,EAt+BGH,UAs+BHG;;YAWQtB,EAAAA,MAAAA;;UA7+BJoB,cAAAA,CAg/BEtB;QADIwB,MAAAA;;YAI2DpB,EAAAA,MAAAA;;cA9+B7DmB,cAAAA,CAg/BaxB;mBAIhBM,MAAAA;mBADLmB,MAAAA;aASoBzB,CAAAA,MAAAA,EAz/BJf,oBAy/BIe;UAAwDyB,OAAAA;cAWvDzB,CAAAA,KAAAA,EAAAA;eAGrByB,CAAAA,EAAAA,MAAAA;MAngCAA,OA6gC0BzB,CAAAA;SAA4CY,EA5gCjEzB,aA4gCiEyB;;iBAA0Ba,CAAAA,CAAAA,EA1gCjFA,OA0gCiFA,CA1gCzEpC,YA0gCyEoC,CAAAA;aAKjEzB,CAAAA,IAAAA,EAAAA;SACxBS,EAAAA;UAIOE,EAAAA,MAAAA;eADdc,EAAAA,KAAAA,GAAAA,KAAAA;iBAI2BA,CAAAA,EAAAA,MAAAA;OAW3BA;MA3hCAA,OAgiCAA,CAAAA;QAIyCvC,EAniCrCK,gBAmiCqCL,EAAAA;;mBACHuC,CAAAA,IAAAA,EAAAA;YAsBhCP,EAAAA,MAAAA;QAAuBC,EAAAA,MAAAA;QAARM,EAAAA,MAAAA;gBAQfJ,CAAAA,EAAAA,UAAAA,GAAAA,YAAAA;MA3jCNI,OA2jC6BF,CA3jCrB/B,mBA2jCqB+B,CAAAA;iBAARE,CAAAA,IAAAA,EAAAA;IAAO,IAAA,EAAA,MAAA,GAAA,QAAA,GAAA,QAAA;MAxjC5BA,QAAQ/B;kBACI+B,QAAQ9B;oBChN1B;IA9CiB,MAAA,CAAA,EAAA,MAAU;EA8C3B,CAAA,CAAiB,EDmNX8B,OCnNW,CAAA;IAqBD,KAAA,ED+LL7B,aC/LqB,EAAA;EAAA,CAAA,CAAA;kBAC9B,CAAA,CAAA,EDgMoB6B,OChMpB,CAAA;YACA,EDgMY5B,gBChMZ,EAAA;;gBAEA,CAAA,SAAA,EAAA,MAAA,CAAA,EDgMmC4B,OChMnC,CDgM2C3B,kBChM3C,CAAA;gBACC,CAAA,QAAA,EAAA,MAAA,CAAA,EDgMiC2B,OChMjC,CAAA;;;iBAaI,CAAA,IAAA,EAAA;SAwCQ,EAAA,KAAA,GAAA,MAAA,GAAA,SAAA;WAAR,EAAA,MAAA;MDiJDA,OCrHqD,CAAA;SAAR,EDsHxC1B,eCtHwC,EAAA;cAqCY,EAAA,MAAA,GAAA,IAAA;;mBA6HhD,CAAA,IAAA,EAAA;SAAR,EAAA,KAAA,GAAA,MAAA,GAAA,SAAA;WAmOQ,EAAA,MAAA;YAAR,EAAA,MAAA;MDxQD0B,OCwTS,CAAA;eAAR,EAAA,MAAA;aAgCA,EAAA,MAAA;EAAO,CAAA,CAAA;EAmBd,gBAAsB,CAAA,CAAA,EDvWAA,OCuWA,CDvWQrD,kBCuWR,EAAA,CAAA;EAAA,oBAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EDtWyBqD,OCsWzB,CDtWiCxD,uBCsWjC,CAAA;yBAAqB,CAAA,aAAA,EAAA,MAAA,EAAA,MAAA,EDrWcqB,MCqWd,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EDrWwCmC,OCqWxC,CAAA,IAAA,CAAA;oBAAlB,CAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA;IAAU,OAAA,CAAA,EAAA,MAAA;aDlWtBnC;MACPmC,QAAQrD;4CAC8BqD,QAAQrD;EE/TpD,WAAiB,CAAA,QAAc,EAAA,MAAA,EAWU,MAAO,CAAP,EAAO,MAAA,EAAA,CAAA,EFqTIqD,OErTJ,CAAA;IAQ1B,GAAA,EAAA,MAAA;IAAY,QAAA,EAAA,MAAA;aACvB,EAAA,MAAA;;gBACR,CAAA,QAAA,EAAA,MAAA,CAAA,EFgTiCA,OEhTjC,CAAA;IAAO,QAAA,EAAA,MAAA;;aFmTGnC;;EG5Tb,WAAiB,CAAA,CAAA,EH8TAmC,OG9TY,CAAA;IAkGP,YAAA,EH6NJnD,aG7Ne,EAAA;EAAA,CAAA,CAAA;;;;;;;;ACpGjC;AAqDA;;sBAGU,CAAA,CAAA,EJqRgBmD,OIrRhB,CAAA;YACS,EAAA;WAER,EAAA,MAAA;kBAAR,EAAA,MAAA;MAAO,QAAA,EAAA,MAAA;;;;ICxEO,CAAA,EAAA;EAUjB,CAAA,CAAsB;EAAS,uBAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EL0VWA,OK1VX,CAAA;YACX,EAAA;WAAR,EAAA,MAAA;iBACD,CAAA,EAAA,MAAA;iBACA,CAAA,EAAA,MAAA;OAAR;EAAO,CAAA,CAAA;8BL8VoBA;;;IMrVb,QAAA,EAAA,MAAW;IAMX,YAAA,EAAA,MAAgB;IAKvB,WAAA,CAAA,EAAA,MAAY;EAOtB,CAAA,CAAiB;EAAgB;;;;;;;;;AAQjC;;;;0BAGG,CAAA,YAAA,EAAA,MAAA,CAAA,EN4U+CA,OM5U/C,CAAA;IAAgB,QAAA,EAAA,MAAA;;;;uBNiVInC;;;;;;;;;;;0BAWGmC;;;;;;;;;;;;;;;;;;uBAkBHA;;;;;;;;;;;;;;;;;wBAiBCA;;;;;;;;;;;;;;qBAcHA;;;;;;;;;;;sBAWCA;;;;;;;;;;iDAU2BA;;;;;;;;;;0BAUvBA;;;;;;;;;;;;uBAYHA;;;;;;;;;;;;;;;;;;;6BAmBMA;;;;;;;;;;;;2BAYFA;;;;;;;;;;;;;;;;;;;;;;;;;;0BA0BDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2DAoCiCA;;;;;;;;;;wBAUnCA;;;;;;;;;;;;;;qBAcHA;;;;;;;;;;;;sBAYCA;;;;;;;;;8BASQA;;;;;;;;;;;;2BAYHA;;;;;;;;;;;;;;;;;gDAiBqBA;;;;;;;;;;;;;;;;;;6BAkBnBA;;;;;;;;;;;;;;;;;;;;;;;;;0BAyBHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2DA8BiCA;;;;;yBAKlCA;;;;;;;;;;;;;mBAaNnC;MACbmC;;;;uBAIiBA;;;;;;;;;;;QAWfA;;;;;;;;;;;;;;;;;;;;;;;;;MAyBFA;;;;;;;;MAQAA;;;;;;kBAMYZ;MACZY,QAAQX;;;;;;;MAORW,QAAQX;;;;;;;;MAQRW,QAAQV;;;;;iCAKmBU,QAAQX;;gBAEzBW;YACJT;;;;;;;;;;;WAWDhC;;;;MAILyC,QAAQ1D;;;;;;;;WAQHiB;;;;;MAKLyC;;;;;;;;;;WAUKzC;;;;eAIIJ;;;;;eAKAlB;mBACIE;;iBAEFP;;;MAGXoE,QAAQ/C;;;WAGHM;;;MAGLyC;eACS/C;eACAlB;;;;WAIJwB;;;;MAILyC;;iBAEW7D;aACJF;;eAEEL;;;;;;;WAOJ2B;;;;iBAIMpB;aACJF;;eAEEL;;MAEToE;;;;;;WAMKzC;;;;MAILyC;;;WAGKzC;;;;;;eAMIJ;;MAET6C,QAAQ/C;;;WAGHM;;eAEIJ;;;MAGT6C,QAAQ3C;;;WAGHE;;;;;MAKLyC;aACOtE;;;;;WAKF6B;;;MAGLyC;;sBAEgBA,QAAQjD;;;;;;;;;;YAUlBiD;;;;;;;;;MASNA;;;;;;;;;;;;;;;;MAgBAA;;;0CAGoCA;;;;;;;;;;MAUpCA;;;;;;;;;;MAUAA;;;;;;;;;;;;MAYAA;;;;;;;;;;;MAWAA;;;;;MAKAA;;;;;;;;;;MAUAA;;;;;;;;;;;;;;;;;;MAkBAA;;;;;;;;;;;;;;;;MAgBAA;;;;;;;;;;;;;;;;;;MAkBAA;;;;;;;;;;;MAWAA;;;;;;;;;;MAUAA;;;;;;;;;;;;;;;;;;;;;;;;MAwBAA;;;;;;;;;;;;MAYAA;;;;wDAIkDA;;;;uCAIjBA;;;;;;;;;;;oBAWnBA;;;;;;;;kCAQcA;;;iBAGjBA;;;;;;;;;;;;;;;MAeXA;;;;;;2BAMqBA;;;;;;2DAMgCA;;;;;;;;;;MAUrDA;;;;MAIAA;;;;;MAKAA;;;;;;;;;gBASUzB;;MAEVyB,QAAQtB;;gBAEEsB;YACJxB;;;6BAGiBD,sCAAsCyB,QAAQpB;;2BAEhDL;;;MAGrByB;WACKnB;;;;;;;;0BAQeN,wDAAwDyB;;;;;;;;;;;2BAWvDzB;;;MAGrByB;;;;;;;;;;gCAU0BzB,4CAA4CY,0BAA0Ba,QAAQd;;;;;qCAKzEX;aACxBS;;;MAGPgB;oBACcd;;;iCAGac;;;;;;;;;;;MAW3BA;;;;;MAKAA;;;;uCAIiCA,QAAQvC;4CACHuC;;;;;;;;;;;;;;;;;;;;;;YAsBhCP,eAAeO,QAAQN;;;;;;;;YAQvBE,eAAeI,QAAQF;;;;;;AFnwCb,UGlDL,UAAA,CHkDiB;EAAA,MAAA,EAAA,MAAA;QAEvB,EAAA,MAAA;WAAR,EAAA,MAAA;EAAO,MAAA,EAAA,MAAA;AAmBV;;;;;AAaA;;;;;AAgCA;AAgBA;AAgBA;;;;;;;;;ACpHa,UEcI,iBAAA,CFbiD;EAgD5C,aAAA,EAAA,MAAkB;EA+BxB,MAAA,EEhEN,cFgEkB;EAuBZ;AAUhB;;;;ECtLUtC;AAAoB;AAIH;AASJ;EAkBbI,gBAAY,CAAA,EAAA,MAAA;;;;;AAIP;AAEW;AAKG;AAcnBK,iBCgDM,gBAAA,CD3CPD;EAAAA,aAAAA;EAAAA,MAAmB;EAAA,OAAA;EAAA;AAAA,CAAA,ECgDzB,iBDhDyB,CAAA,EAAA;EAGlBE,aAAAA,EAAAA,MAAc;EAOdC,MAAAA,gBAAa;EAQbC,OAAAA,EAAAA,MAAAA;EAOAC;AAAkB;AAKH;AAMF;EAMbI,IAAAA,CAAAA,KAAkB,CAAlBA,EAAAA,MAAAA,EAAkB,EAAA,OA2BlBG,CA3BkB,EAKfL;IAaHG,KAAAA,CAAAA,EAAAA,OAAAA;IAKAC,MAAAA,CAAAA,EAAAA,MAAAA;EAIAC,CAAAA,CAAAA,ECRH,ODQGA,CCRK,UDQW,CAAA;EAAA,WAAA,CAAA,KAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA;IACbL,KAAAA,CAAAA,EAAAA,OAAAA;MC+BN,OD3BEI,CC2BM,UD3BNA,CAAAA;EAAoB;EAInBE,IAAAA,CAAAA,OAULE,CAVKF,EAAY;IASjBC,KAAAA,CAAAA,EAAAA,OAAAA;EACAC,CAAAA,CAAAA,ECyC8C,ODzC9CA,CCyCsD,UDzCtDA,CAAAA;EACAC;AAAmB;AACG;;UAIdT,CAAAA,QAAAA,EAAAA;IAEGO,KAAAA,CAAAA,EAAAA,OAAAA;MCsEuC,ODrE1CC,CCqEkD,UDrElDA,CAAAA;;;;;AASyB;;;;;AAUH;AAaT;AAiBM;AAIJ;AAgBZ;AAIE;AAOK;AAKR;AAUI;AAIK;;;;;;;;;;;;;;;;;;;;;;;mBAkDlBiB,CAAAA,QAAAA,EAAAA;IAQAA,KAAAA,CAAAA,EAAAA,OAAAA;MCqCC,ODjCuBrD,CCiCf,UDjCeA,CAAAA;;;;;WAEqDqD,CAAAA,KAAAA,EAAAA,MAAAA,EAAAA,EAAAA,QAAAA,EAAAA;IAGtEnC,KAAAA,CAAAA,EAAAA,OAAAA;MC+PN,OD9POlB,CC8PC,UD9PDA,CAAAA;;;;;;;;;;;cA0CgBqD,CAAAA,QAAAA,EAAAA;IAyBPnC,KAAAA,CAAAA,EAAAA,OAAAA;IAL2BmC,KAAAA,CAAAA,EAAAA,MAAAA;MCgP3C,ODhOmBA,CCgOX,UDhOWA,CAAAA;;;;;iBAsEuBA,CAAAA,QAAAA,EAAAA,MAAAA,EAAAA,QAAAA,EAAAA;IAUvBA,KAAAA,CAAAA,EAAAA,OAAAA;MCgLnB,ODpKgBA,CAAAA,IAAAA,CAAAA;;AA+BIA,KCwJf,UAAA,GAAa,UDxJEA,CAAAA,OCwJgB,gBDxJhBA,CAAAA;;;;;;;;AFzf3B;AAOA;AAA8B,UIrBb,cAAA,CJqBa;eACN,EAAA,MAAA;;;AAaxB;AAiBA;AA4BA;EAAkC,OAAA,CAAA,EAAA,MAAA;;YAE/B,CAAA,EAAA,MAAA;EAAO;EAmBY,SAAA,EAAA,CAAA,KAAa,EAAA,MAAA,EAAA,EAAA,GAAA,IAAA,GI1FM,OJ0FN,CAAA,IAAA,CAAA;;;;;AAanC;;AAGS,iBIlGa,YAAA,CJkGb,OAAA,EIjGE,cJiGF,CAAA,EIhGN,OJgGM,CAAA,GAAA,GIhGQ,OJgGR,CAAA,IAAA,CAAA,CAAA;;;;AArCa,UKpEL,YAAA,CLoEiB;EAAA,IAAA,EAAA,MAAA;SAEvB,EAAA,OAAA;MAAR,CAAA,EAAA,MAAA;EAAO,IAAA,CAAA,EAAA,MAAA;EAmBY,KAAA,CAAA,EAAA,MAAA;;;;;AAatB;;;;;AAgCA;AAgBA;AAgBgB,iBKpEM,WAAA,CLoEO,aAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EKjEnB,cLiEmB,EAAA,QAAA,EAAA;EAAA,WAAA,CAAA,EAAA,MAAA;OACpB,CAAA,EAAA,OAAA;IKhEN,OLiEO,CKjEC,YLiED,EAAA,CAAA;;;;AAhIO,UM1CA,cAAA,CN0CY;EA4BP,IAAA,EAAA,MAAA;EAAY,OAAA,EAAA,OAAA;MAEvB,CAAA,EAAA,MAAA;OAAR,CAAA,EAAA,MAAA;;AAmBmB,iBMtCA,aAAA,CNsCa,aAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EMnCzB,cNmCyB,EAAA,cAAA,CAAA,EMlChB,cNkCgB,EAAA,QAAA,EAAA;EAAA,WAAA,CAAA,EAAA,MAAA;OAEvB,CAAA,EAAA,OAAA;IMlCT,ONmCA,CMnCQ,cNmCR,EAAA,CAAA;;;;;;;;AA1Fc,UOjBA,YAAA,CPiBa;EAOb,UAAA,CAAA,EAAA,MAAa;EAAA,WAAA,CAAA,EAAA,MAAA;;;;AAc9B;AAiBA;AA4BA;AAAkC,iBOzEZ,SPyEY,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,GAAA,GOxEtB,OPwEsB,COxEd,CPwEc,CAAA,EAAA,OAAA,CAAA,EOvEvB,YPuEuB,CAAA,EOtE/B,OPsE+B,COtEvB,CPsEuB,CAAA;;;;AAAZ,UQ7DL,WAAA,CR6DiB;EAAA,SAAA,EAAA,MAAA,GAAA,SAAA,GAAA,KAAA;SAEvB,EAAA,MAAA;MAAR,EAAA,MAAA;;AAmBmB,UQ5EL,gBAAA,CR4EkB;EAAA,aAAA,EAAA,MAAA;QAEvB,EQ5EF,cR4EE;;UQzEF,YAAA,CR0EA;EAUY,IAAA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAmB;EAAA,IAAA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;OAGhC,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;OACN,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AA4BmB,UQ7GL,gBAAA,CR6GwB;EAgBnB,UAAA,CAAA,MAAA,EQ5HD,WR4HoC,EAAA,CAAA,EQ5HpB,OR4H2B,CAAA,IAAA,CAAA;EAgBhD,YAAA,CAAA,MAAa,EQ3IN,WR2IM,EAAA,CAAA,EQ3IU,OR2IV,CAAA,IAAA,CAAA;EAAA,kBAAA,CAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,GAAA,SAAA,CAAA,EQ1I6C,OR0I7C,CAAA,IAAA,CAAA;UACpB,EAAA,EQ1IK,OR0IL,CAAA,IAAA,CAAA;WACC,EAAA,EQ1IK,WR0IL,EAAA;;AACK,iBQxIC,sBAAA,CRwID,MAAA,EQvIL,gBRuIK,EAAA,GAAA,EQtIR,YRsIQ,CAAA,EQrIZ,gBRqIY"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as withRetry, c as loadIgnorePatterns, d as computeFileHash, f as diffManifests, g as writeManifest, h as updateManifestEntry, i as uploadFiles, l as shouldIgnore, m as removeManifestEntry, o as DEFAULT_IGNORES, p as readManifest, r as downloadFiles, s as filterIgnored, t as createSyncEngine, u as shouldIgnoreDir } from "./sync-engine.js";
|
|
2
2
|
import { n as createSharedSyncEngine, r as startWatcher, t as plugin } from "./plugin2.js";
|
|
3
3
|
export { DEFAULT_IGNORES, computeFileHash, createSharedSyncEngine, createSyncEngine, diffManifests, downloadFiles, filterIgnored, loadIgnorePatterns, plugin, readManifest, removeManifestEntry, shouldIgnore, shouldIgnoreDir, startWatcher, updateManifestEntry, uploadFiles, withRetry, writeManifest };
|
package/dist/plugin.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.cts","names":[],"sources":["../src/plugin.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"plugin.d.cts","names":[],"sources":["../src/plugin.ts"],"mappings":";;;AAqDsB;;;;;AAWA;;;;;;;;;;AAsCtB,UAjDU,YAAA,CAiDuB;EAiY3B,IAAA,CAAA,GAAA,EAuXL,MAAA,CAAA,EAAA,IAAA;EAAA,IAAA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;OAhXe,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;OAoSQ,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;UAttBd,oBAAA,CA4vBa;QAAmB,EA3vBhC,MA2vBgC,CAAA,MAAA,EAAA,OAAA,CAAA;cAAgB,CAAA,EAAA,MAAA;EAAA,QAAA,EAAA,MAAA;UAxvBhD;;UAGA,SAAA;UACA;;WAEC;wDAC6C;;;iBAGvC,gCAAgC;iBAChC,gCAAgC;;;UA2BhC,gBAAA;;;;;;;;;;;;;;cAiYX;;;;;gBAOU;kBAoSQ,YAAS;iBAsCV,mBAAmB,mBAAgB"}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","names":[],"sources":["../src/plugin.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","names":[],"sources":["../src/plugin.ts"],"mappings":";;;AAqDsB;;;;;AAWA;;;;;;;;;;AAsCtB,UAjDU,YAAA,CAiDuB;EAiY3B,IAAA,CAAA,GAAA,EAuXL,MAAA,CAAA,EAAA,IAAA;EAAA,IAAA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;OAhXe,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;OAoSQ,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;UAttBd,oBAAA,CA4vBa;QAAmB,EA3vBhC,MA2vBgC,CAAA,MAAA,EAAA,OAAA,CAAA;cAAgB,CAAA,EAAA,MAAA;EAAA,QAAA,EAAA,MAAA;UAxvBhD;;UAGA,SAAA;UACA;;WAEC;wDAC6C;;;iBAGvC,gCAAgC;iBAChC,gCAAgC;;;UA2BhC,gBAAA;;;;;;;;;;;;;;cAiYX;;;;;gBAOU;kBAoSQ,YAAS;iBAsCV,mBAAmB,mBAAgB"}
|
package/dist/plugin2.cjs
CHANGED
|
@@ -615,7 +615,8 @@ const plugin = {
|
|
|
615
615
|
if (syncSchedule === "realtime") {
|
|
616
616
|
try {
|
|
617
617
|
lastSyncResult = await syncEngine.firstRunReconcile({ quiet: true });
|
|
618
|
-
log.info(
|
|
618
|
+
if (lastSyncResult.conflicts > 0) log.info(`Initial workspace reconcile complete — ${String(lastSyncResult.conflicts)} diverged local file(s) handled (see RECOVERY-*.md in the agent workspace)`);
|
|
619
|
+
else log.info("Initial workspace reconcile complete");
|
|
619
620
|
} catch (err) {
|
|
620
621
|
log.warn(`Initial workspace reconcile failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
621
622
|
}
|
|
@@ -643,11 +644,17 @@ const plugin = {
|
|
|
643
644
|
log.error(`Realtime push failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
644
645
|
}
|
|
645
646
|
if (missing.length > 0) {
|
|
647
|
+
const artifactDeletes = missing.filter((p) => require_sync_engine.isRecoveryArtifact(p));
|
|
648
|
+
const regularDeletes = missing.filter((p) => !require_sync_engine.isRecoveryArtifact(p));
|
|
646
649
|
const manifest = await require_sync_engine.readManifest(workspacePath);
|
|
647
650
|
const manifestSize = Object.keys(manifest.files).length;
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
+
let toDelete = missing;
|
|
652
|
+
if (deleteBrake && !deleteBrake.check(regularDeletes.length, manifestSize)) {
|
|
653
|
+
log.error(`Sync delete brake tripped: ${String(deleteBrake.windowSum() + regularDeletes.length)} deletes in last 60s vs manifest size ${String(manifestSize)} (threshold 30%). Refusing batch — investigate the workspace state.`);
|
|
654
|
+
toDelete = artifactDeletes;
|
|
655
|
+
}
|
|
656
|
+
if (toDelete.length > 0) try {
|
|
657
|
+
lastSyncResult = await syncEngine.pushDeletes(toDelete, { quiet: true });
|
|
651
658
|
} catch (err) {
|
|
652
659
|
log.error(`Realtime delete failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
653
660
|
}
|