capacitor-native-agent 0.8.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -7
- package/android/src/main/java/com/t6x/plugins/nativeagent/NativeAgentPlugin.kt +8 -0
- package/android/src/main/java/uniffi/native_agent_ffi/native_agent_ffi.kt +22 -2
- package/android/src/main/jniLibs/arm64-v8a/libnative_agent_ffi.so +0 -0
- package/dist/esm/definitions.d.ts +22 -0
- package/dist/esm/definitions.d.ts.map +1 -1
- package/ios/Frameworks/NativeAgentFFI.xcframework/ios-arm64/Headers/native_agent_ffi/native_agent_ffi.swift +399 -17
- package/ios/Frameworks/NativeAgentFFI.xcframework/ios-arm64/Headers/native_agent_ffi/native_agent_ffiFFI.h +109 -2
- package/ios/Frameworks/NativeAgentFFI.xcframework/ios-arm64/libnative_agent_ffi.a +0 -0
- package/ios/Frameworks/NativeAgentFFI.xcframework/ios-arm64-simulator/Headers/native_agent_ffi/native_agent_ffi.swift +399 -17
- package/ios/Frameworks/NativeAgentFFI.xcframework/ios-arm64-simulator/Headers/native_agent_ffi/native_agent_ffiFFI.h +109 -2
- package/ios/Frameworks/NativeAgentFFI.xcframework/ios-arm64-simulator/libnative_agent_ffi.a +0 -0
- package/ios/Sources/NativeAgentPlugin/Generated/native_agent_ffi.swift +360 -9
- package/ios/Sources/NativeAgentPlugin/Generated/native_agent_ffiFFI.h +107 -0
- package/ios/Sources/NativeAgentPlugin/NativeAgentPlugin.swift +10 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,6 +20,16 @@ npm install capacitor-native-agent
|
|
|
20
20
|
npx cap sync
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
## Cloning this repository
|
|
24
|
+
|
|
25
|
+
The Rust FFI crate lives in a separate GitLab repository and is pulled in as a git submodule. After cloning:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
git submodule update --init --recursive
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Upstream URL: https://gitlab.k8s.t6x.io/rruiz/native-agent-ffi
|
|
32
|
+
|
|
23
33
|
## Android Setup
|
|
24
34
|
|
|
25
35
|
The npm package includes the Kotlin plugin source and UniFFI bindings, but **not** the compiled Rust shared library. You must build and place it yourself:
|
|
@@ -27,10 +37,11 @@ The npm package includes the Kotlin plugin source and UniFFI bindings, but **not
|
|
|
27
37
|
### 1. Build the Rust .so
|
|
28
38
|
|
|
29
39
|
```bash
|
|
30
|
-
|
|
31
|
-
cargo ndk -t arm64-v8a build --release
|
|
40
|
+
scripts/build-android.sh
|
|
32
41
|
```
|
|
33
42
|
|
|
43
|
+
This runs `cargo ndk -t arm64-v8a build --release` on the submodule and copies the result into `android/src/main/jniLibs/arm64-v8a/`.
|
|
44
|
+
|
|
34
45
|
### 2. Place the .so in your app
|
|
35
46
|
|
|
36
47
|
Copy the built library to your Android app's jniLibs:
|
|
@@ -154,13 +165,40 @@ Events are emitted via `addListener('nativeAgentEvent', handler)`:
|
|
|
154
165
|
- `heartbeat.*` — Heartbeat lifecycle
|
|
155
166
|
- `scheduler.status` — Scheduler state updates
|
|
156
167
|
|
|
168
|
+
## Supported LLM providers
|
|
169
|
+
|
|
170
|
+
The `provider` argument is a free string. The Rust agent loop currently accepts:
|
|
171
|
+
|
|
172
|
+
| Provider string | Default model | Endpoint |
|
|
173
|
+
|---|---|---|
|
|
174
|
+
| `anthropic` | `claude-sonnet-4-20250514` | Anthropic Messages API |
|
|
175
|
+
| `openai` | `gpt-4o` | OpenAI Chat Completions |
|
|
176
|
+
| `openrouter` | `anthropic/claude-sonnet-4.5` | OpenRouter |
|
|
177
|
+
| `kimi` (aliases `kimi-coding`, `kimi-code`) | `kimi-for-coding` | Kimi Coding (Anthropic-messages-compatible, https://api.kimi.com/coding) |
|
|
178
|
+
|
|
179
|
+
> **Note (0.9.0 — iOS):** Kimi is fully wired in the Android `.so` shipped with this version. The iOS `xcframework` in this release is the pre-existing `0.8.x` build and has **not** been rebuilt against `native-agent-ffi 9946e0f`. iOS callers using `provider: 'kimi'` will receive `Unsupported provider`. Track [#TODO-ios-0.9.1](#known-limitations) for the 0.9.1 iOS rebuild.
|
|
180
|
+
|
|
157
181
|
## Platform Support
|
|
158
182
|
|
|
159
|
-
| Platform | Status |
|
|
160
|
-
|
|
161
|
-
| Android | Supported |
|
|
162
|
-
| iOS |
|
|
163
|
-
| Web | N/A (throws unavailable error) |
|
|
183
|
+
| Platform | Status (this release: **0.9.0**) |
|
|
184
|
+
|----------|-----------------------------------|
|
|
185
|
+
| Android | Supported. Rust pinned to `native-agent-ffi@9946e0f` (Kimi, SSE no-space fix, session-context fix, AgentStore refactor, runtime-drop fix). |
|
|
186
|
+
| iOS | Stale binary — `xcframework` is pre-`0.9.0` and will be refreshed in `0.9.1`. See *Known limitations* below. |
|
|
187
|
+
| Web | N/A (throws unavailable error). |
|
|
188
|
+
|
|
189
|
+
## Known limitations
|
|
190
|
+
|
|
191
|
+
### 0.9.0 — iOS xcframework not rebuilt
|
|
192
|
+
|
|
193
|
+
The Mac build host was unreachable when `0.9.0` was cut, so `ios/Frameworks/NativeAgentFFI.xcframework/` was **not** rebuilt against `native-agent-ffi@9946e0f`. iOS users on `0.9.0` are missing the following upstream changes (Android users have them):
|
|
194
|
+
|
|
195
|
+
- `ba8c97e` `feat(llm): add kimi (Kimi Code) provider` — `provider: 'kimi'` will fail on iOS until `0.9.1`.
|
|
196
|
+
- `2cb34be` `fix(llm): tolerate "data:" SSE without space` — Anthropic-compatible streaming endpoints that omit the space after `data:` will return empty messages on iOS.
|
|
197
|
+
- `9735f4d` `ffi: keep session context across send_message` — after a cold-boot resume, the next `sendMessage` may start without prior history on iOS.
|
|
198
|
+
- `02b1955` `feat(store): extract AgentStore trait` — internal refactor only; mobile `SqliteStore` default behavior unchanged, so no user-visible iOS impact.
|
|
199
|
+
- `9946e0f` `ffi: detach inner runtime on drop` — server-side concern only (handle dropped from inside another tokio runtime); does not affect Capacitor.
|
|
200
|
+
|
|
201
|
+
Action plan: rebuild `xcframework` on the Mac under `~/choreruiz/` via `scripts/build-ios.sh`, rsync `ios/Frameworks/` and `ios/Sources/NativeAgentPlugin/Generated/` back, bump to `0.9.1`, republish.
|
|
164
202
|
|
|
165
203
|
## License
|
|
166
204
|
|
|
@@ -49,6 +49,8 @@ class NativeAgentPlugin : Plugin() {
|
|
|
49
49
|
?: return call.reject("workspacePath is required")
|
|
50
50
|
val authProfilesPath = call.getString("authProfilesPath")
|
|
51
51
|
?: return call.reject("authProfilesPath is required")
|
|
52
|
+
val defaultProvider = call.getString("defaultProvider")
|
|
53
|
+
val defaultModel = call.getString("defaultModel")
|
|
52
54
|
|
|
53
55
|
scope.launch {
|
|
54
56
|
try {
|
|
@@ -57,6 +59,8 @@ class NativeAgentPlugin : Plugin() {
|
|
|
57
59
|
dbPath = resolvePath(dbPath),
|
|
58
60
|
workspacePath = resolvePath(workspacePath),
|
|
59
61
|
authProfilesPath = resolvePath(authProfilesPath),
|
|
62
|
+
defaultProvider = defaultProvider,
|
|
63
|
+
defaultModel = defaultModel,
|
|
60
64
|
)
|
|
61
65
|
)
|
|
62
66
|
call.resolve()
|
|
@@ -74,6 +78,8 @@ class NativeAgentPlugin : Plugin() {
|
|
|
74
78
|
?: return call.reject("workspacePath is required")
|
|
75
79
|
val authProfilesPath = call.getString("authProfilesPath")
|
|
76
80
|
?: return call.reject("authProfilesPath is required")
|
|
81
|
+
val defaultProvider = call.getString("defaultProvider")
|
|
82
|
+
val defaultModel = call.getString("defaultModel")
|
|
77
83
|
|
|
78
84
|
scope.launch {
|
|
79
85
|
try {
|
|
@@ -82,6 +88,8 @@ class NativeAgentPlugin : Plugin() {
|
|
|
82
88
|
dbPath = resolvePath(dbPath),
|
|
83
89
|
workspacePath = resolvedWorkspacePath,
|
|
84
90
|
authProfilesPath = resolvePath(authProfilesPath),
|
|
91
|
+
defaultProvider = defaultProvider,
|
|
92
|
+
defaultModel = defaultModel,
|
|
85
93
|
)
|
|
86
94
|
val h = NativeAgentHandle(config)
|
|
87
95
|
h.setEventCallback(object : NativeEventCallback {
|
|
@@ -3088,7 +3088,21 @@ data class InitConfig (
|
|
|
3088
3088
|
/**
|
|
3089
3089
|
* Path to auth-profiles.json.
|
|
3090
3090
|
*/
|
|
3091
|
-
var `authProfilesPath`: kotlin.String
|
|
3091
|
+
var `authProfilesPath`: kotlin.String,
|
|
3092
|
+
/**
|
|
3093
|
+
* Configured default LLM provider for this agent. When a per-call
|
|
3094
|
+
* `SendMessageParams.provider` is unset, the resolver falls back to
|
|
3095
|
+
* this value. `None` falls through to the hardcoded "anthropic"
|
|
3096
|
+
* safety net — which any properly-configured install should never hit.
|
|
3097
|
+
*/
|
|
3098
|
+
var `defaultProvider`: kotlin.String?,
|
|
3099
|
+
/**
|
|
3100
|
+
* Configured default model. Only used when the resolver also took
|
|
3101
|
+
* `default_provider` (i.e. the caller didn't override provider) — if
|
|
3102
|
+
* provider is overridden, the per-provider default model is used
|
|
3103
|
+
* instead, since model strings are tied to providers.
|
|
3104
|
+
*/
|
|
3105
|
+
var `defaultModel`: kotlin.String?
|
|
3092
3106
|
) {
|
|
3093
3107
|
|
|
3094
3108
|
companion object
|
|
@@ -3103,19 +3117,25 @@ public object FfiConverterTypeInitConfig: FfiConverterRustBuffer<InitConfig> {
|
|
|
3103
3117
|
FfiConverterString.read(buf),
|
|
3104
3118
|
FfiConverterString.read(buf),
|
|
3105
3119
|
FfiConverterString.read(buf),
|
|
3120
|
+
FfiConverterOptionalString.read(buf),
|
|
3121
|
+
FfiConverterOptionalString.read(buf),
|
|
3106
3122
|
)
|
|
3107
3123
|
}
|
|
3108
3124
|
|
|
3109
3125
|
override fun allocationSize(value: InitConfig) = (
|
|
3110
3126
|
FfiConverterString.allocationSize(value.`dbPath`) +
|
|
3111
3127
|
FfiConverterString.allocationSize(value.`workspacePath`) +
|
|
3112
|
-
FfiConverterString.allocationSize(value.`authProfilesPath`)
|
|
3128
|
+
FfiConverterString.allocationSize(value.`authProfilesPath`) +
|
|
3129
|
+
FfiConverterOptionalString.allocationSize(value.`defaultProvider`) +
|
|
3130
|
+
FfiConverterOptionalString.allocationSize(value.`defaultModel`)
|
|
3113
3131
|
)
|
|
3114
3132
|
|
|
3115
3133
|
override fun write(value: InitConfig, buf: ByteBuffer) {
|
|
3116
3134
|
FfiConverterString.write(value.`dbPath`, buf)
|
|
3117
3135
|
FfiConverterString.write(value.`workspacePath`, buf)
|
|
3118
3136
|
FfiConverterString.write(value.`authProfilesPath`, buf)
|
|
3137
|
+
FfiConverterOptionalString.write(value.`defaultProvider`, buf)
|
|
3138
|
+
FfiConverterOptionalString.write(value.`defaultModel`, buf)
|
|
3119
3139
|
}
|
|
3120
3140
|
}
|
|
3121
3141
|
|
|
Binary file
|
|
@@ -11,6 +11,21 @@ export interface InitConfig {
|
|
|
11
11
|
workspacePath: string;
|
|
12
12
|
/** Path to auth-profiles.json */
|
|
13
13
|
authProfilesPath: string;
|
|
14
|
+
/**
|
|
15
|
+
* Configured default LLM provider for this agent. When a per-call
|
|
16
|
+
* `provider` is unset on `sendMessage` / cron / skill paths, the
|
|
17
|
+
* resolver falls back to this value. Omitting it falls through to
|
|
18
|
+
* the hardcoded "anthropic" safety net — properly-set-up agents
|
|
19
|
+
* should always specify this.
|
|
20
|
+
*/
|
|
21
|
+
defaultProvider?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Configured default model. Only applies when the resolver also
|
|
24
|
+
* uses `defaultProvider` (i.e. caller didn't override provider).
|
|
25
|
+
* If provider is overridden, the per-provider default model is
|
|
26
|
+
* used instead, since model strings are tied to providers.
|
|
27
|
+
*/
|
|
28
|
+
defaultModel?: string;
|
|
14
29
|
}
|
|
15
30
|
export interface SendMessageParams {
|
|
16
31
|
prompt: string;
|
|
@@ -114,6 +129,11 @@ export interface CronSkillInput {
|
|
|
114
129
|
allowedToolsJson?: string;
|
|
115
130
|
systemPrompt?: string;
|
|
116
131
|
model?: string;
|
|
132
|
+
/**
|
|
133
|
+
* Optional per-skill provider override. When unset, the cron path
|
|
134
|
+
* falls back to the agent's `InitConfig.defaultProvider`.
|
|
135
|
+
*/
|
|
136
|
+
provider?: string;
|
|
117
137
|
maxTurns?: number;
|
|
118
138
|
timeoutMs?: number;
|
|
119
139
|
}
|
|
@@ -123,6 +143,8 @@ export interface CronSkillRecord {
|
|
|
123
143
|
allowedToolsJson?: string;
|
|
124
144
|
systemPrompt?: string;
|
|
125
145
|
model?: string;
|
|
146
|
+
/** Per-skill provider override; null when the skill defers to the agent default. */
|
|
147
|
+
provider?: string;
|
|
126
148
|
maxTurns?: number;
|
|
127
149
|
timeoutMs?: number;
|
|
128
150
|
createdAt: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,aAAa,EAAE,MAAM,CAAA;IACrB,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"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"}
|