@agentick/apple 0.8.0 → 0.9.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"apple.d.ts","sourceRoot":"","sources":["../src/apple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAGL,KAAK,UAAU,EAGhB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EACV,kBAAkB,EAQnB,MAAM,SAAS,CAAC;AAUjB;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,kBAAuB,GAAG,UAAU,CAmH5E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,MAAM,GAAE,kBAAuB,GAAG,UAAU,CAEjE"}
1
+ {"version":3,"file":"apple.d.ts","sourceRoot":"","sources":["../src/apple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAGL,KAAK,UAAU,EAGhB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EACV,kBAAkB,EAUnB,MAAM,SAAS,CAAC;AAUjB;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,kBAAuB,GAAG,UAAU,CAyH5E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,MAAM,GAAE,kBAAuB,GAAG,UAAU,CAEjE"}
package/dist/apple.js CHANGED
@@ -133,6 +133,11 @@ export function createAppleModel(config = {}) {
133
133
  executeStream: async function* (input) {
134
134
  yield* streamBridge(bridgePath, { ...input, stream: true });
135
135
  },
136
+ embed: async (texts) => {
137
+ const input = { operation: "embed", texts, script: "latin" };
138
+ const output = await runEmbedBridge(bridgePath, input);
139
+ return { embeddings: output.embeddings, dimensions: output.dimensions, model: output.model };
140
+ },
136
141
  });
137
142
  }
138
143
  /**
@@ -293,4 +298,43 @@ async function* streamBridge(bridgePath, input) {
293
298
  yield { type: "error", error: stderrBuf.trim() };
294
299
  }
295
300
  }
301
+ // ============================================================================
302
+ // Embedding Bridge
303
+ // ============================================================================
304
+ /** Spawn the Swift bridge with embed operation, collect output as EmbedBridgeOutput */
305
+ function runEmbedBridge(bridgePath, input) {
306
+ return new Promise((resolve, reject) => {
307
+ const proc = spawn(bridgePath, [], { stdio: ["pipe", "pipe", "pipe"] });
308
+ let stdout = "";
309
+ let stderr = "";
310
+ proc.stdout.on("data", (data) => {
311
+ stdout += data.toString();
312
+ });
313
+ proc.stderr.on("data", (data) => {
314
+ stderr += data.toString();
315
+ });
316
+ proc.on("error", (err) => {
317
+ reject(new Error(`Failed to spawn Apple FM bridge at ${bridgePath}: ${err.message}`));
318
+ });
319
+ proc.on("close", (code) => {
320
+ if (code !== 0) {
321
+ reject(new Error(`Apple FM bridge exited with code ${code}: ${stderr}`));
322
+ return;
323
+ }
324
+ try {
325
+ const output = JSON.parse(stdout.trim());
326
+ if (output.type === "error") {
327
+ reject(new Error(`Apple embedding: ${output.error}`));
328
+ return;
329
+ }
330
+ resolve(output);
331
+ }
332
+ catch {
333
+ reject(new Error(`Failed to parse bridge output: ${stdout.slice(0, 200)}`));
334
+ }
335
+ });
336
+ proc.stdin.write(JSON.stringify(input));
337
+ proc.stdin.end();
338
+ });
339
+ }
296
340
  //# sourceMappingURL=apple.js.map
