capacitor-native-agent 0.9.14 → 0.9.15

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.
@@ -682,7 +682,12 @@ public protocol NativeAgentHandleProtocol: AnyObject, Sendable {
682
682
  func resetToolPermissions() throws
683
683
 
684
684
  /**
685
- * Respond to a tool approval request.
685
+ * Respond to a tool approval request (legacy boolean entry point).
686
+ *
687
+ * Retained as the UniFFI-facing API for mobile callers that pass a plain
688
+ * boolean. Internally delegates to `respond_to_approval_decision` (a
689
+ * Rust-only helper, not UniFFI-exported) with no `decision`/`answers`,
690
+ * preserving today's behavior.
686
691
  */
687
692
  func respondToApproval(toolCallId: String, approved: Bool, reason: String?) throws
688
693
 
@@ -732,8 +737,13 @@ public protocol NativeAgentHandleProtocol: AnyObject, Sendable {
732
737
 
733
738
  /**
734
739
  * Set an auth key for a provider.
740
+ *
741
+ * `base_url`, when set, overrides the provider's hardcoded endpoint — used
742
+ * to point the driver at a backend proxy that injects the real API key
743
+ * server-side, so the device never holds the provider secret. `None` ⇒
744
+ * the provider's default endpoint (unchanged behavior).
735
745
  */
736
- func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?) throws
746
+ func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?, baseUrl: String?) throws
737
747
 
738
748
  /**
739
749
  * Set the event callback for receiving agent events.
@@ -751,6 +761,14 @@ public protocol NativeAgentHandleProtocol: AnyObject, Sendable {
751
761
  */
752
762
  func setHeartbeatConfig(configJson: String) throws
753
763
 
764
+ /**
765
+ * Replace the FFI's MCP tool manifest. Tools registered here become
766
+ * visible to the LLM and, when called, surface as `mcp_tool_call`
767
+ * events that the host must answer with `respond_to_mcp_tool`.
768
+ * Idempotent — every call replaces the prior manifest.
769
+ */
770
+ func setMcpTools(toolsJson: String) throws -> UInt32
771
+
754
772
  func setMemoryProvider(provider: MemoryProvider) throws
755
773
 
756
774
  func setNotifier(notifier: NativeNotifier) throws
@@ -1200,7 +1218,12 @@ open func resetToolPermissions()throws {try rustCallWithError(FfiConverterType
1200
1218
  }
1201
1219
 
1202
1220
  /**
1203
- * Respond to a tool approval request.
1221
+ * Respond to a tool approval request (legacy boolean entry point).
1222
+ *
1223
+ * Retained as the UniFFI-facing API for mobile callers that pass a plain
1224
+ * boolean. Internally delegates to `respond_to_approval_decision` (a
1225
+ * Rust-only helper, not UniFFI-exported) with no `decision`/`answers`,
1226
+ * preserving today's behavior.
1204
1227
  */
1205
1228
  open func respondToApproval(toolCallId: String, approved: Bool, reason: String?)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1206
1229
  uniffi_native_agent_ffi_fn_method_nativeagenthandle_respond_to_approval(
@@ -1320,15 +1343,21 @@ open func serializeAgentEventJson(eventType: String, payloadJson: String, sessio
1320
1343
 
1321
1344
  /**
1322
1345
  * Set an auth key for a provider.
1346
+ *
1347
+ * `base_url`, when set, overrides the provider's hardcoded endpoint — used
1348
+ * to point the driver at a backend proxy that injects the real API key
1349
+ * server-side, so the device never holds the provider secret. `None` ⇒
1350
+ * the provider's default endpoint (unchanged behavior).
1323
1351
  */
1324
- open func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1352
+ open func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?, baseUrl: String?)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1325
1353
  uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_auth_key(
1326
1354
  self.uniffiCloneHandle(),
1327
1355
  FfiConverterString.lower(key),
1328
1356
  FfiConverterString.lower(provider),
1329
1357
  FfiConverterString.lower(authType),
1330
1358
  FfiConverterOptionString.lower(refresh),
1331
- FfiConverterOptionInt64.lower(expiresAt),$0
1359
+ FfiConverterOptionInt64.lower(expiresAt),
1360
+ FfiConverterOptionString.lower(baseUrl),$0
1332
1361
  )
1333
1362
  }
1334
1363
  }
@@ -1365,6 +1394,21 @@ open func setHeartbeatConfig(configJson: String)throws {try rustCallWithError(
1365
1394
  FfiConverterString.lower(configJson),$0
1366
1395
  )
1367
1396
  }
1397
+ }
1398
+
1399
+ /**
1400
+ * Replace the FFI's MCP tool manifest. Tools registered here become
1401
+ * visible to the LLM and, when called, surface as `mcp_tool_call`
1402
+ * events that the host must answer with `respond_to_mcp_tool`.
1403
+ * Idempotent — every call replaces the prior manifest.
1404
+ */
1405
+ open func setMcpTools(toolsJson: String)throws -> UInt32 {
1406
+ return try FfiConverterUInt32.lift(try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1407
+ uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_mcp_tools(
1408
+ self.uniffiCloneHandle(),
1409
+ FfiConverterString.lower(toolsJson),$0
1410
+ )
1411
+ })
1368
1412
  }
1369
1413
 
1370
1414
  open func setMemoryProvider(provider: MemoryProvider)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
@@ -1913,6 +1957,11 @@ public struct SendMessageParams: Equatable, Hashable {
1913
1957
  * JSON-encoded prior conversation messages for multi-turn sessions.
1914
1958
  */
1915
1959
  public var priorMessagesJson: String?
1960
+ /**
1961
+ * Create-only plan-mode seed (Stage 4b). Honored when starting a NEW
1962
+ * session; the persisted store value is authoritative on resume.
1963
+ */
1964
+ public var planModeInit: Bool?
1916
1965
 
1917
1966
  // Default memberwise initializers are never public by default, so we
1918
1967
  // declare one manually.
@@ -1924,7 +1973,11 @@ public struct SendMessageParams: Equatable, Hashable {
1924
1973
  */skillAllowedToolsJson: String?,
1925
1974
  /**
1926
1975
  * JSON-encoded prior conversation messages for multi-turn sessions.
1927
- */priorMessagesJson: String?) {
1976
+ */priorMessagesJson: String?,
1977
+ /**
1978
+ * Create-only plan-mode seed (Stage 4b). Honored when starting a NEW
1979
+ * session; the persisted store value is authoritative on resume.
1980
+ */planModeInit: Bool?) {
1928
1981
  self.prompt = prompt
1929
1982
  self.sessionKey = sessionKey
1930
1983
  self.model = model
@@ -1933,6 +1986,7 @@ public struct SendMessageParams: Equatable, Hashable {
1933
1986
  self.maxTurns = maxTurns
1934
1987
  self.skillAllowedToolsJson = skillAllowedToolsJson
1935
1988
  self.priorMessagesJson = priorMessagesJson
1989
+ self.planModeInit = planModeInit
1936
1990
  }
1937
1991
 
1938
1992
 
@@ -1958,7 +2012,8 @@ public struct FfiConverterTypeSendMessageParams: FfiConverterRustBuffer {
1958
2012
  systemPrompt: FfiConverterString.read(from: &buf),
1959
2013
  maxTurns: FfiConverterOptionUInt32.read(from: &buf),
1960
2014
  skillAllowedToolsJson: FfiConverterOptionString.read(from: &buf),
1961
- priorMessagesJson: FfiConverterOptionString.read(from: &buf)
2015
+ priorMessagesJson: FfiConverterOptionString.read(from: &buf),
2016
+ planModeInit: FfiConverterOptionBool.read(from: &buf)
1962
2017
  )
1963
2018
  }
1964
2019
 
@@ -1971,6 +2026,7 @@ public struct FfiConverterTypeSendMessageParams: FfiConverterRustBuffer {
1971
2026
  FfiConverterOptionUInt32.write(value.maxTurns, into: &buf)
1972
2027
  FfiConverterOptionString.write(value.skillAllowedToolsJson, into: &buf)
1973
2028
  FfiConverterOptionString.write(value.priorMessagesJson, into: &buf)
2029
+ FfiConverterOptionBool.write(value.planModeInit, into: &buf)
1974
2030
  }
1975
2031
  }
