@alfe.ai/mcp-server 0.1.1 → 0.1.3

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/index.cjs CHANGED
@@ -1,5 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  let node_module = require("node:module");
3
+ let node_url = require("node:url");
3
4
  let _modelcontextprotocol_sdk_server_mcp_js = require("@modelcontextprotocol/sdk/server/mcp.js");
4
5
  let _modelcontextprotocol_sdk_server_stdio_js = require("@modelcontextprotocol/sdk/server/stdio.js");
5
6
  let _alfe_ai_agent_api_client = require("@alfe.ai/agent-api-client");
@@ -22,6 +23,18 @@ const SERVER_NAME = "alfe-platform";
22
23
  */
23
24
  const SERVER_VERSION = pkg.version;
24
25
  /**
26
+ * Absolute path to this package's stdio bin. Computed from
27
+ * `import.meta.url` (always available, regardless of how the package
28
+ * is installed) and resolved to a sibling of the main dist file.
29
+ *
30
+ * Exported so the CLI's `ensureAlfePlatformRegistered` doesn't need
31
+ * to call `require.resolve('@alfe.ai/mcp-server/package.json')`, which
32
+ * trips Node's strict exports-map enforcement when `./package.json`
33
+ * isn't listed in `exports`. The package knows where its own binary
34
+ * lives; consumers shouldn't have to crawl `package.json` for it.
35
+ */
36
+ const SERVER_BIN_PATH = (0, node_url.fileURLToPath)(new URL("./bin.js", require("url").pathToFileURL(__filename).href));
37
+ /**
25
38
  * Build a configured `McpServer` with all thin-slice tools registered.
26
39
  * Pure construction — does not connect a transport. Callers (the bin
27
40
  * entry, or tests) attach `StdioServerTransport` or any other transport.
@@ -75,6 +88,7 @@ function errMsg(err) {
75
88
  return err instanceof Error ? err.message : String(err);
76
89
  }
77
90
  //#endregion
91
+ exports.SERVER_BIN_PATH = SERVER_BIN_PATH;
78
92
  exports.SERVER_NAME = SERVER_NAME;
79
93
  exports.SERVER_VERSION = SERVER_VERSION;
80
94
  exports.createServer = createServer;
package/dist/index.d.cts CHANGED
@@ -739,6 +739,18 @@ declare const SERVER_NAME = "alfe-platform";
739
739
  * they diverge (e.g. after an `npm install -g @alfe.ai/cli`).
740
740
  */
741
741
  declare const SERVER_VERSION: string;