package/dist/apple.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"apple.js","sourceRoot":"","sources":["../src/apple.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apple.js","sourceRoot":"","sources":["../src/apple.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Apple On-Device Embeddings
3
+ *
4
+ * Generates vector embeddings using Apple's NLContextualEmbedding model,
5
+ * running entirely on-device via the NaturalLanguage framework.
6
+ *
7
+ * - 768 dimensions on macOS, 512 on iOS
8
+ * - 27+ languages across 6 script models
9
+ * - Completely private — no network calls
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { appleEmbedding } from '@agentick/apple';
14
+ *
15
+ * const embedder = appleEmbedding();
16
+ * const result = await embedder.embed(["Hello world"]);
17
+ * // result.embeddings[0] → number[512]
18
+ * ```
19
+ */
20
+ import { type EmbeddingModel } from "@agentick/core/model";
21
+ import type { AppleEmbeddingConfig } from "./types";
22
+ /**
23
+ * Create an Apple on-device embedding model.
24
+ *
25
+ * Uses NLContextualEmbedding under the hood — mean-pooled token vectors
26
+ * producing a single vector per input text.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const embedder = appleEmbedding({ script: "latin" });
31
+ * const { embeddings } = await embedder.embed(["machine learning"]);
32
+ * console.log(embeddings[0].length); // 512
33
+ * ```
34
+ */
35
+ export declare function appleEmbedding(config?: AppleEmbeddingConfig): EmbeddingModel;
36
+ //# sourceMappingURL=embedding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../src/embedding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,oBAAoB,EAAuC,MAAM,SAAS,CAAC;AAKzF;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,GAAE,oBAAyB,GAAG,cAAc,CA2BhF"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Apple On-Device Embeddings
3
+ *
4
+ * Generates vector embeddings using Apple's NLContextualEmbedding model,
5
+ * running entirely on-device via the NaturalLanguage framework.
6
+ *
7
+ * - 768 dimensions on macOS, 512 on iOS
8
+ * - 27+ languages across 6 script models
9
+ * - Completely private — no network calls
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { appleEmbedding } from '@agentick/apple';
14
+ *
15
+ * const embedder = appleEmbedding();
16
+ * const result = await embedder.embed(["Hello world"]);
17
+ * // result.embeddings[0] → number[512]
18
+ * ```
19
+ */
20
+ import { spawn } from "node:child_process";
21
+ import { existsSync } from "node:fs";
22
+ import { join, dirname } from "node:path";
23
+ import { fileURLToPath } from "node:url";
24
+ import { createEmbeddingAdapter } from "@agentick/core/model";
25
+ const __dirname = dirname(fileURLToPath(import.meta.url));
26
+ const DEFAULT_BRIDGE_PATH = join(__dirname, "..", "bin", "apple-fm-bridge");
27
+ /**
28
+ * Create an Apple on-device embedding model.
29
+ *
30
+ * Uses NLContextualEmbedding under the hood — mean-pooled token vectors
31
+ * producing a single vector per input text.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const embedder = appleEmbedding({ script: "latin" });
36
+ * const { embeddings } = await embedder.embed(["machine learning"]);
37
+ * console.log(embeddings[0].length); // 512
38
+ * ```
39
+ */
40
+ export function appleEmbedding(config = {}) {
41
+ const script = config.script ?? "latin";
42
+ const bridgePath = resolveBridgePath(config.bridgePath);
43
+ return createEmbeddingAdapter({
44
+ metadata: {
45
+ id: "apple-contextual-embedding",
46
+ provider: "apple",
47
+ dimensions: 512,
48
+ model: "apple-contextual-embedding",
49
+ },
50
+ prepareInput: (texts, _options) => ({
51
+ operation: "embed",
52
+ texts,
53
+ script,
54
+ language: config.language,
55
+ }),
56
+ execute: (input) => runBridge(bridgePath, input),
57
+ processOutput: (output) => ({
58
+ embeddings: output.embeddings,
59
+ dimensions: output.dimensions,
60
+ model: output.model,
61
+ }),
62
+ });
63
+ }
64
+ function resolveBridgePath(explicit) {
65
+ if (explicit)
66
+ return explicit;
67
+ if (existsSync(DEFAULT_BRIDGE_PATH))
68
+ return DEFAULT_BRIDGE_PATH;
69
+ return "apple-fm-bridge";
70
+ }
71
+ function runBridge(bridgePath, input) {
72
+ return new Promise((resolve, reject) => {
73
+ const proc = spawn(bridgePath, [], { stdio: ["pipe", "pipe", "pipe"] });
74
+ let stdout = "";
75
+ let stderr = "";
76
+ proc.stdout.on("data", (data) => {
77
+ stdout += data.toString();
78
+ });
79
+ proc.stderr.on("data", (data) => {
80
+ stderr += data.toString();
81
+ });
82
+ proc.on("error", (err) => {
83
+ reject(new Error(`Failed to spawn Apple FM bridge at ${bridgePath}: ${err.message}`));
84
+ });
85
+ proc.on("close", (code) => {
86
+ if (code !== 0) {
87
+ reject(new Error(`Apple FM bridge exited with code ${code}: ${stderr}`));
88
+ return;
89
+ }
90
+ try {
91
+ const output = JSON.parse(stdout.trim());
92
+ if (output.type === "error") {
93
+ reject(new Error(`Apple embedding: ${output.error}`));
94
+ return;
95
+ }
96
+ resolve(output);
97
+ }
98
+ catch {
99
+ reject(new Error(`Failed to parse bridge output: ${stdout.slice(0, 200)}`));
100
+ }
101
+ });
102
+ proc.stdin.write(JSON.stringify(input));
103
+ proc.stdin.end();
104
+ });
105
+ }
106
+ //# sourceMappingURL=embedding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.js","sourceRoot":"","sources":["../src/embedding.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -33,5 +33,6 @@
33
33
  */
34
34
  export * from "./apple-model";
35
35
  export * from "./apple";
36
- export type { AppleAdapterConfig, BridgeInput, BridgeOutput, BridgeChunk } from "./types";
36
+ export { appleEmbedding } from "./embedding";
37
+ export type { AppleAdapterConfig, AppleEmbeddingConfig, EmbeddingScript, BridgeInput, BridgeOutput, BridgeChunk, } from "./types";
37
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -33,4 +33,5 @@
33
33
  */
34
34
  export * from "./apple-model";
35
35
  export * from "./apple";
36
+ export { appleEmbedding } from "./embedding";
36
37
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
package/dist/types.d.ts CHANGED
@@ -83,5 +83,39 @@ export type BridgeChunk = {
83
83
  type: "error";
84
84
  error: string;
85
85
  };
86
+ /** Supported script models for NLContextualEmbedding */
87
+ export type EmbeddingScript = "latin" | "cyrillic" | "cjk" | "indic" | "thai" | "arabic";
88
+ /** Input sent to the Swift bridge for embedding */
89
+ export interface EmbedBridgeInput {
90
+ operation: "embed";
91
+ texts: string[];
92
+ script?: EmbeddingScript;
93
+ /** BCP-47 language code (e.g. "en", "fr", "de") — optional, refines results */
94
+ language?: string;
95
+ }
96
+ /** Output from the Swift bridge for embedding */
97
+ export interface EmbedBridgeOutput {
98
+ model: string;
99
+ embeddings: number[][];
100
+ dimensions: number;
101
+ script: string;
102
+ }
103
+ /** Configuration for the embedding API */
104
+ export interface AppleEmbeddingConfig {
105
+ /** Path to the compiled Swift bridge executable */
106
+ bridgePath?: string;
107
+ /**
108
+ * Script model to use. Each covers multiple languages:
109
+ * - "latin" (default) — English, French, German, Spanish, Portuguese, Italian, Dutch, etc.
110
+ * - "cyrillic" — Russian, Ukrainian, Bulgarian, Kazakh
111
+ * - "cjk" — Chinese, Japanese, Korean
112
+ * - "indic" — Hindi, Marathi, Bangla, Tamil, Telugu, etc.
113
+ * - "thai" — Thai
114
+ * - "arabic" — Arabic
115
+ */
116
+ script?: EmbeddingScript;
117
+ /** BCP-47 language code for better results when language is known */
118
+ language?: string;
119
+ }
86
120
  export declare const STOP_REASON_MAP: Record<string, StopReason>;
87
121
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC;AAED,4CAA4C;AAC5C,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAClD,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D;AAED,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,6DAA6D;AAC7D,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAMrC,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAGtD,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA+E9C,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAA+B;IACzD,IAAI,EAAE,UAAU,CAAC,IAAI;IACrB,UAAU,EAAE,UAAU,CAAC,UAAU;CAClC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAyH9C,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAA+B;IACzD,IAAI,EAAE,UAAU,CAAC,IAAI;IACrB,UAAU,EAAE,UAAU,CAAC,UAAU;CAClC,CAAC"}
package/inference.swift CHANGED
@@ -1,20 +1,27 @@
1
1
  /// Apple Foundation Models Bridge
2
2
  ///
3
3
  /// A CLI executable that wraps Apple's on-device Foundation Models framework
4
- /// with a JSON wire protocol compatible with agentick's adapter interface.
4
+ /// and NaturalLanguage embedding models with a JSON wire protocol compatible
5
+ /// with agentick's adapter interface.
5
6
  ///
6
7
  /// Wire protocol:
7
- /// Input: JSON on stdin (subset of ModelInput)
8
+ /// Input: JSON on stdin
8
9
  /// Output: JSON on stdout (ModelOutput for non-streaming, NDJSON AdapterDeltas for streaming)
9
10
  ///
11
+ /// Operations:
12
+ /// "generate" (default) — text generation via Foundation Models
13
+ /// "embed" — vector embeddings via NLContextualEmbedding
14
+ ///
10
15
  /// Build:
11
- /// swiftc -parse-as-library -framework FoundationModels inference.swift -o apple-fm-bridge
16
+ /// swiftc -parse-as-library -framework FoundationModels -framework NaturalLanguage inference.swift -o apple-fm-bridge
12
17
  ///
13
18
  /// Usage:
14
- /// echo '{"messages":[{"role":"user","content":"Hello"}],"stream":false}' | ./apple-fm-bridge
19
+ /// echo '{"messages":[{"role":"user","content":"Hello"}]}' | ./apple-fm-bridge
20
+ /// echo '{"operation":"embed","texts":["Hello world"]}' | ./apple-fm-bridge
15
21
 
16
22
  import Foundation
17
23
  import FoundationModels
24
+ import NaturalLanguage
18
25
 
19
26
  // ============================================================================
20
27
  // Wire Protocol Types (aligned with @agentick/shared)
@@ -23,7 +30,8 @@ import FoundationModels
23
30
  // --- Input ---
24
31
 
25
32
  struct BridgeInput: Decodable {
26
- let messages: [WireMessage]
33
+ let operation: String? // "generate" (default) or "embed"
34
+ let messages: [WireMessage]?
27
35
  let system: String?
28
36
  let temperature: Double?
29
37
  let maxTokens: Int?
@@ -31,6 +39,22 @@ struct BridgeInput: Decodable {
31
39
  let responseFormat: ResponseFormat?
32
40
  }
33
41
 
42
+ // --- Embedding Input ---
43
+
44
+ struct EmbedInput: Decodable {
45
+ let operation: String
46
+ let texts: [String]
47
+ let script: String? // "latin" (default), "cyrillic", "cjk", "indic", "thai", "arabic"
48
+ let language: String? // BCP-47 code, e.g. "en", "fr", "de" — optional, refines results
49
+ }
50
+
51
+ struct EmbedOutput: Encodable {
52
+ let model: String
53
+ let embeddings: [[Double]]
54
+ let dimensions: Int
55
+ let script: String
56
+ }
57
+
34
58
  struct ResponseFormat: Decodable {
35
59
  let type: String
36
60
  let schema: JsonSchema?
@@ -192,9 +216,19 @@ struct AppleFoundationBridge {
192
216
  return
193
217
  }
194
218
 
219
+ // Peek at operation field to route
220
+ struct OperationPeek: Decodable { let operation: String? }
221
+ let peek = try JSONDecoder().decode(OperationPeek.self, from: inputData)
222
+
223
+ if peek.operation == "embed" {
224
+ let embedInput = try JSONDecoder().decode(EmbedInput.self, from: inputData)
225
+ try generateEmbeddings(input: embedInput, encoder: encoder)
226
+ return
227
+ }
228
+
229
+ // Default: text generation
195
230
  let input = try JSONDecoder().decode(BridgeInput.self, from: inputData)
196
231
 
197
- // Check availability
198
232
  let model = SystemLanguageModel.default
199
233
  guard model.availability == .available else {
200
234
  writeJSON(
@@ -204,14 +238,14 @@ struct AppleFoundationBridge {
204
238
  return
205
239
  }
206
240
 
207
- // Extract system prompt: explicit field takes precedence, then system-role messages
208
- let systemPrompt = input.system ?? input.messages
241
+ let messages = input.messages ?? []
242
+
243
+ let systemPrompt = input.system ?? messages
209
244
  .filter { $0.role == "system" }
210
245
  .map { $0.content.text }
211
246
  .joined(separator: "\n")
212
247
 
213
- // Build conversation prompt from non-system messages
214
- let prompt = buildPrompt(from: input.messages.filter { $0.role != "system" })
248
+ let prompt = buildPrompt(from: messages.filter { $0.role != "system" })
215
249
 
216
250
  guard !prompt.isEmpty else {
217
251
  writeJSON(ErrorOutput(error: "No user messages provided"), encoder: encoder)
@@ -222,7 +256,6 @@ struct AppleFoundationBridge {
222
256
  ? LanguageModelSession()
223
257
  : LanguageModelSession(instructions: systemPrompt)
224
258
 
225
- // Check if structured output is requested
226
259
  if let responseFormat = input.responseFormat, responseFormat.type == "json_schema" {
227
260
  if input.stream == true {
228
261
  writeJSON(ErrorOutput(error: "Streaming not supported with json_schema response format"), encoder: encoder)
@@ -401,6 +434,76 @@ struct AppleFoundationBridge {
401
434
  }
402
435
  }
403
436
 
437
+ // MARK: - Embeddings
438
+
439
+ static func resolveScript(_ name: String?) -> NLScript {
440
+ switch name?.lowercased() {
441
+ case "cyrillic": return .cyrillic
442
+ case "cjk": return .simplifiedChinese // CJK model
443
+ case "devanagari", "indic": return .devanagari
444
+ case "thai": return .thai
445
+ case "arabic": return .arabic
446
+ default: return .latin
447
+ }
448
+ }
449
+
450
+ static func generateEmbeddings(input: EmbedInput, encoder: JSONEncoder) throws {
451
+ guard !input.texts.isEmpty else {
452
+ writeJSON(ErrorOutput(error: "No texts provided for embedding"), encoder: encoder)
453
+ return
454
+ }
455
+
456
+ let script = resolveScript(input.script)
457
+ guard let embedding = NLContextualEmbedding(script: script) else {
458
+ writeJSON(ErrorOutput(error: "No embedding model available for script: \(input.script ?? "latin")"), encoder: encoder)
459
+ return
460
+ }
461
+
462
+ guard embedding.hasAvailableAssets else {
463
+ writeJSON(ErrorOutput(error: "Embedding model assets not downloaded. Enable Apple Intelligence and ensure the model is available."), encoder: encoder)
464
+ return
465
+ }
466
+
467
+ try embedding.load()
468
+ defer { embedding.unload() }
469
+
470
+ let dimensions = embedding.dimension
471
+ let language: NLLanguage? = input.language.map { NLLanguage(rawValue: $0) }
472
+
473
+ var allEmbeddings: [[Double]] = []
474
+
475
+ for text in input.texts {
476
+ let result = try embedding.embeddingResult(for: text, language: language)
477
+
478
+ let count = result.sequenceLength
479
+ guard count > 0 else {
480
+ allEmbeddings.append(Array(repeating: 0.0, count: dimensions))
481
+ continue
482
+ }
483
+
484
+ // Mean-pool token vectors into a single sentence embedding
485
+ var sum = Array(repeating: 0.0, count: dimensions)
486
+ result.enumerateTokenVectors(in: text.startIndex..<text.endIndex) { vector, tokenRange in
487
+ for i in 0..<min(vector.count, dimensions) {
488
+ sum[i] += Double(vector[i])
489
+ }
490
+ return true
491
+ }
492
+
493
+ let divisor = Double(count)
494
+ let averaged = sum.map { $0 / divisor }
495
+ allEmbeddings.append(averaged)
496
+ }
497
+
498
+ let output = EmbedOutput(
499
+ model: "apple-contextual-embedding",
500
+ embeddings: allEmbeddings,
501
+ dimensions: dimensions,
502
+ script: input.script ?? "latin"
503
+ )
504
+ writeJSON(output, encoder: encoder)
505
+ }
506
+
404
507
  // MARK: - Prompt Construction
405
508
 
406
509
  /// Flatten conversation messages into a single prompt string.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentick/apple",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Apple Foundation Models adapter for Agentick — on-device inference via macOS 26+",
5
5
  "keywords": [
6
6
  "adapter",
@@ -33,8 +33,8 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@agentick/core": "0.8.0",
37
- "@agentick/shared": "0.8.0"
36
+ "@agentick/core": "0.9.0",
37
+ "@agentick/shared": "0.9.0"
38
38
  },
39
39
  "scripts": {
40
40
  "postinstall": "node scripts/compile-bridge.mjs",