1976
2032
 
@@ -2392,6 +2448,19 @@ public protocol GovernanceProvider: AnyObject, Sendable {
2392
2448
  */
2393
2449
  func checkSink(sinkType: String, content: String) -> String
2394
2450
 
2451
+ /**
2452
+ * Register a tainted value for data-flow tracking (agent-os taint uptake).
2453
+ * `labels` is a comma-separated set drawn from
2454
+ * `Pii|Secret|ExternalNetwork|UserInput|UntrustedAgent`; a later
2455
+ * `check_sink` blocks if a registered value reaches a sink that forbids one
2456
+ * of its labels (e.g. ExternalNetwork content flowing into ShellExec).
2457
+ * (No default: `#[uniffi::export]` callback-interface methods can't be
2458
+ * defaulted — every host impl must provide it. Mobile delegates to its
2459
+ * `TaintTracker::register`; a host with no taint engine implements it as a
2460
+ * no-op.)
2461
+ */
2462
+ func registerTaint(key: String, value: String, labels: String, source: String)
2463
+
2395
2464
  /**
2396
2465
  * Reset loop guard state (e.g. on new session).
2397
2466
  */
@@ -2537,6 +2606,36 @@ fileprivate struct UniffiCallbackInterfaceGovernanceProvider {
2537
2606
  writeReturn: writeReturn
2538
2607
  )
2539
2608
  },
2609
+ registerTaint: { (
2610
+ uniffiHandle: UInt64,
2611
+ key: RustBuffer,
2612
+ value: RustBuffer,
2613
+ labels: RustBuffer,
2614
+ source: RustBuffer,
2615
+ uniffiOutReturn: UnsafeMutableRawPointer,
2616
+ uniffiCallStatus: UnsafeMutablePointer<RustCallStatus>
2617
+ ) in
2618
+ let makeCall = {
2619
+ () throws -> () in
2620
+ guard let uniffiObj = try? FfiConverterCallbackInterfaceGovernanceProvider.handleMap.get(handle: uniffiHandle) else {
2621
+ throw UniffiInternalError.unexpectedStaleHandle
2622
+ }
2623
+ return uniffiObj.registerTaint(
2624
+ key: try FfiConverterString.lift(key),
2625
+ value: try FfiConverterString.lift(value),
2626
+ labels: try FfiConverterString.lift(labels),
2627
+ source: try FfiConverterString.lift(source)
2628
+ )
2629
+ }
2630
+
2631
+
2632
+ let writeReturn = { () }
2633
+ uniffiTraitInterfaceCall(
2634
+ callStatus: uniffiCallStatus,
2635
+ makeCall: makeCall,
2636
+ writeReturn: writeReturn
2637
+ )
2638
+ },
2540
2639
  reset: { (
2541
2640
  uniffiHandle: UInt64,
2542
2641
  uniffiOutReturn: UnsafeMutableRawPointer,
@@ -3238,6 +3337,30 @@ fileprivate struct FfiConverterOptionInt64: FfiConverterRustBuffer {
3238
3337
  }
3239
3338
  }
3240
3339
 
3340
+ #if swift(>=5.8)
3341
+ @_documentation(visibility: private)
3342
+ #endif
3343
+ fileprivate struct FfiConverterOptionBool: FfiConverterRustBuffer {
3344
+ typealias SwiftType = Bool?
3345
+
3346
+ public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
3347
+ guard let value = value else {
3348
+ writeInt(&buf, Int8(0))
3349
+ return
3350
+ }
3351
+ writeInt(&buf, Int8(1))
3352
+ FfiConverterBool.write(value, into: &buf)
3353
+ }
3354
+
3355
+ public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
3356
+ switch try readInt(&buf) as Int8 {
3357
+ case 0: return nil
3358
+ case 1: return try FfiConverterBool.read(from: &buf)
3359
+ default: throw UniffiInternalError.unexpectedOptionalTag
3360
+ }
3361
+ }
3362
+ }
3363
+
3241
3364
  #if swift(>=5.8)
3242
3365
  @_documentation(visibility: private)
3243
3366
  #endif
@@ -3411,7 +3534,7 @@ private let initializationResult: InitializationResult = {
3411
3534
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_reset_tool_permissions() != 15060) {
3412
3535
  return InitializationResult.apiChecksumMismatch
3413
3536
  }
3414
- if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_respond_to_approval() != 3194) {
3537
+ if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_respond_to_approval() != 56876) {
3415
3538
  return InitializationResult.apiChecksumMismatch
3416
3539
  }
3417
3540
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_respond_to_cron_approval() != 851) {
@@ -3438,7 +3561,7 @@ private let initializationResult: InitializationResult = {
3438
3561
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_serialize_agent_event_json() != 40873) {
3439
3562
  return InitializationResult.apiChecksumMismatch
3440
3563
  }
3441
- if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_auth_key() != 1639) {
3564
+ if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_auth_key() != 12658) {
3442
3565
  return InitializationResult.apiChecksumMismatch
3443
3566
  }
3444
3567
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_event_callback() != 56165) {
@@ -3450,6 +3573,9 @@ private let initializationResult: InitializationResult = {
3450
3573
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_heartbeat_config() != 33968) {
3451
3574
  return InitializationResult.apiChecksumMismatch
3452
3575
  }
3576
+ if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_mcp_tools() != 15664) {
3577
+ return InitializationResult.apiChecksumMismatch
3578
+ }
3453
3579
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_memory_provider() != 23171) {
3454
3580
  return InitializationResult.apiChecksumMismatch
3455
3581
  }