742
+ /**
743
+ * Absolute path to this package's stdio bin. Computed from
744
+ * `import.meta.url` (always available, regardless of how the package
745
+ * is installed) and resolved to a sibling of the main dist file.
746
+ *
747
+ * Exported so the CLI's `ensureAlfePlatformRegistered` doesn't need
748
+ * to call `require.resolve('@alfe.ai/mcp-server/package.json')`, which
749
+ * trips Node's strict exports-map enforcement when `./package.json`
750
+ * isn't listed in `exports`. The package knows where its own binary
751
+ * lives; consumers shouldn't have to crawl `package.json` for it.
752
+ */
753
+ declare const SERVER_BIN_PATH: string;
742
754
  interface ServerOptions {
743
755
  /**
744
756
  * Optional override for the API client — tests inject a fake so the
@@ -773,5 +785,5 @@ declare function main(): Promise<void>;
773
785
  //# sourceMappingURL=index.d.ts.map
774
786
 
775
787
  //#endregion
776
- export { SERVER_NAME, SERVER_VERSION, ServerOptions, createServer, main };
788
+ export { SERVER_BIN_PATH, SERVER_NAME, SERVER_VERSION, ServerOptions, createServer, main };
777
789
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","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","SyncAgentInfo","SyncManifestEntry","SyncManifest","Record","SyncPresignedUrl","SyncConfirmedUpload","SyncReconstructFile","SyncReconstructBundle","SyncAgentStats","SyncFileEntry","SyncSessionEntry","SyncSessionContent","SharedFileEntry","AgentApiClient","Promise"],"sources":["../../agent-api-client/dist/index.d.ts","../src/index.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 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}\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 getGithubCredentials(): Promise<{\n login: string;\n accessToken: string;\n }>;\n getXeroCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n xeroTenantId: string;\n }>;\n refreshXeroToken(): Promise<{\n accessToken: string;\n expiresAt: string;\n }>;\n getNotionCredentials(): Promise<{\n accessToken: string;\n workspaceId: string;\n workspaceName: string;\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 getMYOBCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n myobBusinessId: string;\n clientId: string;\n }>;\n refreshMYOBToken(): Promise<{\n accessToken: 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 recordActivity(data: {\n userId?: string;\n channel: string;\n role: \"user\" | \"assistant\";\n }): Promise<{\n recorded: boolean;\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 }>;\n memoryBootstrapStatusMark(): 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 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}\n//# sourceMappingURL=index.d.ts.map\n//#endregion\nexport { AgentApiClient, AgentApiClientConfig, 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, type RegistryEntry, type ScopeInfo, type SecretAggregate, type SecretCategory, type SecretMetadata, type SecretScope, SharedFileEntry, SyncAgentInfo, SyncAgentStats, SyncConfirmedUpload, SyncFileEntry, SyncManifest, SyncManifestEntry, SyncPresignedUrl, SyncReconstructBundle, SyncReconstructFile, SyncSessionContent, SyncSessionEntry };\n//# sourceMappingURL=index.d.ts.map"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","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","SyncAgentInfo","SyncManifestEntry","SyncManifest","Record","SyncPresignedUrl","SyncConfirmedUpload","SyncReconstructFile","SyncReconstructBundle","SyncAgentStats","SyncFileEntry","SyncSessionEntry","SyncSessionContent","SharedFileEntry","AgentApiClient","Promise"],"sources":["../../agent-api-client/dist/index.d.ts","../src/index.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 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}\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 getGithubCredentials(): Promise<{\n login: string;\n accessToken: string;\n }>;\n getXeroCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n xeroTenantId: string;\n }>;\n refreshXeroToken(): Promise<{\n accessToken: string;\n expiresAt: string;\n }>;\n getNotionCredentials(): Promise<{\n accessToken: string;\n workspaceId: string;\n workspaceName: string;\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 getMYOBCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n myobBusinessId: string;\n clientId: string;\n }>;\n refreshMYOBToken(): Promise<{\n accessToken: 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 recordActivity(data: {\n userId?: string;\n channel: string;\n role: \"user\" | \"assistant\";\n }): Promise<{\n recorded: boolean;\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 }>;\n memoryBootstrapStatusMark(): 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 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}\n//# sourceMappingURL=index.d.ts.map\n//#endregion\nexport { AgentApiClient, AgentApiClientConfig, 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, type RegistryEntry, type ScopeInfo, type SecretAggregate, type SecretCategory, type SecretMetadata, type SecretScope, SharedFileEntry, SyncAgentInfo, SyncAgentStats, SyncConfirmedUpload, SyncFileEntry, SyncManifest, SyncManifestEntry, SyncPresignedUrl, SyncReconstructBundle, SyncReconstructFile, SyncSessionContent, SyncSessionEntry };\n//# sourceMappingURL=index.d.ts.map"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -739,6 +739,18 @@ declare const SERVER_NAME = "alfe-platform";
739
739
  * they diverge (e.g. after an `npm install -g @alfe.ai/cli`).
740
740
  */
741
741
  declare const SERVER_VERSION: string;
742
+ /**
743
+ * Absolute path to this package's stdio bin. Computed from
744
+ * `import.meta.url` (always available, regardless of how the package
745
+ * is installed) and resolved to a sibling of the main dist file.
746
+ *
747
+ * Exported so the CLI's `ensureAlfePlatformRegistered` doesn't need
748
+ * to call `require.resolve('@alfe.ai/mcp-server/package.json')`, which
749
+ * trips Node's strict exports-map enforcement when `./package.json`
750
+ * isn't listed in `exports`. The package knows where its own binary
751
+ * lives; consumers shouldn't have to crawl `package.json` for it.
752
+ */
753
+ declare const SERVER_BIN_PATH: string;
742
754
  interface ServerOptions {
743
755
  /**
744
756
  * Optional override for the API client — tests inject a fake so the
@@ -773,5 +785,5 @@ declare function main(): Promise<void>;
773
785
  //# sourceMappingURL=index.d.ts.map
774
786
 
775
787
  //#endregion
776
- export { SERVER_NAME, SERVER_VERSION, ServerOptions, createServer, main };
788
+ export { SERVER_BIN_PATH, SERVER_NAME, SERVER_VERSION, ServerOptions, createServer, main };
777
789
  //# sourceMappingURL=index.d.ts.map
@@ -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","SyncAgentInfo","SyncManifestEntry","SyncManifest","Record","SyncPresignedUrl","SyncConfirmedUpload","SyncReconstructFile","SyncReconstructBundle","SyncAgentStats","SyncFileEntry","SyncSessionEntry","SyncSessionContent","SharedFileEntry","AgentApiClient","Promise"],"sources":["../../agent-api-client/dist/index.d.ts","../src/index.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 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}\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 getGithubCredentials(): Promise<{\n login: string;\n accessToken: string;\n }>;\n getXeroCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n xeroTenantId: string;\n }>;\n refreshXeroToken(): Promise<{\n accessToken: string;\n expiresAt: string;\n }>;\n getNotionCredentials(): Promise<{\n accessToken: string;\n workspaceId: string;\n workspaceName: string;\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 getMYOBCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n myobBusinessId: string;\n clientId: string;\n }>;\n refreshMYOBToken(): Promise<{\n accessToken: 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 recordActivity(data: {\n userId?: string;\n channel: string;\n role: \"user\" | \"assistant\";\n }): Promise<{\n recorded: boolean;\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 }>;\n memoryBootstrapStatusMark(): 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 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}\n//# sourceMappingURL=index.d.ts.map\n//#endregion\nexport { AgentApiClient, AgentApiClientConfig, 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, type RegistryEntry, type ScopeInfo, type SecretAggregate, type SecretCategory, type SecretMetadata, type SecretScope, SharedFileEntry, SyncAgentInfo, SyncAgentStats, SyncConfirmedUpload, SyncFileEntry, SyncManifest, SyncManifestEntry, SyncPresignedUrl, SyncReconstructBundle, SyncReconstructFile, SyncSessionContent, SyncSessionEntry };\n//# sourceMappingURL=index.d.ts.map"],"mappings":"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"}
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","SyncAgentInfo","SyncManifestEntry","SyncManifest","Record","SyncPresignedUrl","SyncConfirmedUpload","SyncReconstructFile","SyncReconstructBundle","SyncAgentStats","SyncFileEntry","SyncSessionEntry","SyncSessionContent","SharedFileEntry","AgentApiClient","Promise"],"sources":["../../agent-api-client/dist/index.d.ts","../src/index.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 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}\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 getGithubCredentials(): Promise<{\n login: string;\n accessToken: string;\n }>;\n getXeroCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n xeroTenantId: string;\n }>;\n refreshXeroToken(): Promise<{\n accessToken: string;\n expiresAt: string;\n }>;\n getNotionCredentials(): Promise<{\n accessToken: string;\n workspaceId: string;\n workspaceName: string;\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 getMYOBCredentials(): Promise<{\n accessToken: string;\n accessTokenExpiresAt: string;\n myobBusinessId: string;\n clientId: string;\n }>;\n refreshMYOBToken(): Promise<{\n accessToken: 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 recordActivity(data: {\n userId?: string;\n channel: string;\n role: \"user\" | \"assistant\";\n }): Promise<{\n recorded: boolean;\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 }>;\n memoryBootstrapStatusMark(): 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 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}\n//# sourceMappingURL=index.d.ts.map\n//#endregion\nexport { AgentApiClient, AgentApiClientConfig, 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, type RegistryEntry, type ScopeInfo, type SecretAggregate, type SecretCategory, type SecretMetadata, type SecretScope, SharedFileEntry, SyncAgentInfo, SyncAgentStats, SyncConfirmedUpload, SyncFileEntry, SyncManifest, SyncManifestEntry, SyncPresignedUrl, SyncReconstructBundle, SyncReconstructFile, SyncSessionContent, SyncSessionEntry };\n//# sourceMappingURL=index.d.ts.map"],"mappings":";;;;;AAAo2B,UAI11BiC,oBAAAA,CAAoB;EAAA,MAIpBC,EAAAA,MAAAA;EAAa,MAUbC,EAAAA,MAAAA;AAAiB;UAVjBD,aAAAA,CAkBY;SAIEC,EAAAA,MAAAA;UAAfE,EAAAA,MAAAA;EAAM,WAAA,EAAA,MAAA;EAAA,QAELC,EAAAA,MAAAA;EAAgB,MAKhBC,EAAAA,OAAAA,GAAAA,SAAmB,GAAA,QAAA;EAAA,SAOnBC,CAAAA,EAAAA,MAAAA;EAAmB,SAOnBC,CAAAA,EAAAA,MAAAA;EAKkB,QAGlBC,CAAAA,EAAAA,MAAAA;AAAc;AAOD,UAhDbP,iBAAAA,CAwDgB;EAAA,IAOhBU,EAAAA,MAAAA;EAAkB,IAKlBC,EAAAA,MAAAA;EAAe,QAMXC,EAAAA,MAAAA;EAAc,IAAA,CAAA,EAAA,MAAA;cAGNd,CAAAA,EAAAA,MAAAA;YAKXC,CAAAA,EAAAA,OAAAA;;UA1EDE,YAAAA,CA4EmBA;SAARY,EAAAA,CAAAA;SAQXV,EAAAA,MAAAA;UADJU,EAAAA,MAAAA;OAQQT,EAvFLF,MAuFKE,CAAAA,MAAAA,EAvFUJ,iBAuFVI,CAAAA;;UArFJD,gBAAAA,CAwFIG;QAARO,MAAAA;OACoBN,MAAAA;WAARM,EAAAA,MAAAA;;UApFRT,mBAAAA,CAuFJS;UAIQJ,EAAAA,MAAAA;QADQI,MAAAA;QAGuBH,MAAAA;cAARG,EAAAA,UAAAA,GAAAA,YAAAA;UACDA,EAAAA,MAAAA;;UAvF1BR,mBAAAA,CA6FJQ;QAQAA,MAAAA;QAIwB5B,MAAAA;OAAR4B,MAAAA;cACiC/B,CAAAA,EAAAA,MAAAA;YAAR+B,CAAAA,EAAAA,OAAAA;;UAnGrCP,qBAAAA,CAoGyEO;SAGtEX,EAAAA,MAAAA;QACCjB,MAAAA,GAAAA,QAAAA,GAAAA,QAAAA;WAAR4B,EAAAA,MAAAA;WAC8C5B,EAAAA,MAAAA;OAAR4B,EApGnCR,mBAoGmCQ,EAAAA;WACQA,EAAAA,MAAAA;;UAlG1CN,cAAAA,CAuG0BM;SAMlB1B,EAAAA,MAAAA;eADD0B,EAAAA,MAAAA;cAaSA,EAAAA,MAAAA;WAUgBA,EAAAA,MAAAA;YAOZA,EAAAA,MAAAA,GAAAA,IAAAA;;UAnIpBL,aAAAA,CA8IcK;UAKFA,EAAAA,MAAAA;QAIIA,MAAAA;UAKGA,EAAAA,MAAAA;aAYFA,EAAAA,MAAAA;cAIHA,CAAAA,EAAAA,MAAAA;YAMFA,CAAAA,EAAAA,OAAAA;;UA1KZJ,gBAAAA,CA2LSP;WACbW,EAAAA,MAAAA;QAIiBA,MAAAA;cAWfA,EAAAA,MAAAA;cAaFA,CAAAA,EAAAA,MAAAA;YAYKhB,EAAAA,OAAAA;;UA7NDa,kBAAAA,CAiOJG;WAQKhB,EAAAA,MAAAA;SAKLgB,EAAAA,MAAAA;YAUKhB,EAAAA,OAAAA;;UAnPDc,eAAAA,CA4PKpC;UACIE,EAAAA,MAAAA;UAEFP,EAAAA,MAAAA;QAGHqB,MAAAA;aAARsB,CAAAA,EAAAA,MAAAA;;cA5PQD,cAAAA,CAmQCrB;mBACAlB,MAAAA;mBAFTwC,MAAAA;aAMKhB,CAAAA,MAAAA,EArQWC,oBAqQXD;UAMMpB,OAAAA;cACJF,CAAAA,KAAAA,EAAAA;eAEEL,CAAAA,EAAAA,MAAAA;MA1QT2C,OAqQAA,CAAAA;SAYKhB,EAhRAE,aAgRAF;;iBAKEtB,CAAAA,CAAAA,EAnRQsC,OAmRRtC,CAnRgB0B,YAmRhB1B,CAAAA;aAEEL,CAAAA,IAAAA,EAAAA;SAET2C,EAAAA;UAMKhB,EAAAA,MAAAA;eAILgB,EAAAA,KAAAA,GAAAA,KAAAA;iBAGKhB,CAAAA,EAAAA,MAAAA;OAMIJ;MAnSToB,OAqSQtB,CAAAA;QAARsB,EApSIV,gBAoSJU,EAAAA;;mBAKSpB,CAAAA,IAAAA,EAAAA;YAGDE,EAAAA,MAAAA;QAARkB,EAAAA,MAAAA;QAGKhB,EAAAA,MAAAA;gBAME7B,CAAAA,EAAAA,UAAAA,GAAAA,YAAAA;MA9SP6C,OA6SAA,CA7SQT,mBA6SRS,CAAAA;iBAMKhB,CAAAA,IAAAA,EAAAA;QAGLgB,EAAAA,MAAAA,GAAAA,QAAAA,GAAAA,QAAAA;MAnTAA,OAqTwBxB,CArThBiB,qBAqTgBjB,CAAAA;cAARwB,CAAAA,CAAAA,EApTJA,OAoTIA,CApTIN,cAoTJM,CAAAA;eAUVA,CAAAA,KAAAA,EAAAA;UASNA,CAAAA,EAAAA,MAAAA;MApUAA,OAoVAA,CAAAA;SAGoCA,EAtV/BL,aAsV+BK,EAAAA;;kBAoBpCA,CAAAA,CAAAA,EAxWgBA,OAwWhBA,CAAAA;YAYAA,EAnXQJ,gBAmXRI,EAAAA;;gBAgBAA,CAAAA,SAAAA,EAAAA,MAAAA,CAAAA,EAjY+BA,OAiY/BA,CAjYuCH,kBAiYvCG,CAAAA;gBAUAA,CAAAA,QAAAA,EAAAA,MAAAA,CAAAA,EA1Y8BA,OA0Y9BA,CAAAA;WAkBAA,EAAAA,OAAAA;;iBAkCAA,CAAAA,IAAAA,EAAAA;SAWAA,EAAAA,KAAAA,GAAAA,MAAAA,GAAAA,SAAAA;WAUAA,EAAAA,MAAAA;MA7cAA,OAqeAA,CAAAA;SAYAA,EAhfKF,eAgfLE,EAAAA;cAIkDA,EAAAA,MAAAA,GAAAA,IAAAA;;mBAepCA,CAAAA,IAAAA,EAAAA;SAQcA,EAAAA,KAAAA,GAAAA,MAAAA,GAAAA,SAAAA;WAGjBA,EAAAA,MAAAA;YAeXA,EAAAA,MAAAA;MAthBAA,OA4hBqBA,CAAAA;eAIIA,EAAAA,MAAAA;aAUzBA,EAAAA,MAAAA;;kBASAA,CAAAA,CAAAA,EA/iBgBA,OA+iBhBA,CA/iBwB5B,kBA+iBxB4B,EAAAA,CAAAA;sBAC2BA,CAAAA,aAAAA,EAAAA,MAAAA,CAAAA,EA/iBcA,OA+iBdA,CA/iBsB/B,uBA+iBtB+B,CAAAA;yBAW3BA,CAAAA,aAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAzjBmDX,MAyjBnDW,CAAAA,MAAAA,EAAAA,OAAAA,CAAAA,CAAAA,EAzjB6EA,OAyjB7EA,CAAAA,IAAAA,CAAAA;EAAO,kBAAA,CAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA;;aAtjBAX;MACPW,QAAQ5B;EC3Id,iBAAwB,CAAA,aAAA,EAAA,MAAA,CAAA,ED4IoB4B,OC5IpB,CD4I4B5B,kBC5I5B,CAAA;EASxB,WAAa,CAAA,QAA4B,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EDoIW4B,OCpIX,CAAA;IAa5B,GAAA,EAAA,MAAA;IAEI,QAAA,EAAA,MAAa;IAqBR,SAAA,EAAA,MAAY;EAAA,CAAA,CAAA;gBAAO,CAAA,QAAA,EAAA,MAAA,CAAA,EDqGLA,OCrGK,CAAA;YAA6B,EAAA,MAAA;aAAR,EAAA,OAAA;IAAO,MAAA,CAAA,EDwGxDX,MCxGwD,CAAA,MAAA,EAAA,MAAA,CAAA;EA6BrE,CAAA,CAAsB;iBD6ELW;kBACC1B;;;;;;;;;;;;0BAYQ0B;;;;;;;;;;0CAUgBA;;;;;;;8BAOZA;;;;;;;0BAOJA;;;;wBAIFA;;;;;sBAKFA;;;;0BAIIA;;;;;6BAKGA;;;;;;;;;;;;2BAYFA;;;;wBAIHA;;;;;;sBAMFA;;;;yBAIGA;;;;;;;;;;;;;mBAaNX;MACbW;;;;uBAIiBA;;;;;;;;;;;QAWfA;;;;;;;;;;;;;MAaFA;;;;;;;;;;;;WAYKhB;;;;MAILgB,QAAQjC;;;;;;;;WAQHiB;;;;;MAKLgB;;;;;;;;;;WAUKhB;;;;eAIIJ;;;;;eAKAlB;mBACIE;;iBAEFP;;;MAGX2C,QAAQtB;;;WAGHM;;;MAGLgB;eACStB;eACAlB;;;;WAIJwB;;;;MAILgB;;iBAEWpC;aACJF;;eAEEL;;;;;;;WAOJ2B;;;;iBAIMpB;aACJF;;eAEEL;;MAET2C;;;;;;WAMKhB;;;;MAILgB;;;WAGKhB;;;;;;eAMIJ;;MAEToB,QAAQtB;;;WAGHM;;eAEIJ;;;MAGToB,QAAQlB;;;WAGHE;;;;;MAKLgB;aACO7C;;;;;WAKF6B;;;MAGLgB;;sBAEgBA,QAAQxB;;;;;;;;;;YAUlBwB;;;;;;;;;MASNA;;;;;;;;;;;;;;;;MAgBAA;;;0CAGoCA;;;;;;;;;;MAUpCA;;;;;;;;;;MAUAA;;;;;;;;;;;;MAYAA;;;;;;;;;;;MAWAA;;;;;MAKAA;;;;;;;;;;MAUAA;;;;;;;;;;;;;;;;;;MAkBAA;;;;;;;;;;;;;;;;MAgBAA;;;;;;;;;;;;;;;;;;MAkBAA;;;;;;;;;;;MAWAA;;;;;;;;;;MAUAA;;;;;;;;;;;;;;;;;;;;;;;;MAwBAA;;;;;;;;;;;;MAYAA;;;;wDAIkDA;;;;uCAIjBA;;;;;;;;;;;oBAWnBA;;;;;;;;kCAQcA;;;iBAGjBA;;;;;;;;;;;;;;;MAeXA;;;;;;2BAMqBA;;;;+BAIIA;;;;;;;;;;MAUzBA;;;;MAIAA;;;;;MAKAA;iCAC2BA;;;;;;;;;;;MAW3BA;;;;;;;;AAhtB81B;AAIt0B;AAIP;AAkBbZ,cCVG,WAAA,GDUS,eAAA;;;;;AAIP;AAEW;AAKG;AAcnBK,cC1BG,cD0BkB,EAAA,MAKtBD;AAAmB;AAGJ;AAOD;AAQG;AAOE;AAKH;;;;;;AAgBJQ,cChER,eDgEQA,EAAAA,MAAAA;AAQXV,UCtEO,aAAA,CDsEPA;;;;;QAUJU,CAAAA,EC3EK,cD2ELA;;UACYA,CAAAA,EAAAA;IAIPL,OAAAA,EAAAA,MAAAA;IADLK,QAAAA,EAAAA,MAAAA;;;QAMuCH,CAAAA,EAAAA,MAAAA;;;;;;;;;;;AAqBsCG,iBC1F7D,YAAA,CD0F6DA,IAAAA,CAAAA,EC1F1C,aD0F0CA,CAAAA,EC1FrB,OD0FqBA,CC1Fb,SD0FaA,CAAAA;;;;;;;AActEX,iBC3ES,IAAA,CAAA,CD2ETA,EC3EiB,OD2EjBA,CAAAA,IAAAA,CAAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { createRequire } from "node:module";
2
+ import { fileURLToPath } from "node:url";
2
3
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
4
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
5
  import { AgentApiClient } from "@alfe.ai/agent-api-client";
@@ -21,6 +22,18 @@ const SERVER_NAME = "alfe-platform";
21
22
  */
22
23
  const SERVER_VERSION = pkg.version;
23
24
  /**
25
+ * Absolute path to this package's stdio bin. Computed from
26
+ * `import.meta.url` (always available, regardless of how the package
27
+ * is installed) and resolved to a sibling of the main dist file.
28
+ *
29
+ * Exported so the CLI's `ensureAlfePlatformRegistered` doesn't need
30
+ * to call `require.resolve('@alfe.ai/mcp-server/package.json')`, which
31
+ * trips Node's strict exports-map enforcement when `./package.json`
32
+ * isn't listed in `exports`. The package knows where its own binary
33
+ * lives; consumers shouldn't have to crawl `package.json` for it.
34
+ */
35
+ const SERVER_BIN_PATH = fileURLToPath(new URL("./bin.js", import.meta.url));
36
+ /**
24
37
  * Build a configured `McpServer` with all thin-slice tools registered.
25
38
  * Pure construction — does not connect a transport. Callers (the bin
26
39
  * entry, or tests) attach `StdioServerTransport` or any other transport.
@@ -74,6 +87,6 @@ function errMsg(err) {
74
87
  return err instanceof Error ? err.message : String(err);
75
88
  }
76
89
  //#endregion
77
- export { SERVER_NAME, SERVER_VERSION, createServer, main };
90
+ export { SERVER_BIN_PATH, SERVER_NAME, SERVER_VERSION, createServer, main };
78
91
 
79
92
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { AgentApiClient } from '@alfe.ai/agent-api-client';\nimport { resolveConfig } from '@alfe.ai/config';\nimport { registerIntegrationsTools, type ToolContext } from '@alfe.ai/mcp-tools';\n\nconst require = createRequire(import.meta.url);\nconst pkg = require('../package.json') as { version: string };\n\n/**\n * Wire shape the bundler advertises this server as — must match the\n * key the CLI registers (`alfe-platform`) so namespacing is consistent\n * across components.\n */\nexport const SERVER_NAME = 'alfe-platform';\n\n/**\n * Single source of truth for the server's own version, read straight\n * from package.json so it can't drift with bumps. The CLI's\n * version-drift hook compares this against the entry stored in\n * `~/.alfe/mcp/servers.json` and re-resolves the command path when\n * they diverge (e.g. after an `npm install -g @alfe.ai/cli`).\n */\nexport const SERVER_VERSION = pkg.version;\n\nexport interface ServerOptions {\n /**\n * Optional override for the API client — tests inject a fake so the\n * server can be exercised end-to-end without real network I/O.\n */\n client?: AgentApiClient;\n /** Pre-resolved context fields. If omitted, the server calls `whoami()` itself. */\n identity?: { agentId: string; tenantId: string };\n /** Override apiUrl reported in the ToolContext. Defaults to the resolved CLI config. */\n apiUrl?: string;\n}\n\n/**\n * Build a configured `McpServer` with all thin-slice tools registered.\n * Pure construction — does not connect a transport. Callers (the bin\n * entry, or tests) attach `StdioServerTransport` or any other transport.\n *\n * `resolveConfig()` is only called when neither `client` nor `apiUrl`\n * is provided — tests can fully construct the server without touching\n * `~/.alfe/config.toml`.\n */\nexport async function createServer(opts: ServerOptions = {}): Promise<McpServer> {\n let client = opts.client;\n let apiUrl = opts.apiUrl;\n if (!client || !apiUrl) {\n const cfg = resolveConfig();\n client = client ?? new AgentApiClient({ apiKey: cfg.apiKey, apiUrl: cfg.apiUrl });\n apiUrl = apiUrl ?? cfg.apiUrl;\n }\n\n const identity = opts.identity ?? (await client.whoami());\n\n const ctx: ToolContext = {\n client,\n apiUrl,\n agentId: identity.agentId,\n tenantId: identity.tenantId,\n };\n\n const server = new McpServer({ name: SERVER_NAME, version: SERVER_VERSION });\n registerIntegrationsTools(server, ctx);\n return server;\n}\n\n/**\n * Entry point — boot the server on stdio. Used by `bin.ts`. Any\n * startup failure is fatal: log and exit non-zero so the bundler's\n * connection attempt surfaces a clear error rather than a hung\n * handshake.\n */\nexport async function main(): Promise<void> {\n try {\n const server = await createServer();\n const transport = new StdioServerTransport();\n await server.connect(transport);\n // McpServer keeps the transport alive; node holds the event loop\n // open via stdin until the parent (the bundler) closes the stream.\n } catch (err) {\n process.stderr.write(`[alfe-mcp-server] failed to start: ${errMsg(err)}\\n`);\n process.exit(1);\n }\n}\n\nfunction errMsg(err: unknown): string {\n return err instanceof Error ? err.message : String(err);\n}\n"],"mappings":";;;;;;;AAQA,MAAM,MADU,cAAc,OAAO,KAAK,IAAI,CAC1B,kBAAkB;;;;;;AAOtC,MAAa,cAAc;;;;;;;;AAS3B,MAAa,iBAAiB,IAAI;;;;;;;;;;AAuBlC,eAAsB,aAAa,OAAsB,EAAE,EAAsB;CAC/E,IAAI,SAAS,KAAK;CAClB,IAAI,SAAS,KAAK;AAClB,KAAI,CAAC,UAAU,CAAC,QAAQ;EACtB,MAAM,MAAM,eAAe;AAC3B,WAAS,UAAU,IAAI,eAAe;GAAE,QAAQ,IAAI;GAAQ,QAAQ,IAAI;GAAQ,CAAC;AACjF,WAAS,UAAU,IAAI;;CAGzB,MAAM,WAAW,KAAK,YAAa,MAAM,OAAO,QAAQ;CAExD,MAAM,MAAmB;EACvB;EACA;EACA,SAAS,SAAS;EAClB,UAAU,SAAS;EACpB;CAED,MAAM,SAAS,IAAI,UAAU;EAAE,MAAM;EAAa,SAAS;EAAgB,CAAC;AAC5E,2BAA0B,QAAQ,IAAI;AACtC,QAAO;;;;;;;;AAST,eAAsB,OAAsB;AAC1C,KAAI;EACF,MAAM,SAAS,MAAM,cAAc;EACnC,MAAM,YAAY,IAAI,sBAAsB;AAC5C,QAAM,OAAO,QAAQ,UAAU;UAGxB,KAAK;AACZ,UAAQ,OAAO,MAAM,sCAAsC,OAAO,IAAI,CAAC,IAAI;AAC3E,UAAQ,KAAK,EAAE;;;AAInB,SAAS,OAAO,KAAsB;AACpC,QAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { fileURLToPath } from 'node:url';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { AgentApiClient } from '@alfe.ai/agent-api-client';\nimport { resolveConfig } from '@alfe.ai/config';\nimport { registerIntegrationsTools, type ToolContext } from '@alfe.ai/mcp-tools';\n\nconst require = createRequire(import.meta.url);\nconst pkg = require('../package.json') as { version: string };\n\n/**\n * Wire shape the bundler advertises this server as — must match the\n * key the CLI registers (`alfe-platform`) so namespacing is consistent\n * across components.\n */\nexport const SERVER_NAME = 'alfe-platform';\n\n/**\n * Single source of truth for the server's own version, read straight\n * from package.json so it can't drift with bumps. The CLI's\n * version-drift hook compares this against the entry stored in\n * `~/.alfe/mcp/servers.json` and re-resolves the command path when\n * they diverge (e.g. after an `npm install -g @alfe.ai/cli`).\n */\nexport const SERVER_VERSION = pkg.version;\n\n/**\n * Absolute path to this package's stdio bin. Computed from\n * `import.meta.url` (always available, regardless of how the package\n * is installed) and resolved to a sibling of the main dist file.\n *\n * Exported so the CLI's `ensureAlfePlatformRegistered` doesn't need\n * to call `require.resolve('@alfe.ai/mcp-server/package.json')`, which\n * trips Node's strict exports-map enforcement when `./package.json`\n * isn't listed in `exports`. The package knows where its own binary\n * lives; consumers shouldn't have to crawl `package.json` for it.\n */\nexport const SERVER_BIN_PATH = fileURLToPath(new URL('./bin.js', import.meta.url));\n\nexport interface ServerOptions {\n /**\n * Optional override for the API client — tests inject a fake so the\n * server can be exercised end-to-end without real network I/O.\n */\n client?: AgentApiClient;\n /** Pre-resolved context fields. If omitted, the server calls `whoami()` itself. */\n identity?: { agentId: string; tenantId: string };\n /** Override apiUrl reported in the ToolContext. Defaults to the resolved CLI config. */\n apiUrl?: string;\n}\n\n/**\n * Build a configured `McpServer` with all thin-slice tools registered.\n * Pure construction — does not connect a transport. Callers (the bin\n * entry, or tests) attach `StdioServerTransport` or any other transport.\n *\n * `resolveConfig()` is only called when neither `client` nor `apiUrl`\n * is provided — tests can fully construct the server without touching\n * `~/.alfe/config.toml`.\n */\nexport async function createServer(opts: ServerOptions = {}): Promise<McpServer> {\n let client = opts.client;\n let apiUrl = opts.apiUrl;\n if (!client || !apiUrl) {\n const cfg = resolveConfig();\n client = client ?? new AgentApiClient({ apiKey: cfg.apiKey, apiUrl: cfg.apiUrl });\n apiUrl = apiUrl ?? cfg.apiUrl;\n }\n\n const identity = opts.identity ?? (await client.whoami());\n\n const ctx: ToolContext = {\n client,\n apiUrl,\n agentId: identity.agentId,\n tenantId: identity.tenantId,\n };\n\n const server = new McpServer({ name: SERVER_NAME, version: SERVER_VERSION });\n registerIntegrationsTools(server, ctx);\n return server;\n}\n\n/**\n * Entry point — boot the server on stdio. Used by `bin.ts`. Any\n * startup failure is fatal: log and exit non-zero so the bundler's\n * connection attempt surfaces a clear error rather than a hung\n * handshake.\n */\nexport async function main(): Promise<void> {\n try {\n const server = await createServer();\n const transport = new StdioServerTransport();\n await server.connect(transport);\n // McpServer keeps the transport alive; node holds the event loop\n // open via stdin until the parent (the bundler) closes the stream.\n } catch (err) {\n process.stderr.write(`[alfe-mcp-server] failed to start: ${errMsg(err)}\\n`);\n process.exit(1);\n }\n}\n\nfunction errMsg(err: unknown): string {\n return err instanceof Error ? err.message : String(err);\n}\n"],"mappings":";;;;;;;;AASA,MAAM,MADU,cAAc,OAAO,KAAK,IAAI,CAC1B,kBAAkB;;;;;;AAOtC,MAAa,cAAc;;;;;;;;AAS3B,MAAa,iBAAiB,IAAI;;;;;;;;;;;;AAalC,MAAa,kBAAkB,cAAc,IAAI,IAAI,YAAY,OAAO,KAAK,IAAI,CAAC;;;;;;;;;;AAuBlF,eAAsB,aAAa,OAAsB,EAAE,EAAsB;CAC/E,IAAI,SAAS,KAAK;CAClB,IAAI,SAAS,KAAK;AAClB,KAAI,CAAC,UAAU,CAAC,QAAQ;EACtB,MAAM,MAAM,eAAe;AAC3B,WAAS,UAAU,IAAI,eAAe;GAAE,QAAQ,IAAI;GAAQ,QAAQ,IAAI;GAAQ,CAAC;AACjF,WAAS,UAAU,IAAI;;CAGzB,MAAM,WAAW,KAAK,YAAa,MAAM,OAAO,QAAQ;CAExD,MAAM,MAAmB;EACvB;EACA;EACA,SAAS,SAAS;EAClB,UAAU,SAAS;EACpB;CAED,MAAM,SAAS,IAAI,UAAU;EAAE,MAAM;EAAa,SAAS;EAAgB,CAAC;AAC5E,2BAA0B,QAAQ,IAAI;AACtC,QAAO;;;;;;;;AAST,eAAsB,OAAsB;AAC1C,KAAI;EACF,MAAM,SAAS,MAAM,cAAc;EACnC,MAAM,YAAY,IAAI,sBAAsB;AAC5C,QAAM,OAAO,QAAQ,UAAU;UAGxB,KAAK;AACZ,UAAQ,OAAO,MAAM,sCAAsC,OAAO,IAAI,CAAC,IAAI;AAC3E,UAAQ,KAAK,EAAE;;;AAInB,SAAS,OAAO,KAAsB;AACpC,QAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfe.ai/mcp-server",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Local stdio MCP server bundled with the Alfe CLI. Auto-registered as `alfe-platform` in the bundler store; surfaces Alfe platform tools to the agent runtime via @alfe.ai/mcp-tools using AgentApiClient against public /agent/... endpoints.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,8 +22,8 @@
22
22
  "@modelcontextprotocol/sdk": "^1.29.0",
23
23
  "zod": "^3.25.0",
24
24
  "@alfe.ai/agent-api-client": "0.1.4",
25
- "@alfe.ai/mcp-tools": "0.1.0",
26
- "@alfe.ai/config": "0.0.8"
25
+ "@alfe.ai/config": "0.0.9",
26
+ "@alfe.ai/mcp-tools": "0.1.0"
27
27
  },
28
28
  "license": "UNLICENSED",
29
29
  "scripts": {