capacitor-native-agent 0.9.0 → 0.9.2
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 +26 -23
- 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
|
@@ -73,21 +73,26 @@ NativeAgent.addListener('nativeAgentEvent', (event) => {
|
|
|
73
73
|
}
|
|
74
74
|
})
|
|
75
75
|
|
|
76
|
-
// Initialize
|
|
76
|
+
// Initialize — `defaultProvider` and `defaultModel` are the agent's
|
|
77
|
+
// configured LLM identity. Every code path (sendMessage, cron jobs,
|
|
78
|
+
// skills, follow-up) inherits these unless the caller explicitly
|
|
79
|
+
// overrides per-call. See "Configuring the LLM provider" below.
|
|
77
80
|
await NativeAgent.initialize({
|
|
78
81
|
dbPath: 'files://agent.db',
|
|
79
82
|
workspacePath: '/path/to/workspace',
|
|
80
83
|
authProfilesPath: '/path/to/auth-profiles.json',
|
|
84
|
+
defaultProvider: 'openai',
|
|
85
|
+
defaultModel: 'gpt-4o',
|
|
81
86
|
})
|
|
82
87
|
|
|
83
88
|
// Set auth
|
|
84
89
|
await NativeAgent.setAuthKey({
|
|
85
|
-
key: 'sk
|
|
86
|
-
provider: '
|
|
90
|
+
key: 'sk-...',
|
|
91
|
+
provider: 'openai',
|
|
87
92
|
authType: 'api_key',
|
|
88
93
|
})
|
|
89
94
|
|
|
90
|
-
// Send a message
|
|
95
|
+
// Send a message — uses the configured default provider/model.
|
|
91
96
|
const { runId } = await NativeAgent.sendMessage({
|
|
92
97
|
prompt: 'Hello!',
|
|
93
98
|
sessionKey: 'session-1',
|
|
@@ -95,6 +100,18 @@ const { runId } = await NativeAgent.sendMessage({
|
|
|
95
100
|
})
|
|
96
101
|
```
|
|
97
102
|
|
|
103
|
+
## Configuring the LLM provider
|
|
104
|
+
|
|
105
|
+
The agent's `provider` and `model` are resolved at every turn (interactive `sendMessage`, cron jobs fired from background, skill kickoffs, follow-up turns) using this precedence chain:
|
|
106
|
+
|
|
107
|
+
1. **Per-call override** — `SendMessageParams.provider` / `model` if explicitly set on a single call.
|
|
108
|
+
2. **Configured default** — `InitConfig.defaultProvider` / `defaultModel` set once at `initialize()`.
|
|
109
|
+
3. **Hardcoded last-resort** — `anthropic` + that provider's default model. The native side emits a loud `eprintln!` whenever this branch fires; a properly-configured install never reaches it.
|
|
110
|
+
|
|
111
|
+
This means a cron job created with no explicit provider will run on whatever the agent was set up with at `initialize()`-time — not silently fall back to Anthropic. Cron skills can additionally pin a per-skill `provider` / `model` override (see `CronSkillInput`) when one specific skill needs a different model than the agent default.
|
|
112
|
+
|
|
113
|
+
Note: when a caller overrides `provider` but not `model`, the configured `defaultModel` is **not** applied (model strings are tied to providers). The resolver falls through to the per-provider default model instead.
|
|
114
|
+
|
|
98
115
|
## API
|
|
99
116
|
|
|
100
117
|
See [definitions.ts](src/definitions.ts) for the full TypeScript interface.
|
|
@@ -176,30 +193,16 @@ The `provider` argument is a free string. The Rust agent loop currently accepts:
|
|
|
176
193
|
| `openrouter` | `anthropic/claude-sonnet-4.5` | OpenRouter |
|
|
177
194
|
| `kimi` (aliases `kimi-coding`, `kimi-code`) | `kimi-for-coding` | Kimi Coding (Anthropic-messages-compatible, https://api.kimi.com/coding) |
|
|
178
195
|
|
|
179
|
-
|
|
196
|
+
The "Default model" column is what the resolver picks when a provider is selected but no model is supplied. To use a different model with a given provider, pass it explicitly via `defaultModel` at `initialize()` or per-call on `sendMessage`.
|
|
180
197
|
|
|
181
198
|
## Platform Support
|
|
182
199
|
|
|
183
|
-
| Platform | Status
|
|
184
|
-
|
|
185
|
-
| Android | Supported.
|
|
186
|
-
| iOS |
|
|
200
|
+
| Platform | Status |
|
|
201
|
+
|----------|--------|
|
|
202
|
+
| Android | Supported. `arm64-v8a` `.so` shipped under `android/src/main/jniLibs/`. |
|
|
203
|
+
| iOS | Supported. Universal `xcframework` ships device (`ios-arm64`) + Apple Silicon simulator (`ios-arm64-simulator`) slices. |
|
|
187
204
|
| Web | N/A (throws unavailable error). |
|
|
188
205
|
|
|
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.
|
|
202
|
-
|
|
203
206
|
## License
|
|
204
207
|
|
|
205
208
|
MIT
|
|
@@ -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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"}
|