@@ -3492,10 +3618,13 @@ private let initializationResult: InitializationResult = {
3492
3618
  if (uniffi_native_agent_ffi_checksum_method_governanceprovider_check_sink() != 37338) {
3493
3619
  return InitializationResult.apiChecksumMismatch
3494
3620
  }
3495
- if (uniffi_native_agent_ffi_checksum_method_governanceprovider_reset() != 57214) {
3621
+ if (uniffi_native_agent_ffi_checksum_method_governanceprovider_register_taint() != 17176) {
3622
+ return InitializationResult.apiChecksumMismatch
3623
+ }
3624
+ if (uniffi_native_agent_ffi_checksum_method_governanceprovider_reset() != 47675) {
3496
3625
  return InitializationResult.apiChecksumMismatch
3497
3626
  }
3498
- if (uniffi_native_agent_ffi_checksum_method_governanceprovider_record_usage() != 907) {
3627
+ if (uniffi_native_agent_ffi_checksum_method_governanceprovider_record_usage() != 32049) {
3499
3628
  return InitializationResult.apiChecksumMismatch
3500
3629
  }
3501
3630
  if (uniffi_native_agent_ffi_checksum_method_memoryprovider_store() != 49136) {
@@ -273,14 +273,21 @@ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod3)(uint64_t, RustB
273
273
  #endif
274
274
  #ifndef UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD4
275
275
  #define UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD4
276
- typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod4)(uint64_t, void* _Nonnull,
276
+ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod4)(uint64_t, RustBuffer, RustBuffer, RustBuffer, RustBuffer, void* _Nonnull,
277
277
  RustCallStatus *_Nonnull uniffiCallStatus
278
278
  );
279
279
 
280
280
  #endif
281
281
  #ifndef UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD5
282
282
  #define UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD5
283
- typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod5)(uint64_t, RustBuffer, uint32_t, uint32_t, void* _Nonnull,
283
+ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod5)(uint64_t, void* _Nonnull,
284
+ RustCallStatus *_Nonnull uniffiCallStatus
285
+ );
286
+
287
+ #endif
288
+ #ifndef UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD6
289
+ #define UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD6
290
+ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod6)(uint64_t, RustBuffer, uint32_t, uint32_t, void* _Nonnull,
284
291
  RustCallStatus *_Nonnull uniffiCallStatus
285
292
  );
286
293
 
@@ -357,8 +364,9 @@ typedef struct UniffiVTableCallbackInterfaceGovernanceProvider {
357
364
  UniffiCallbackInterfaceGovernanceProviderMethod1 _Nonnull recordOutcome;
358
365
  UniffiCallbackInterfaceGovernanceProviderMethod2 _Nonnull recordAudit;
359
366
  UniffiCallbackInterfaceGovernanceProviderMethod3 _Nonnull checkSink;
360
- UniffiCallbackInterfaceGovernanceProviderMethod4 _Nonnull reset;
361
- UniffiCallbackInterfaceGovernanceProviderMethod5 _Nonnull recordUsage;
367
+ UniffiCallbackInterfaceGovernanceProviderMethod4 _Nonnull registerTaint;
368
+ UniffiCallbackInterfaceGovernanceProviderMethod5 _Nonnull reset;
369
+ UniffiCallbackInterfaceGovernanceProviderMethod6 _Nonnull recordUsage;
362
370
  } UniffiVTableCallbackInterfaceGovernanceProvider;
363
371
 
364
372
  #endif
@@ -610,7 +618,7 @@ RustBuffer uniffi_native_agent_ffi_fn_method_nativeagenthandle_serialize_agent_e
610
618
  #endif
611
619
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_AUTH_KEY
612
620
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_AUTH_KEY
613
- void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_auth_key(uint64_t ptr, RustBuffer key, RustBuffer provider, RustBuffer auth_type, RustBuffer refresh, RustBuffer expires_at, RustCallStatus *_Nonnull out_status
621
+ void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_auth_key(uint64_t ptr, RustBuffer key, RustBuffer provider, RustBuffer auth_type, RustBuffer refresh, RustBuffer expires_at, RustBuffer base_url, RustCallStatus *_Nonnull out_status
614
622
  );
615
623
  #endif
616
624
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_EVENT_CALLBACK
@@ -628,6 +636,11 @@ void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_governance_provider
628
636
  void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_heartbeat_config(uint64_t ptr, RustBuffer config_json, RustCallStatus *_Nonnull out_status
629
637
  );
630
638
  #endif
639
+ #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
640
+ #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
641
+ uint32_t uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_mcp_tools(uint64_t ptr, RustBuffer tools_json, RustCallStatus *_Nonnull out_status
642
+ );
643
+ #endif
631
644
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MEMORY_PROVIDER
632
645
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MEMORY_PROVIDER
633
646
  void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_memory_provider(uint64_t ptr, uint64_t provider, RustCallStatus *_Nonnull out_status
@@ -1230,6 +1243,12 @@ uint16_t uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_governanc
1230
1243
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_HEARTBEAT_CONFIG
1231
1244
  uint16_t uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_heartbeat_config(void
1232
1245
 
1246
+ );
1247
+ #endif
1248
+ #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
1249
+ #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
1250
+ uint16_t uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_mcp_tools(void
1251
+
1233
1252
  );
1234
1253
  #endif
1235
1254
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_MEMORY_PROVIDER
@@ -1314,6 +1333,12 @@ uint16_t uniffi_native_agent_ffi_checksum_method_governanceprovider_record_audit
1314
1333
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_CHECK_SINK
1315
1334
  uint16_t uniffi_native_agent_ffi_checksum_method_governanceprovider_check_sink(void
1316
1335
 
1336
+ );
1337
+ #endif
1338
+ #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_REGISTER_TAINT
1339
+ #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_REGISTER_TAINT
1340
+ uint16_t uniffi_native_agent_ffi_checksum_method_governanceprovider_register_taint(void
1341
+
1317
1342
  );
1318
1343
  #endif
1319
1344
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_RESET
@@ -682,7 +682,12 @@ public protocol NativeAgentHandleProtocol: AnyObject, Sendable {
682
682
  func resetToolPermissions() throws
683
683
 
684
684
  /**
685
- * Respond to a tool approval request.
685
+ * Respond to a tool approval request (legacy boolean entry point).
686
+ *
687
+ * Retained as the UniFFI-facing API for mobile callers that pass a plain
688
+ * boolean. Internally delegates to `respond_to_approval_decision` (a
689
+ * Rust-only helper, not UniFFI-exported) with no `decision`/`answers`,
690
+ * preserving today's behavior.
686
691
  */
687
692
  func respondToApproval(toolCallId: String, approved: Bool, reason: String?) throws
688
693
 
@@ -732,8 +737,13 @@ public protocol NativeAgentHandleProtocol: AnyObject, Sendable {
732
737
 
733
738
  /**
734
739
  * Set an auth key for a provider.
740
+ *
741
+ * `base_url`, when set, overrides the provider's hardcoded endpoint — used
742
+ * to point the driver at a backend proxy that injects the real API key
743
+ * server-side, so the device never holds the provider secret. `None` ⇒
744
+ * the provider's default endpoint (unchanged behavior).
735
745
  */
736
- func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?) throws
746
+ func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?, baseUrl: String?) throws
737
747
 
738
748
  /**
739
749
  * Set the event callback for receiving agent events.
@@ -751,6 +761,14 @@ public protocol NativeAgentHandleProtocol: AnyObject, Sendable {
751
761
  */
752
762
  func setHeartbeatConfig(configJson: String) throws
753
763
 
764
+ /**
765
+ * Replace the FFI's MCP tool manifest. Tools registered here become
766
+ * visible to the LLM and, when called, surface as `mcp_tool_call`
767
+ * events that the host must answer with `respond_to_mcp_tool`.
768
+ * Idempotent — every call replaces the prior manifest.
769
+ */
770
+ func setMcpTools(toolsJson: String) throws -> UInt32
771
+
754
772
  func setMemoryProvider(provider: MemoryProvider) throws
755
773
 
756
774
  func setNotifier(notifier: NativeNotifier) throws
@@ -1200,7 +1218,12 @@ open func resetToolPermissions()throws {try rustCallWithError(FfiConverterType
1200
1218
  }
1201
1219
 
1202
1220
  /**
1203
- * Respond to a tool approval request.
1221
+ * Respond to a tool approval request (legacy boolean entry point).
1222
+ *
1223
+ * Retained as the UniFFI-facing API for mobile callers that pass a plain
1224
+ * boolean. Internally delegates to `respond_to_approval_decision` (a
1225
+ * Rust-only helper, not UniFFI-exported) with no `decision`/`answers`,
1226
+ * preserving today's behavior.
1204
1227
  */
1205
1228
  open func respondToApproval(toolCallId: String, approved: Bool, reason: String?)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1206
1229
  uniffi_native_agent_ffi_fn_method_nativeagenthandle_respond_to_approval(
@@ -1320,15 +1343,21 @@ open func serializeAgentEventJson(eventType: String, payloadJson: String, sessio
1320
1343
 
1321
1344
  /**
1322
1345
  * Set an auth key for a provider.
1346
+ *
1347
+ * `base_url`, when set, overrides the provider's hardcoded endpoint — used
1348
+ * to point the driver at a backend proxy that injects the real API key
1349
+ * server-side, so the device never holds the provider secret. `None` ⇒
1350
+ * the provider's default endpoint (unchanged behavior).
1323
1351
  */
1324
- open func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1352
+ open func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?, baseUrl: String?)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1325
1353
  uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_auth_key(
1326
1354
  self.uniffiCloneHandle(),
1327
1355
  FfiConverterString.lower(key),
1328
1356
  FfiConverterString.lower(provider),
1329
1357
  FfiConverterString.lower(authType),
1330
1358
  FfiConverterOptionString.lower(refresh),
1331
- FfiConverterOptionInt64.lower(expiresAt),$0
1359
+ FfiConverterOptionInt64.lower(expiresAt),
1360
+ FfiConverterOptionString.lower(baseUrl),$0
1332
1361
  )
1333
1362
  }
1334
1363
  }
@@ -1365,6 +1394,21 @@ open func setHeartbeatConfig(configJson: String)throws {try rustCallWithError(
1365
1394
  FfiConverterString.lower(configJson),$0
1366
1395
  )
1367
1396
  }
1397
+ }
1398
+
1399
+ /**
1400
+ * Replace the FFI's MCP tool manifest. Tools registered here become
1401
+ * visible to the LLM and, when called, surface as `mcp_tool_call`
1402
+ * events that the host must answer with `respond_to_mcp_tool`.
1403
+ * Idempotent — every call replaces the prior manifest.
1404
+ */
1405
+ open func setMcpTools(toolsJson: String)throws -> UInt32 {
1406
+ return try FfiConverterUInt32.lift(try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1407
+ uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_mcp_tools(
1408
+ self.uniffiCloneHandle(),
1409
+ FfiConverterString.lower(toolsJson),$0
1410
+ )
1411
+ })
1368
1412
  }
1369
1413
 
1370
1414
  open func setMemoryProvider(provider: MemoryProvider)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
@@ -1913,6 +1957,11 @@ public struct SendMessageParams: Equatable, Hashable {
1913
1957
  * JSON-encoded prior conversation messages for multi-turn sessions.
1914
1958
  */
1915
1959
  public var priorMessagesJson: String?
1960
+ /**
1961
+ * Create-only plan-mode seed (Stage 4b). Honored when starting a NEW
1962
+ * session; the persisted store value is authoritative on resume.
1963
+ */
1964
+ public var planModeInit: Bool?
1916
1965
 
1917
1966
  // Default memberwise initializers are never public by default, so we
1918
1967
  // declare one manually.
@@ -1924,7 +1973,11 @@ public struct SendMessageParams: Equatable, Hashable {
1924
1973
  */skillAllowedToolsJson: String?,
1925
1974
  /**
1926
1975
  * JSON-encoded prior conversation messages for multi-turn sessions.
1927
- */priorMessagesJson: String?) {
1976
+ */priorMessagesJson: String?,
1977
+ /**
1978
+ * Create-only plan-mode seed (Stage 4b). Honored when starting a NEW
1979
+ * session; the persisted store value is authoritative on resume.
1980
+ */planModeInit: Bool?) {
1928
1981
  self.prompt = prompt
1929
1982
  self.sessionKey = sessionKey
1930
1983
  self.model = model
@@ -1933,6 +1986,7 @@ public struct SendMessageParams: Equatable, Hashable {
1933
1986
  self.maxTurns = maxTurns
1934
1987
  self.skillAllowedToolsJson = skillAllowedToolsJson
1935
1988
  self.priorMessagesJson = priorMessagesJson
1989
+ self.planModeInit = planModeInit
1936
1990
  }
1937
1991
 
1938
1992
 
@@ -1958,7 +2012,8 @@ public struct FfiConverterTypeSendMessageParams: FfiConverterRustBuffer {
1958
2012
  systemPrompt: FfiConverterString.read(from: &buf),
1959
2013
  maxTurns: FfiConverterOptionUInt32.read(from: &buf),
1960
2014
  skillAllowedToolsJson: FfiConverterOptionString.read(from: &buf),
1961
- priorMessagesJson: FfiConverterOptionString.read(from: &buf)
2015
+ priorMessagesJson: FfiConverterOptionString.read(from: &buf),
2016
+ planModeInit: FfiConverterOptionBool.read(from: &buf)
1962
2017
  )
1963
2018
  }
1964
2019
 
@@ -1971,6 +2026,7 @@ public struct FfiConverterTypeSendMessageParams: FfiConverterRustBuffer {
1971
2026
  FfiConverterOptionUInt32.write(value.maxTurns, into: &buf)
1972
2027
  FfiConverterOptionString.write(value.skillAllowedToolsJson, into: &buf)
1973
2028
  FfiConverterOptionString.write(value.priorMessagesJson, into: &buf)
2029
+ FfiConverterOptionBool.write(value.planModeInit, into: &buf)
1974
2030
  }
1975
2031
  }
1976
2032
 
@@ -2392,6 +2448,19 @@ public protocol GovernanceProvider: AnyObject, Sendable {
2392
2448
  */
2393
2449
  func checkSink(sinkType: String, content: String) -> String
2394
2450
 
2451
+ /**
2452
+ * Register a tainted value for data-flow tracking (agent-os taint uptake).
2453
+ * `labels` is a comma-separated set drawn from
2454
+ * `Pii|Secret|ExternalNetwork|UserInput|UntrustedAgent`; a later
2455
+ * `check_sink` blocks if a registered value reaches a sink that forbids one
2456
+ * of its labels (e.g. ExternalNetwork content flowing into ShellExec).
2457
+ * (No default: `#[uniffi::export]` callback-interface methods can't be
2458
+ * defaulted — every host impl must provide it. Mobile delegates to its
2459
+ * `TaintTracker::register`; a host with no taint engine implements it as a
2460
+ * no-op.)
2461
+ */
2462
+ func registerTaint(key: String, value: String, labels: String, source: String)
2463
+
2395
2464
  /**
2396
2465
  * Reset loop guard state (e.g. on new session).
2397
2466
  */
@@ -2537,6 +2606,36 @@ fileprivate struct UniffiCallbackInterfaceGovernanceProvider {
2537
2606
  writeReturn: writeReturn
2538
2607
  )
2539
2608
  },
2609
+ registerTaint: { (
2610
+ uniffiHandle: UInt64,
2611
+ key: RustBuffer,
2612
+ value: RustBuffer,
2613
+ labels: RustBuffer,
2614
+ source: RustBuffer,
2615
+ uniffiOutReturn: UnsafeMutableRawPointer,
2616
+ uniffiCallStatus: UnsafeMutablePointer<RustCallStatus>
2617
+ ) in
2618
+ let makeCall = {
2619
+ () throws -> () in
2620
+ guard let uniffiObj = try? FfiConverterCallbackInterfaceGovernanceProvider.handleMap.get(handle: uniffiHandle) else {
2621
+ throw UniffiInternalError.unexpectedStaleHandle
2622
+ }
2623
+ return uniffiObj.registerTaint(
2624
+ key: try FfiConverterString.lift(key),
2625
+ value: try FfiConverterString.lift(value),
2626
+ labels: try FfiConverterString.lift(labels),
2627
+ source: try FfiConverterString.lift(source)
2628
+ )
2629
+ }
2630
+
2631
+
2632
+ let writeReturn = { () }
2633
+ uniffiTraitInterfaceCall(
2634
+ callStatus: uniffiCallStatus,
2635
+ makeCall: makeCall,
2636
+ writeReturn: writeReturn
2637
+ )
2638
+ },
2540
2639
  reset: { (
2541
2640
  uniffiHandle: UInt64,
2542
2641
  uniffiOutReturn: UnsafeMutableRawPointer,
@@ -3238,6 +3337,30 @@ fileprivate struct FfiConverterOptionInt64: FfiConverterRustBuffer {
3238
3337
  }
3239
3338
  }
3240
3339
 
3340
+ #if swift(>=5.8)
3341
+ @_documentation(visibility: private)
3342
+ #endif
3343
+ fileprivate struct FfiConverterOptionBool: FfiConverterRustBuffer {
3344
+ typealias SwiftType = Bool?
3345
+
3346
+ public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
3347
+ guard let value = value else {
3348
+ writeInt(&buf, Int8(0))
3349
+ return
3350
+ }
3351
+ writeInt(&buf, Int8(1))
3352
+ FfiConverterBool.write(value, into: &buf)
3353
+ }
3354
+
3355
+ public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
3356
+ switch try readInt(&buf) as Int8 {
3357
+ case 0: return nil
3358
+ case 1: return try FfiConverterBool.read(from: &buf)
3359
+ default: throw UniffiInternalError.unexpectedOptionalTag
3360
+ }
3361
+ }
3362
+ }
3363
+
3241
3364
  #if swift(>=5.8)
3242
3365
  @_documentation(visibility: private)
3243
3366
  #endif
@@ -3411,7 +3534,7 @@ private let initializationResult: InitializationResult = {
3411
3534
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_reset_tool_permissions() != 15060) {
3412
3535
  return InitializationResult.apiChecksumMismatch
3413
3536
  }
3414
- if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_respond_to_approval() != 3194) {
3537
+ if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_respond_to_approval() != 56876) {
3415
3538
  return InitializationResult.apiChecksumMismatch
3416
3539
  }
3417
3540
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_respond_to_cron_approval() != 851) {
@@ -3438,7 +3561,7 @@ private let initializationResult: InitializationResult = {
3438
3561
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_serialize_agent_event_json() != 40873) {
3439
3562
  return InitializationResult.apiChecksumMismatch
3440
3563
  }
3441
- if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_auth_key() != 1639) {
3564
+ if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_auth_key() != 12658) {
3442
3565
  return InitializationResult.apiChecksumMismatch
3443
3566
  }
3444
3567
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_event_callback() != 56165) {
@@ -3450,6 +3573,9 @@ private let initializationResult: InitializationResult = {
3450
3573
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_heartbeat_config() != 33968) {
3451
3574
  return InitializationResult.apiChecksumMismatch
3452
3575
  }
3576
+ if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_mcp_tools() != 15664) {
3577
+ return InitializationResult.apiChecksumMismatch
3578
+ }
3453
3579
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_memory_provider() != 23171) {
3454
3580
  return InitializationResult.apiChecksumMismatch
3455
3581
  }
@@ -3492,10 +3618,13 @@ private let initializationResult: InitializationResult = {
3492
3618
  if (uniffi_native_agent_ffi_checksum_method_governanceprovider_check_sink() != 37338) {
3493
3619
  return InitializationResult.apiChecksumMismatch
3494
3620
  }
3495
- if (uniffi_native_agent_ffi_checksum_method_governanceprovider_reset() != 57214) {
3621
+ if (uniffi_native_agent_ffi_checksum_method_governanceprovider_register_taint() != 17176) {
3622
+ return InitializationResult.apiChecksumMismatch
3623
+ }
3624
+ if (uniffi_native_agent_ffi_checksum_method_governanceprovider_reset() != 47675) {
3496
3625
  return InitializationResult.apiChecksumMismatch
3497
3626
  }
3498
- if (uniffi_native_agent_ffi_checksum_method_governanceprovider_record_usage() != 907) {
3627
+ if (uniffi_native_agent_ffi_checksum_method_governanceprovider_record_usage() != 32049) {
3499
3628
  return InitializationResult.apiChecksumMismatch
3500
3629
  }
3501
3630
  if (uniffi_native_agent_ffi_checksum_method_memoryprovider_store() != 49136) {
@@ -273,14 +273,21 @@ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod3)(uint64_t, RustB
273
273
  #endif
274
274
  #ifndef UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD4
275
275
  #define UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD4
276
- typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod4)(uint64_t, void* _Nonnull,
276
+ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod4)(uint64_t, RustBuffer, RustBuffer, RustBuffer, RustBuffer, void* _Nonnull,
277
277
  RustCallStatus *_Nonnull uniffiCallStatus
278
278
  );
279
279
 
280
280
  #endif
281
281
  #ifndef UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD5
282
282
  #define UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD5
283
- typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod5)(uint64_t, RustBuffer, uint32_t, uint32_t, void* _Nonnull,
283
+ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod5)(uint64_t, void* _Nonnull,
284
+ RustCallStatus *_Nonnull uniffiCallStatus
285
+ );
286
+
287
+ #endif
288
+ #ifndef UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD6
289
+ #define UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD6
290
+ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod6)(uint64_t, RustBuffer, uint32_t, uint32_t, void* _Nonnull,
284
291
  RustCallStatus *_Nonnull uniffiCallStatus
285
292
  );
286
293
 
@@ -357,8 +364,9 @@ typedef struct UniffiVTableCallbackInterfaceGovernanceProvider {
357
364
  UniffiCallbackInterfaceGovernanceProviderMethod1 _Nonnull recordOutcome;
358
365
  UniffiCallbackInterfaceGovernanceProviderMethod2 _Nonnull recordAudit;
359
366
  UniffiCallbackInterfaceGovernanceProviderMethod3 _Nonnull checkSink;
360
- UniffiCallbackInterfaceGovernanceProviderMethod4 _Nonnull reset;
361
- UniffiCallbackInterfaceGovernanceProviderMethod5 _Nonnull recordUsage;
367
+ UniffiCallbackInterfaceGovernanceProviderMethod4 _Nonnull registerTaint;
368
+ UniffiCallbackInterfaceGovernanceProviderMethod5 _Nonnull reset;
369
+ UniffiCallbackInterfaceGovernanceProviderMethod6 _Nonnull recordUsage;
362
370
  } UniffiVTableCallbackInterfaceGovernanceProvider;
363
371
 
364
372
  #endif
@@ -610,7 +618,7 @@ RustBuffer uniffi_native_agent_ffi_fn_method_nativeagenthandle_serialize_agent_e
610
618
  #endif
611
619
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_AUTH_KEY
612
620
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_AUTH_KEY
613
- void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_auth_key(uint64_t ptr, RustBuffer key, RustBuffer provider, RustBuffer auth_type, RustBuffer refresh, RustBuffer expires_at, RustCallStatus *_Nonnull out_status
621
+ void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_auth_key(uint64_t ptr, RustBuffer key, RustBuffer provider, RustBuffer auth_type, RustBuffer refresh, RustBuffer expires_at, RustBuffer base_url, RustCallStatus *_Nonnull out_status
614
622
  );
615
623
  #endif
616
624
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_EVENT_CALLBACK
@@ -628,6 +636,11 @@ void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_governance_provider
628
636
  void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_heartbeat_config(uint64_t ptr, RustBuffer config_json, RustCallStatus *_Nonnull out_status
629
637
  );
630
638
  #endif
639
+ #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
640
+ #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
641
+ uint32_t uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_mcp_tools(uint64_t ptr, RustBuffer tools_json, RustCallStatus *_Nonnull out_status
642
+ );
643
+ #endif
631
644
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MEMORY_PROVIDER
632
645
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MEMORY_PROVIDER
633
646
  void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_memory_provider(uint64_t ptr, uint64_t provider, RustCallStatus *_Nonnull out_status
@@ -1230,6 +1243,12 @@ uint16_t uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_governanc
1230
1243
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_HEARTBEAT_CONFIG
1231
1244
  uint16_t uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_heartbeat_config(void
1232
1245
 
1246
+ );
1247
+ #endif
1248
+ #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
1249
+ #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
1250
+ uint16_t uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_mcp_tools(void
1251
+
1233
1252
  );
1234
1253
  #endif
1235
1254
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_MEMORY_PROVIDER
@@ -1314,6 +1333,12 @@ uint16_t uniffi_native_agent_ffi_checksum_method_governanceprovider_record_audit
1314
1333
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_CHECK_SINK
1315
1334
  uint16_t uniffi_native_agent_ffi_checksum_method_governanceprovider_check_sink(void
1316
1335
 
1336
+ );
1337
+ #endif
1338
+ #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_REGISTER_TAINT
1339
+ #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_REGISTER_TAINT
1340
+ uint16_t uniffi_native_agent_ffi_checksum_method_governanceprovider_register_taint(void
1341
+
1317
1342
  );
1318
1343
  #endif
1319
1344
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_RESET
@@ -682,7 +682,12 @@ public protocol NativeAgentHandleProtocol: AnyObject, Sendable {
682
682
  func resetToolPermissions() throws
683
683
 
684
684
  /**
685
- * Respond to a tool approval request.
685
+ * Respond to a tool approval request (legacy boolean entry point).
686
+ *
687
+ * Retained as the UniFFI-facing API for mobile callers that pass a plain
688
+ * boolean. Internally delegates to `respond_to_approval_decision` (a
689
+ * Rust-only helper, not UniFFI-exported) with no `decision`/`answers`,
690
+ * preserving today's behavior.
686
691
  */
687
692
  func respondToApproval(toolCallId: String, approved: Bool, reason: String?) throws
688
693
 
@@ -732,8 +737,13 @@ public protocol NativeAgentHandleProtocol: AnyObject, Sendable {
732
737
 
733
738
  /**
734
739
  * Set an auth key for a provider.
740
+ *
741
+ * `base_url`, when set, overrides the provider's hardcoded endpoint — used
742
+ * to point the driver at a backend proxy that injects the real API key
743
+ * server-side, so the device never holds the provider secret. `None` ⇒
744
+ * the provider's default endpoint (unchanged behavior).
735
745
  */
736
- func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?) throws
746
+ func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?, baseUrl: String?) throws
737
747
 
738
748
  /**
739
749
  * Set the event callback for receiving agent events.
@@ -751,6 +761,14 @@ public protocol NativeAgentHandleProtocol: AnyObject, Sendable {
751
761
  */
752
762
  func setHeartbeatConfig(configJson: String) throws
753
763
 
764
+ /**
765
+ * Replace the FFI's MCP tool manifest. Tools registered here become
766
+ * visible to the LLM and, when called, surface as `mcp_tool_call`
767
+ * events that the host must answer with `respond_to_mcp_tool`.
768
+ * Idempotent — every call replaces the prior manifest.
769
+ */
770
+ func setMcpTools(toolsJson: String) throws -> UInt32
771
+
754
772
  func setMemoryProvider(provider: MemoryProvider) throws
755
773
 
756
774
  func setNotifier(notifier: NativeNotifier) throws
@@ -1200,7 +1218,12 @@ open func resetToolPermissions()throws {try rustCallWithError(FfiConverterType
1200
1218
  }
1201
1219
 
1202
1220
  /**
1203
- * Respond to a tool approval request.
1221
+ * Respond to a tool approval request (legacy boolean entry point).
1222
+ *
1223
+ * Retained as the UniFFI-facing API for mobile callers that pass a plain
1224
+ * boolean. Internally delegates to `respond_to_approval_decision` (a
1225
+ * Rust-only helper, not UniFFI-exported) with no `decision`/`answers`,
1226
+ * preserving today's behavior.
1204
1227
  */
1205
1228
  open func respondToApproval(toolCallId: String, approved: Bool, reason: String?)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1206
1229
  uniffi_native_agent_ffi_fn_method_nativeagenthandle_respond_to_approval(
@@ -1320,15 +1343,21 @@ open func serializeAgentEventJson(eventType: String, payloadJson: String, sessio
1320
1343
 
1321
1344
  /**
1322
1345
  * Set an auth key for a provider.
1346
+ *
1347
+ * `base_url`, when set, overrides the provider's hardcoded endpoint — used
1348
+ * to point the driver at a backend proxy that injects the real API key
1349
+ * server-side, so the device never holds the provider secret. `None` ⇒
1350
+ * the provider's default endpoint (unchanged behavior).
1323
1351
  */
1324
- open func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1352
+ open func setAuthKey(key: String, provider: String, authType: String, refresh: String?, expiresAt: Int64?, baseUrl: String?)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1325
1353
  uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_auth_key(
1326
1354
  self.uniffiCloneHandle(),
1327
1355
  FfiConverterString.lower(key),
1328
1356
  FfiConverterString.lower(provider),
1329
1357
  FfiConverterString.lower(authType),
1330
1358
  FfiConverterOptionString.lower(refresh),
1331
- FfiConverterOptionInt64.lower(expiresAt),$0
1359
+ FfiConverterOptionInt64.lower(expiresAt),
1360
+ FfiConverterOptionString.lower(baseUrl),$0
1332
1361
  )
1333
1362
  }
1334
1363
  }
@@ -1365,6 +1394,21 @@ open func setHeartbeatConfig(configJson: String)throws {try rustCallWithError(
1365
1394
  FfiConverterString.lower(configJson),$0
1366
1395
  )
1367
1396
  }
1397
+ }
1398
+
1399
+ /**
1400
+ * Replace the FFI's MCP tool manifest. Tools registered here become
1401
+ * visible to the LLM and, when called, surface as `mcp_tool_call`
1402
+ * events that the host must answer with `respond_to_mcp_tool`.
1403
+ * Idempotent — every call replaces the prior manifest.
1404
+ */
1405
+ open func setMcpTools(toolsJson: String)throws -> UInt32 {
1406
+ return try FfiConverterUInt32.lift(try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
1407
+ uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_mcp_tools(
1408
+ self.uniffiCloneHandle(),
1409
+ FfiConverterString.lower(toolsJson),$0
1410
+ )
1411
+ })
1368
1412
  }
1369
1413
 
1370
1414
  open func setMemoryProvider(provider: MemoryProvider)throws {try rustCallWithError(FfiConverterTypeNativeAgentError_lift) {
@@ -1913,6 +1957,11 @@ public struct SendMessageParams: Equatable, Hashable {
1913
1957
  * JSON-encoded prior conversation messages for multi-turn sessions.
1914
1958
  */
1915
1959
  public var priorMessagesJson: String?
1960
+ /**
1961
+ * Create-only plan-mode seed (Stage 4b). Honored when starting a NEW
1962
+ * session; the persisted store value is authoritative on resume.
1963
+ */
1964
+ public var planModeInit: Bool?
1916
1965
 
1917
1966
  // Default memberwise initializers are never public by default, so we
1918
1967
  // declare one manually.
@@ -1924,7 +1973,11 @@ public struct SendMessageParams: Equatable, Hashable {
1924
1973
  */skillAllowedToolsJson: String?,
1925
1974
  /**
1926
1975
  * JSON-encoded prior conversation messages for multi-turn sessions.
1927
- */priorMessagesJson: String?) {
1976
+ */priorMessagesJson: String?,
1977
+ /**
1978
+ * Create-only plan-mode seed (Stage 4b). Honored when starting a NEW
1979
+ * session; the persisted store value is authoritative on resume.
1980
+ */planModeInit: Bool?) {
1928
1981
  self.prompt = prompt
1929
1982
  self.sessionKey = sessionKey
1930
1983
  self.model = model
@@ -1933,6 +1986,7 @@ public struct SendMessageParams: Equatable, Hashable {
1933
1986
  self.maxTurns = maxTurns
1934
1987
  self.skillAllowedToolsJson = skillAllowedToolsJson
1935
1988
  self.priorMessagesJson = priorMessagesJson
1989
+ self.planModeInit = planModeInit
1936
1990
  }
1937
1991
 
1938
1992
 
@@ -1958,7 +2012,8 @@ public struct FfiConverterTypeSendMessageParams: FfiConverterRustBuffer {
1958
2012
  systemPrompt: FfiConverterString.read(from: &buf),
1959
2013
  maxTurns: FfiConverterOptionUInt32.read(from: &buf),
1960
2014
  skillAllowedToolsJson: FfiConverterOptionString.read(from: &buf),
1961
- priorMessagesJson: FfiConverterOptionString.read(from: &buf)
2015
+ priorMessagesJson: FfiConverterOptionString.read(from: &buf),
2016
+ planModeInit: FfiConverterOptionBool.read(from: &buf)
1962
2017
  )
1963
2018
  }
1964
2019
 
@@ -1971,6 +2026,7 @@ public struct FfiConverterTypeSendMessageParams: FfiConverterRustBuffer {
1971
2026
  FfiConverterOptionUInt32.write(value.maxTurns, into: &buf)
1972
2027
  FfiConverterOptionString.write(value.skillAllowedToolsJson, into: &buf)
1973
2028
  FfiConverterOptionString.write(value.priorMessagesJson, into: &buf)
2029
+ FfiConverterOptionBool.write(value.planModeInit, into: &buf)
1974
2030
  }
1975
2031
  }
1976
2032
 
@@ -2392,6 +2448,19 @@ public protocol GovernanceProvider: AnyObject, Sendable {
2392
2448
  */
2393
2449
  func checkSink(sinkType: String, content: String) -> String
2394
2450
 
2451
+ /**
2452
+ * Register a tainted value for data-flow tracking (agent-os taint uptake).
2453
+ * `labels` is a comma-separated set drawn from
2454
+ * `Pii|Secret|ExternalNetwork|UserInput|UntrustedAgent`; a later
2455
+ * `check_sink` blocks if a registered value reaches a sink that forbids one
2456
+ * of its labels (e.g. ExternalNetwork content flowing into ShellExec).
2457
+ * (No default: `#[uniffi::export]` callback-interface methods can't be
2458
+ * defaulted — every host impl must provide it. Mobile delegates to its
2459
+ * `TaintTracker::register`; a host with no taint engine implements it as a
2460
+ * no-op.)
2461
+ */
2462
+ func registerTaint(key: String, value: String, labels: String, source: String)
2463
+
2395
2464
  /**
2396
2465
  * Reset loop guard state (e.g. on new session).
2397
2466
  */
@@ -2537,6 +2606,36 @@ fileprivate struct UniffiCallbackInterfaceGovernanceProvider {
2537
2606
  writeReturn: writeReturn
2538
2607
  )
2539
2608
  },
2609
+ registerTaint: { (
2610
+ uniffiHandle: UInt64,
2611
+ key: RustBuffer,
2612
+ value: RustBuffer,
2613
+ labels: RustBuffer,
2614
+ source: RustBuffer,
2615
+ uniffiOutReturn: UnsafeMutableRawPointer,
2616
+ uniffiCallStatus: UnsafeMutablePointer<RustCallStatus>
2617
+ ) in
2618
+ let makeCall = {
2619
+ () throws -> () in
2620
+ guard let uniffiObj = try? FfiConverterCallbackInterfaceGovernanceProvider.handleMap.get(handle: uniffiHandle) else {
2621
+ throw UniffiInternalError.unexpectedStaleHandle
2622
+ }
2623
+ return uniffiObj.registerTaint(
2624
+ key: try FfiConverterString.lift(key),
2625
+ value: try FfiConverterString.lift(value),
2626
+ labels: try FfiConverterString.lift(labels),
2627
+ source: try FfiConverterString.lift(source)
2628
+ )
2629
+ }
2630
+
2631
+
2632
+ let writeReturn = { () }
2633
+ uniffiTraitInterfaceCall(
2634
+ callStatus: uniffiCallStatus,
2635
+ makeCall: makeCall,
2636
+ writeReturn: writeReturn
2637
+ )
2638
+ },
2540
2639
  reset: { (
2541
2640
  uniffiHandle: UInt64,
2542
2641
  uniffiOutReturn: UnsafeMutableRawPointer,
@@ -3238,6 +3337,30 @@ fileprivate struct FfiConverterOptionInt64: FfiConverterRustBuffer {
3238
3337
  }
3239
3338
  }
3240
3339
 
3340
+ #if swift(>=5.8)
3341
+ @_documentation(visibility: private)
3342
+ #endif
3343
+ fileprivate struct FfiConverterOptionBool: FfiConverterRustBuffer {
3344
+ typealias SwiftType = Bool?
3345
+
3346
+ public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
3347
+ guard let value = value else {
3348
+ writeInt(&buf, Int8(0))
3349
+ return
3350
+ }
3351
+ writeInt(&buf, Int8(1))
3352
+ FfiConverterBool.write(value, into: &buf)
3353
+ }
3354
+
3355
+ public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
3356
+ switch try readInt(&buf) as Int8 {
3357
+ case 0: return nil
3358
+ case 1: return try FfiConverterBool.read(from: &buf)
3359
+ default: throw UniffiInternalError.unexpectedOptionalTag
3360
+ }
3361
+ }
3362
+ }
3363
+
3241
3364
  #if swift(>=5.8)
3242
3365
  @_documentation(visibility: private)
3243
3366
  #endif
@@ -3411,7 +3534,7 @@ private let initializationResult: InitializationResult = {
3411
3534
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_reset_tool_permissions() != 15060) {
3412
3535
  return InitializationResult.apiChecksumMismatch
3413
3536
  }
3414
- if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_respond_to_approval() != 3194) {
3537
+ if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_respond_to_approval() != 56876) {
3415
3538
  return InitializationResult.apiChecksumMismatch
3416
3539
  }
3417
3540
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_respond_to_cron_approval() != 851) {
@@ -3438,7 +3561,7 @@ private let initializationResult: InitializationResult = {
3438
3561
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_serialize_agent_event_json() != 40873) {
3439
3562
  return InitializationResult.apiChecksumMismatch
3440
3563
  }
3441
- if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_auth_key() != 1639) {
3564
+ if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_auth_key() != 12658) {
3442
3565
  return InitializationResult.apiChecksumMismatch
3443
3566
  }
3444
3567
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_event_callback() != 56165) {
@@ -3450,6 +3573,9 @@ private let initializationResult: InitializationResult = {
3450
3573
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_heartbeat_config() != 33968) {
3451
3574
  return InitializationResult.apiChecksumMismatch
3452
3575
  }
3576
+ if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_mcp_tools() != 15664) {
3577
+ return InitializationResult.apiChecksumMismatch
3578
+ }
3453
3579
  if (uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_memory_provider() != 23171) {
3454
3580
  return InitializationResult.apiChecksumMismatch
3455
3581
  }
@@ -3492,10 +3618,13 @@ private let initializationResult: InitializationResult = {
3492
3618
  if (uniffi_native_agent_ffi_checksum_method_governanceprovider_check_sink() != 37338) {
3493
3619
  return InitializationResult.apiChecksumMismatch
3494
3620
  }
3495
- if (uniffi_native_agent_ffi_checksum_method_governanceprovider_reset() != 57214) {
3621
+ if (uniffi_native_agent_ffi_checksum_method_governanceprovider_register_taint() != 17176) {
3622
+ return InitializationResult.apiChecksumMismatch
3623
+ }
3624
+ if (uniffi_native_agent_ffi_checksum_method_governanceprovider_reset() != 47675) {
3496
3625
  return InitializationResult.apiChecksumMismatch
3497
3626
  }
3498
- if (uniffi_native_agent_ffi_checksum_method_governanceprovider_record_usage() != 907) {
3627
+ if (uniffi_native_agent_ffi_checksum_method_governanceprovider_record_usage() != 32049) {
3499
3628
  return InitializationResult.apiChecksumMismatch
3500
3629
  }
3501
3630
  if (uniffi_native_agent_ffi_checksum_method_memoryprovider_store() != 49136) {
@@ -273,14 +273,21 @@ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod3)(uint64_t, RustB
273
273
  #endif
274
274
  #ifndef UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD4
275
275
  #define UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD4
276
- typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod4)(uint64_t, void* _Nonnull,
276
+ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod4)(uint64_t, RustBuffer, RustBuffer, RustBuffer, RustBuffer, void* _Nonnull,
277
277
  RustCallStatus *_Nonnull uniffiCallStatus
278
278
  );
279
279
 
280
280
  #endif
281
281
  #ifndef UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD5
282
282
  #define UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD5
283
- typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod5)(uint64_t, RustBuffer, uint32_t, uint32_t, void* _Nonnull,
283
+ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod5)(uint64_t, void* _Nonnull,
284
+ RustCallStatus *_Nonnull uniffiCallStatus
285
+ );
286
+
287
+ #endif
288
+ #ifndef UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD6
289
+ #define UNIFFI_FFIDEF_CALLBACK_INTERFACE_GOVERNANCE_PROVIDER_METHOD6
290
+ typedef void (*UniffiCallbackInterfaceGovernanceProviderMethod6)(uint64_t, RustBuffer, uint32_t, uint32_t, void* _Nonnull,
284
291
  RustCallStatus *_Nonnull uniffiCallStatus
285
292
  );
286
293
 
@@ -357,8 +364,9 @@ typedef struct UniffiVTableCallbackInterfaceGovernanceProvider {
357
364
  UniffiCallbackInterfaceGovernanceProviderMethod1 _Nonnull recordOutcome;
358
365
  UniffiCallbackInterfaceGovernanceProviderMethod2 _Nonnull recordAudit;
359
366
  UniffiCallbackInterfaceGovernanceProviderMethod3 _Nonnull checkSink;
360
- UniffiCallbackInterfaceGovernanceProviderMethod4 _Nonnull reset;
361
- UniffiCallbackInterfaceGovernanceProviderMethod5 _Nonnull recordUsage;
367
+ UniffiCallbackInterfaceGovernanceProviderMethod4 _Nonnull registerTaint;
368
+ UniffiCallbackInterfaceGovernanceProviderMethod5 _Nonnull reset;
369
+ UniffiCallbackInterfaceGovernanceProviderMethod6 _Nonnull recordUsage;
362
370
  } UniffiVTableCallbackInterfaceGovernanceProvider;
363
371
 
364
372
  #endif
@@ -610,7 +618,7 @@ RustBuffer uniffi_native_agent_ffi_fn_method_nativeagenthandle_serialize_agent_e
610
618
  #endif
611
619
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_AUTH_KEY
612
620
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_AUTH_KEY
613
- void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_auth_key(uint64_t ptr, RustBuffer key, RustBuffer provider, RustBuffer auth_type, RustBuffer refresh, RustBuffer expires_at, RustCallStatus *_Nonnull out_status
621
+ void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_auth_key(uint64_t ptr, RustBuffer key, RustBuffer provider, RustBuffer auth_type, RustBuffer refresh, RustBuffer expires_at, RustBuffer base_url, RustCallStatus *_Nonnull out_status
614
622
  );
615
623
  #endif
616
624
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_EVENT_CALLBACK
@@ -628,6 +636,11 @@ void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_governance_provider
628
636
  void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_heartbeat_config(uint64_t ptr, RustBuffer config_json, RustCallStatus *_Nonnull out_status
629
637
  );
630
638
  #endif
639
+ #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
640
+ #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
641
+ uint32_t uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_mcp_tools(uint64_t ptr, RustBuffer tools_json, RustCallStatus *_Nonnull out_status
642
+ );
643
+ #endif
631
644
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MEMORY_PROVIDER
632
645
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_FN_METHOD_NATIVEAGENTHANDLE_SET_MEMORY_PROVIDER
633
646
  void uniffi_native_agent_ffi_fn_method_nativeagenthandle_set_memory_provider(uint64_t ptr, uint64_t provider, RustCallStatus *_Nonnull out_status
@@ -1230,6 +1243,12 @@ uint16_t uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_governanc
1230
1243
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_HEARTBEAT_CONFIG
1231
1244
  uint16_t uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_heartbeat_config(void
1232
1245
 
1246
+ );
1247
+ #endif
1248
+ #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
1249
+ #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_MCP_TOOLS
1250
+ uint16_t uniffi_native_agent_ffi_checksum_method_nativeagenthandle_set_mcp_tools(void
1251
+
1233
1252
  );
1234
1253
  #endif
1235
1254
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_NATIVEAGENTHANDLE_SET_MEMORY_PROVIDER
@@ -1314,6 +1333,12 @@ uint16_t uniffi_native_agent_ffi_checksum_method_governanceprovider_record_audit
1314
1333
  #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_CHECK_SINK
1315
1334
  uint16_t uniffi_native_agent_ffi_checksum_method_governanceprovider_check_sink(void
1316
1335
 
1336
+ );
1337
+ #endif
1338
+ #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_REGISTER_TAINT
1339
+ #define UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_REGISTER_TAINT
1340
+ uint16_t uniffi_native_agent_ffi_checksum_method_governanceprovider_register_taint(void
1341
+
1317
1342
  );
1318
1343
  #endif
1319
1344
  #ifndef UNIFFI_FFIDEF_UNIFFI_NATIVE_AGENT_FFI_CHECKSUM_METHOD_GOVERNANCEPROVIDER_RESET
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "capacitor-native-agent",
3
- "version": "0.9.14",
3
+ "version": "0.9.15",
4
4
  "description": "Native AI agent loop for Capacitor — runs LLM completions, tool execution, and cron jobs in native Rust, enabling background execution.",
5
5
  "main": "dist/esm/index.js",
6
6
  "types": "dist/esm/index.d.ts",