cui-llama.rn 0.2.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.
Files changed (76) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +330 -0
  3. package/android/build.gradle +107 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +4 -0
  6. package/android/src/main/CMakeLists.txt +69 -0
  7. package/android/src/main/java/com/rnllama/LlamaContext.java +353 -0
  8. package/android/src/main/java/com/rnllama/RNLlama.java +446 -0
  9. package/android/src/main/java/com/rnllama/RNLlamaPackage.java +48 -0
  10. package/android/src/main/jni.cpp +635 -0
  11. package/android/src/newarch/java/com/rnllama/RNLlamaModule.java +94 -0
  12. package/android/src/oldarch/java/com/rnllama/RNLlamaModule.java +95 -0
  13. package/cpp/README.md +4 -0
  14. package/cpp/common.cpp +3237 -0
  15. package/cpp/common.h +467 -0
  16. package/cpp/ggml-aarch64.c +2193 -0
  17. package/cpp/ggml-aarch64.h +39 -0
  18. package/cpp/ggml-alloc.c +1041 -0
  19. package/cpp/ggml-alloc.h +76 -0
  20. package/cpp/ggml-backend-impl.h +153 -0
  21. package/cpp/ggml-backend.c +2225 -0
  22. package/cpp/ggml-backend.h +236 -0
  23. package/cpp/ggml-common.h +1829 -0
  24. package/cpp/ggml-impl.h +655 -0
  25. package/cpp/ggml-metal.h +65 -0
  26. package/cpp/ggml-metal.m +3273 -0
  27. package/cpp/ggml-quants.c +15022 -0
  28. package/cpp/ggml-quants.h +132 -0
  29. package/cpp/ggml.c +22034 -0
  30. package/cpp/ggml.h +2444 -0
  31. package/cpp/grammar-parser.cpp +536 -0
  32. package/cpp/grammar-parser.h +29 -0
  33. package/cpp/json-schema-to-grammar.cpp +1045 -0
  34. package/cpp/json-schema-to-grammar.h +8 -0
  35. package/cpp/json.hpp +24766 -0
  36. package/cpp/llama.cpp +21789 -0
  37. package/cpp/llama.h +1201 -0
  38. package/cpp/log.h +737 -0
  39. package/cpp/rn-llama.hpp +630 -0
  40. package/cpp/sampling.cpp +460 -0
  41. package/cpp/sampling.h +160 -0
  42. package/cpp/sgemm.cpp +1027 -0
  43. package/cpp/sgemm.h +14 -0
  44. package/cpp/unicode-data.cpp +7032 -0
  45. package/cpp/unicode-data.h +20 -0
  46. package/cpp/unicode.cpp +812 -0
  47. package/cpp/unicode.h +64 -0
  48. package/ios/RNLlama.h +11 -0
  49. package/ios/RNLlama.mm +302 -0
  50. package/ios/RNLlama.xcodeproj/project.pbxproj +278 -0
  51. package/ios/RNLlamaContext.h +39 -0
  52. package/ios/RNLlamaContext.mm +426 -0
  53. package/jest/mock.js +169 -0
  54. package/lib/commonjs/NativeRNLlama.js +10 -0
  55. package/lib/commonjs/NativeRNLlama.js.map +1 -0
  56. package/lib/commonjs/grammar.js +574 -0
  57. package/lib/commonjs/grammar.js.map +1 -0
  58. package/lib/commonjs/index.js +151 -0
  59. package/lib/commonjs/index.js.map +1 -0
  60. package/lib/module/NativeRNLlama.js +3 -0
  61. package/lib/module/NativeRNLlama.js.map +1 -0
  62. package/lib/module/grammar.js +566 -0
  63. package/lib/module/grammar.js.map +1 -0
  64. package/lib/module/index.js +129 -0
  65. package/lib/module/index.js.map +1 -0
  66. package/lib/typescript/NativeRNLlama.d.ts +107 -0
  67. package/lib/typescript/NativeRNLlama.d.ts.map +1 -0
  68. package/lib/typescript/grammar.d.ts +38 -0
  69. package/lib/typescript/grammar.d.ts.map +1 -0
  70. package/lib/typescript/index.d.ts +46 -0
  71. package/lib/typescript/index.d.ts.map +1 -0
  72. package/llama-rn.podspec +56 -0
  73. package/package.json +230 -0
  74. package/src/NativeRNLlama.ts +132 -0
  75. package/src/grammar.ts +849 -0
  76. package/src/index.ts +182 -0
@@ -0,0 +1,129 @@
1
+ import { NativeEventEmitter, DeviceEventEmitter, Platform } from 'react-native';
2
+ import RNLlama from './NativeRNLlama';
3
+ import { SchemaGrammarConverter, convertJsonSchemaToGrammar } from './grammar';
4
+ export { SchemaGrammarConverter, convertJsonSchemaToGrammar };
5
+ const EVENT_ON_TOKEN = '@RNLlama_onToken';
6
+ let EventEmitter;
7
+ if (Platform.OS === 'ios') {
8
+ // @ts-ignore
9
+ EventEmitter = new NativeEventEmitter(RNLlama);
10
+ }
11
+ if (Platform.OS === 'android') {
12
+ EventEmitter = DeviceEventEmitter;
13
+ }
14
+ export class LlamaContext {
15
+ gpu = false;
16
+ reasonNoGPU = '';
17
+ model = {};
18
+ constructor(_ref) {
19
+ let {
20
+ contextId,
21
+ gpu,
22
+ reasonNoGPU,
23
+ model
24
+ } = _ref;
25
+ this.id = contextId;
26
+ this.gpu = gpu;
27
+ this.reasonNoGPU = reasonNoGPU;
28
+ this.model = model;
29
+ }
30
+
31
+ /**
32
+ * Load cached prompt & completion state from a file.
33
+ */
34
+ async loadSession(filepath) {
35
+ return RNLlama.loadSession(this.id, filepath);
36
+ }
37
+
38
+ /**
39
+ * Save current cached prompt & completion state to a file.
40
+ */
41
+ async saveSession(filepath, options) {
42
+ return RNLlama.saveSession(this.id, filepath, (options === null || options === void 0 ? void 0 : options.tokenSize) || -1);
43
+ }
44
+ async completion(params, callback) {
45
+ let tokenListener = callback && EventEmitter.addListener(EVENT_ON_TOKEN, evt => {
46
+ const {
47
+ contextId,
48
+ tokenResult
49
+ } = evt;
50
+ if (contextId !== this.id) return;
51
+ callback(tokenResult);
52
+ });
53
+ const promise = RNLlama.completion(this.id, {
54
+ ...params,
55
+ emit_partial_completion: !!callback
56
+ });
57
+ return promise.then(completionResult => {
58
+ var _tokenListener;
59
+ (_tokenListener = tokenListener) === null || _tokenListener === void 0 ? void 0 : _tokenListener.remove();
60
+ tokenListener = null;
61
+ return completionResult;
62
+ }).catch(err => {
63
+ var _tokenListener2;
64
+ (_tokenListener2 = tokenListener) === null || _tokenListener2 === void 0 ? void 0 : _tokenListener2.remove();
65
+ tokenListener = null;
66
+ throw err;
67
+ });
68
+ }
69
+ stopCompletion() {
70
+ return RNLlama.stopCompletion(this.id);
71
+ }
72
+ tokenize(text) {
73
+ return RNLlama.tokenize(this.id, text);
74
+ }
75
+ detokenize(tokens) {
76
+ return RNLlama.detokenize(this.id, tokens);
77
+ }
78
+ embedding(text) {
79
+ return RNLlama.embedding(this.id, text);
80
+ }
81
+ async bench(pp, tg, pl, nr) {
82
+ const result = await RNLlama.bench(this.id, pp, tg, pl, nr);
83
+ const [modelDesc, modelSize, modelNParams, ppAvg, ppStd, tgAvg, tgStd] = JSON.parse(result);
84
+ return {
85
+ modelDesc,
86
+ modelSize,
87
+ modelNParams,
88
+ ppAvg,
89
+ ppStd,
90
+ tgAvg,
91
+ tgStd
92
+ };
93
+ }
94
+ async release() {
95
+ return RNLlama.releaseContext(this.id);
96
+ }
97
+ }
98
+ export async function setContextLimit(limit) {
99
+ return RNLlama.setContextLimit(limit);
100
+ }
101
+ export async function initLlama(_ref2) {
102
+ let {
103
+ model,
104
+ is_model_asset: isModelAsset,
105
+ ...rest
106
+ } = _ref2;
107
+ let path = model;
108
+ if (path.startsWith('file://')) path = path.slice(7);
109
+ const {
110
+ contextId,
111
+ gpu,
112
+ reasonNoGPU,
113
+ model: modelDetails
114
+ } = await RNLlama.initContext({
115
+ model: path,
116
+ is_model_asset: !!isModelAsset,
117
+ ...rest
118
+ });
119
+ return new LlamaContext({
120
+ contextId,
121
+ gpu,
122
+ reasonNoGPU,
123
+ model: modelDetails
124
+ });
125
+ }
126
+ export async function releaseAllLlama() {
127
+ return RNLlama.releaseAllContexts();
128
+ }
129
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeEventEmitter","DeviceEventEmitter","Platform","RNLlama","SchemaGrammarConverter","convertJsonSchemaToGrammar","EVENT_ON_TOKEN","EventEmitter","OS","LlamaContext","gpu","reasonNoGPU","model","constructor","_ref","contextId","id","loadSession","filepath","saveSession","options","tokenSize","completion","params","callback","tokenListener","addListener","evt","tokenResult","promise","emit_partial_completion","then","completionResult","_tokenListener","remove","catch","err","_tokenListener2","stopCompletion","tokenize","text","detokenize","tokens","embedding","bench","pp","tg","pl","nr","result","modelDesc","modelSize","modelNParams","ppAvg","ppStd","tgAvg","tgStd","JSON","parse","release","releaseContext","setContextLimit","limit","initLlama","_ref2","is_model_asset","isModelAsset","rest","path","startsWith","slice","modelDetails","initContext","releaseAllLlama","releaseAllContexts"],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import type { TurboModule } from 'react-native';
2
+ export type NativeContextParams = {
3
+ model: string;
4
+ is_model_asset?: boolean;
5
+ embedding?: boolean;
6
+ n_ctx?: number;
7
+ n_batch?: number;
8
+ n_threads?: number;
9
+ n_gpu_layers?: number;
10
+ use_mlock?: boolean;
11
+ use_mmap?: boolean;
12
+ lora?: string;
13
+ lora_scaled?: number;
14
+ lora_base?: string;
15
+ rope_freq_base?: number;
16
+ rope_freq_scale?: number;
17
+ };
18
+ export type NativeCompletionParams = {
19
+ prompt: string;
20
+ grammar?: string;
21
+ stop?: Array<string>;
22
+ n_threads?: number;
23
+ n_predict?: number;
24
+ n_probs?: number;
25
+ top_k?: number;
26
+ top_p?: number;
27
+ min_p?: number;
28
+ tfs_z?: number;
29
+ typical_p?: number;
30
+ temperature?: number;
31
+ penalty_last_n?: number;
32
+ penalty_repeat?: number;
33
+ penalty_freq?: number;
34
+ penalty_present?: number;
35
+ mirostat?: number;
36
+ mirostat_tau?: number;
37
+ mirostat_eta?: number;
38
+ penalize_nl?: boolean;
39
+ seed?: number;
40
+ ignore_eos?: boolean;
41
+ logit_bias?: Array<Array<number>>;
42
+ emit_partial_completion: boolean;
43
+ };
44
+ export type NativeCompletionTokenProbItem = {
45
+ tok_str: string;
46
+ prob: number;
47
+ };
48
+ export type NativeCompletionTokenProb = {
49
+ content: string;
50
+ probs: Array<NativeCompletionTokenProbItem>;
51
+ };
52
+ export type NativeCompletionResultTimings = {
53
+ prompt_n: number;
54
+ prompt_ms: number;
55
+ prompt_per_token_ms: number;
56
+ prompt_per_second: number;
57
+ predicted_n: number;
58
+ predicted_ms: number;
59
+ predicted_per_token_ms: number;
60
+ predicted_per_second: number;
61
+ };
62
+ export type NativeCompletionResult = {
63
+ text: string;
64
+ tokens_predicted: number;
65
+ tokens_evaluated: number;
66
+ truncated: boolean;
67
+ stopped_eos: boolean;
68
+ stopped_word: string;
69
+ stopped_limit: number;
70
+ stopping_word: string;
71
+ tokens_cached: number;
72
+ timings: NativeCompletionResultTimings;
73
+ completion_probabilities?: Array<NativeCompletionTokenProb>;
74
+ };
75
+ export type NativeTokenizeResult = {
76
+ tokens: Array<number>;
77
+ };
78
+ export type NativeEmbeddingResult = {
79
+ embedding: Array<number>;
80
+ };
81
+ export type NativeLlamaContext = {
82
+ contextId: number;
83
+ gpu: boolean;
84
+ reasonNoGPU: string;
85
+ model: Object;
86
+ };
87
+ export type NativeSessionLoadResult = {
88
+ tokens_loaded: number;
89
+ prompt: string;
90
+ };
91
+ export interface Spec extends TurboModule {
92
+ setContextLimit(limit: number): Promise<void>;
93
+ initContext(params: NativeContextParams): Promise<NativeLlamaContext>;
94
+ loadSession(contextId: number, filepath: string): Promise<NativeSessionLoadResult>;
95
+ saveSession(contextId: number, filepath: string, size: number): Promise<number>;
96
+ completion(contextId: number, params: NativeCompletionParams): Promise<NativeCompletionResult>;
97
+ stopCompletion(contextId: number): Promise<void>;
98
+ tokenize(contextId: number, text: string): Promise<NativeTokenizeResult>;
99
+ detokenize(contextId: number, tokens: number[]): Promise<string>;
100
+ embedding(contextId: number, text: string): Promise<NativeEmbeddingResult>;
101
+ bench(contextId: number, pp: number, tg: number, pl: number, nr: number): Promise<string>;
102
+ releaseContext(contextId: number): Promise<void>;
103
+ releaseAllContexts(): Promise<void>;
104
+ }
105
+ declare const _default: Spec;
106
+ export default _default;
107
+ //# sourceMappingURL=NativeRNLlama.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeRNLlama.d.ts","sourceRoot":"","sources":["../../src/NativeRNLlama.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ declare class BuiltinRule {
2
+ content: string;
3
+ deps: string[];
4
+ constructor(content: string, deps: string[]);
5
+ }
6
+ interface PropOrder {
7
+ [key: string]: number;
8
+ }
9
+ export declare class SchemaGrammarConverter {
10
+ private _propOrder;
11
+ private _allowFetch;
12
+ private _dotall;
13
+ private _rules;
14
+ private _refs;
15
+ private _refsBeingResolved;
16
+ constructor(options: {
17
+ prop_order?: PropOrder;
18
+ allow_fetch?: boolean;
19
+ dotall?: boolean;
20
+ });
21
+ _addRule(name: string, rule: string): string;
22
+ resolveRefs(schema: any, url: string): Promise<any>;
23
+ _generateUnionRule(name: string, altSchemas: any[]): string;
24
+ _visitPattern(pattern: string, name: string): string;
25
+ _resolveRef(ref: string): string;
26
+ visit(schema: any, name: string): string;
27
+ _addPrimitive(name: string, rule: BuiltinRule | undefined): string;
28
+ _buildObjectRule(properties: any[], required: Set<string>, name: string, additionalProperties: any): string;
29
+ formatGrammar(): string;
30
+ }
31
+ export declare const convertJsonSchemaToGrammar: ({ schema, propOrder, dotall, allowFetch, }: {
32
+ schema: any;
33
+ propOrder?: PropOrder | undefined;
34
+ dotall?: boolean | undefined;
35
+ allowFetch?: boolean | undefined;
36
+ }) => string | Promise<string>;
37
+ export {};
38
+ //# sourceMappingURL=grammar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../../src/grammar.ts"],"names":[],"mappings":"AA4EA,cAAM,WAAW;IACf,OAAO,EAAE,MAAM,CAAA;IAEf,IAAI,EAAE,MAAM,EAAE,CAAA;gBAEF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;CAI5C;AA0FD,UAAU,SAAS;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CACtB;AAoBD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,UAAU,CAAW;IAE7B,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,MAAM,CAA2B;IAEzC,OAAO,CAAC,KAAK,CAAwB;IAErC,OAAO,CAAC,kBAAkB,CAAa;gBAE3B,OAAO,EAAE;QACnB,UAAU,CAAC,EAAE,SAAS,CAAA;QACtB,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,MAAM,CAAC,EAAE,OAAO,CAAA;KACjB;IASD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAuBtC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiEzD,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,MAAM;IAW3D,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAmMpD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAWhC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAoKxC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS;IAiBzD,gBAAgB,CACd,UAAU,EAAE,GAAG,EAAE,EACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,IAAI,EAAE,MAAM,EACZ,oBAAoB,EAAE,GAAG;IAmG3B,aAAa;CASd;AAED,eAAO,MAAM,0BAA0B;YAM7B,GAAG;;;;MAIT,MAAM,GAAG,QAAQ,MAAM,CAe1B,CAAA"}
@@ -0,0 +1,46 @@
1
+ import type { NativeContextParams, NativeLlamaContext, NativeCompletionParams, NativeCompletionTokenProb, NativeCompletionResult, NativeTokenizeResult, NativeEmbeddingResult, NativeSessionLoadResult } from './NativeRNLlama';
2
+ import { SchemaGrammarConverter, convertJsonSchemaToGrammar } from './grammar';
3
+ export { SchemaGrammarConverter, convertJsonSchemaToGrammar };
4
+ export type TokenData = {
5
+ token: string;
6
+ completion_probabilities?: Array<NativeCompletionTokenProb>;
7
+ };
8
+ export type ContextParams = NativeContextParams;
9
+ export type CompletionParams = Omit<NativeCompletionParams, 'emit_partial_completion'>;
10
+ export type BenchResult = {
11
+ modelDesc: string;
12
+ modelSize: number;
13
+ modelNParams: number;
14
+ ppAvg: number;
15
+ ppStd: number;
16
+ tgAvg: number;
17
+ tgStd: number;
18
+ };
19
+ export declare class LlamaContext {
20
+ id: number;
21
+ gpu: boolean;
22
+ reasonNoGPU: string;
23
+ model: Object;
24
+ constructor({ contextId, gpu, reasonNoGPU, model, }: NativeLlamaContext);
25
+ /**
26
+ * Load cached prompt & completion state from a file.
27
+ */
28
+ loadSession(filepath: string): Promise<NativeSessionLoadResult>;
29
+ /**
30
+ * Save current cached prompt & completion state to a file.
31
+ */
32
+ saveSession(filepath: string, options?: {
33
+ tokenSize: number;
34
+ }): Promise<number>;
35
+ completion(params: CompletionParams, callback?: (data: TokenData) => void): Promise<NativeCompletionResult>;
36
+ stopCompletion(): Promise<void>;
37
+ tokenize(text: string): Promise<NativeTokenizeResult>;
38
+ detokenize(tokens: number[]): Promise<string>;
39
+ embedding(text: string): Promise<NativeEmbeddingResult>;
40
+ bench(pp: number, tg: number, pl: number, nr: number): Promise<BenchResult>;
41
+ release(): Promise<void>;
42
+ }
43
+ export declare function setContextLimit(limit: number): Promise<void>;
44
+ export declare function initLlama({ model, is_model_asset: isModelAsset, ...rest }: ContextParams): Promise<LlamaContext>;
45
+ export declare function releaseAllLlama(): Promise<void>;
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AAE9E,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,CAAA;AAa7D,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,wBAAwB,CAAC,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAA;CAC5D,CAAA;AAOD,MAAM,MAAM,aAAa,GAAG,mBAAmB,CAAA;AAE/C,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,CAAA;AAEtF,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,qBAAa,YAAY;IACvB,EAAE,EAAE,MAAM,CAAA;IAEV,GAAG,EAAE,OAAO,CAAQ;IAEpB,WAAW,EAAE,MAAM,CAAK;IAExB,KAAK,EAAE,MAAM,CAAK;gBAEN,EACV,SAAS,EACT,GAAG,EACH,WAAW,EACX,KAAK,GACN,EAAE,kBAAkB;IAOrB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIrE;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/E,UAAU,CACd,MAAM,EAAE,gBAAgB,EACxB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GACnC,OAAO,CAAC,sBAAsB,CAAC;IA0BlC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIrD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIjD,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAsB3E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AAED,wBAAsB,SAAS,CAAC,EAC9B,KAAK,EACL,cAAc,EAAE,YAAY,EAC5B,GAAG,IAAI,EACR,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAUvC;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD"}
@@ -0,0 +1,56 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+ base_ld_flags = "-framework Accelerate -framework Foundation -framework Metal -framework MetalKit"
5
+ base_compiler_flags = "-fno-objc-arc -DLM_GGML_USE_ACCELERATE -Wno-shorten-64-to-32"
6
+ folly_compiler_flags = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma"
7
+
8
+ if ENV["RNLLAMA_DISABLE_METAL"] != "1" then
9
+ base_compiler_flags += " -DLM_GGML_USE_METAL" # -DLM_GGML_METAL_NDEBUG
10
+ end
11
+
12
+ # Use base_optimizer_flags = "" for debug builds
13
+ # base_optimizer_flags = ""
14
+ base_optimizer_flags = "-O3 -DNDEBUG"
15
+
16
+ Pod::Spec.new do |s|
17
+ s.name = "llama-rn"
18
+ s.version = package["version"]
19
+ s.summary = package["description"]
20
+ s.homepage = package["homepage"]
21
+ s.license = package["license"]
22
+ s.authors = package["author"]
23
+
24
+ s.platforms = { :ios => "11.0", :tvos => "11.0" }
25
+ s.source = { :git => "https://github.com/mybigday/llama.rn.git", :tag => "#{s.version}" }
26
+
27
+ s.source_files = "ios/**/*.{h,m,mm}", "cpp/**/*.{h,cpp,hpp,c,m,mm}"
28
+ s.resources = "cpp/**/*.{metallib}"
29
+
30
+ s.dependency "React-Core"
31
+
32
+ s.compiler_flags = base_compiler_flags
33
+ s.pod_target_xcconfig = {
34
+ "OTHER_LDFLAGS" => base_ld_flags,
35
+ "OTHER_CFLAGS" => base_optimizer_flags,
36
+ "OTHER_CPLUSPLUSFLAGS" => base_optimizer_flags
37
+ }
38
+
39
+ # Don't install the dependencies when we run `pod install` in the old architecture.
40
+ if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
41
+ s.compiler_flags = base_compiler_flags + " " + folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
42
+ new_arch_cpp_flags = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1"
43
+ s.pod_target_xcconfig = {
44
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
45
+ "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
46
+ "OTHER_LDFLAGS" => "-framework Accelerate",
47
+ "OTHER_CFLAGS" => base_optimizer_flags,
48
+ "OTHER_CPLUSPLUSFLAGS" => new_arch_cpp_flags + " " + base_optimizer_flags
49
+ }
50
+ s.dependency "React-Codegen"
51
+ s.dependency "RCT-Folly"
52
+ s.dependency "RCTRequired"
53
+ s.dependency "RCTTypeSafety"
54
+ s.dependency "ReactCommon/turbomodule/core"
55
+ end
56
+ end
package/package.json ADDED
@@ -0,0 +1,230 @@
1
+ {
2
+ "name": "cui-llama.rn",
3
+ "version": "0.2.0",
4
+ "description": "Fork of llama.rn for ChatterUI",
5
+ "main": "lib/commonjs/index",
6
+ "module": "lib/module/index",
7
+ "types": "lib/typescript/index.d.ts",
8
+ "react-native": "src/index",
9
+ "source": "src/index",
10
+ "files": [
11
+ "src",
12
+ "lib",
13
+ "jest",
14
+ "ios",
15
+ "android",
16
+ "cpp/*.*",
17
+ "*.podspec",
18
+ "!lib/typescript/example",
19
+ "!ios/build",
20
+ "!android/build",
21
+ "!android/gradle",
22
+ "!android/gradlew",
23
+ "!android/gradlew.bat",
24
+ "!android/local.properties",
25
+ "!**/__tests__",
26
+ "!**/__fixtures__",
27
+ "!**/__mocks__",
28
+ "!**/.*"
29
+ ],
30
+ "scripts": {
31
+ "bootstrap": "./scripts/bootstrap.sh",
32
+ "docgen": "typedoc src/index.ts --plugin typedoc-plugin-markdown --readme none --out docs/API",
33
+ "test": "jest",
34
+ "typecheck": "tsc --noEmit",
35
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
36
+ "prepack": "bob build",
37
+ "release": "release-it",
38
+ "example": "yarn --cwd example",
39
+ "build:ios": "cd example/ios && xcodebuild -workspace RNLlamaExample.xcworkspace -scheme RNLlamaExample -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO",
40
+ "build:android": "cd example/android && ./gradlew assembleDebug",
41
+ "clean": "del-cli example/ios/build"
42
+ },
43
+ "keywords": [
44
+ "react-native",
45
+ "ios",
46
+ "android",
47
+ "large language model",
48
+ "LLM",
49
+ "Local LLM",
50
+ "llama.cpp",
51
+ "llama",
52
+ "llama-2"
53
+ ],
54
+ "repository": "https://github.com/Vali-98/cui-llama.rn",
55
+ "author": "Original: Jhen-Jie Hong <developer@jhen.me> (https://github.com/mybigday), Fork: Vali-98 (https://github.com/Vali-98/cui-llama.rn) ",
56
+ "license": "MIT",
57
+ "bugs": {
58
+ "url": "https://github.com/Vali-98/cui-llama.rn/issues"
59
+ },
60
+ "homepage": "https://github.com/Vali-98/cui-llama.rn#readme",
61
+ "publishConfig": {
62
+ "registry": "https://registry.npmjs.org/"
63
+ },
64
+ "devDependencies": {
65
+ "@commitlint/config-conventional": "^17.0.2",
66
+ "@evilmartians/lefthook": "^1.2.2",
67
+ "@fugood/eslint-config-react": "^0.5.0",
68
+ "@react-native-community/eslint-config": "^3.0.2",
69
+ "@release-it/conventional-changelog": "^5.0.0",
70
+ "@types/jest": "^28.1.2",
71
+ "@types/react": "~17.0.21",
72
+ "@types/react-native": "0.70.0",
73
+ "commitlint": "^17.0.2",
74
+ "del-cli": "^5.0.0",
75
+ "eslint": "^8.4.1",
76
+ "jest": "^28.1.1",
77
+ "pod-install": "^0.1.0",
78
+ "prettier": "^2.0.5",
79
+ "react": "18.2.0",
80
+ "react-native": "0.72.3",
81
+ "react-native-builder-bob": "^0.20.0",
82
+ "release-it": "^15.0.0",
83
+ "typedoc": "^0.24.7",
84
+ "typedoc-plugin-markdown": "^3.15.3",
85
+ "typescript": "^5.0.2"
86
+ },
87
+ "resolutions": {
88
+ "@types/react": "17.0.21"
89
+ },
90
+ "peerDependencies": {
91
+ "react": "*",
92
+ "react-native": "*"
93
+ },
94
+ "engines": {
95
+ "node": ">= 16.0.0"
96
+ },
97
+ "jest": {
98
+ "preset": "react-native",
99
+ "modulePathIgnorePatterns": [
100
+ "<rootDir>/example/node_modules",
101
+ "<rootDir>/lib/"
102
+ ]
103
+ },
104
+ "commitlint": {
105
+ "extends": [
106
+ "@commitlint/config-conventional"
107
+ ]
108
+ },
109
+ "release-it": {
110
+ "git": {
111
+ "commitMessage": "chore: release ${version}",
112
+ "tagName": "v${version}"
113
+ },
114
+ "npm": {
115
+ "publish": true,
116
+ "skipChecks": true
117
+ },
118
+ "github": {
119
+ "release": true
120
+ },
121
+ "plugins": {
122
+ "@release-it/conventional-changelog": {
123
+ "preset": "angular"
124
+ }
125
+ }
126
+ },
127
+ "eslintConfig": {
128
+ "extends": "@fugood/eslint-config-react",
129
+ "env": {
130
+ "browser": true,
131
+ "jest": true
132
+ },
133
+ "globals": {},
134
+ "rules": {
135
+ "react/no-array-index-key": 0,
136
+ "global-require": 0
137
+ },
138
+ "overrides": [
139
+ {
140
+ "files": [
141
+ "*.ts",
142
+ "*.tsx"
143
+ ],
144
+ "parser": "@typescript-eslint/parser",
145
+ "plugins": [
146
+ "@typescript-eslint/eslint-plugin"
147
+ ],
148
+ "rules": {
149
+ "@typescript-eslint/no-unused-vars": [
150
+ "error",
151
+ {
152
+ "argsIgnorePattern": "^_",
153
+ "destructuredArrayIgnorePattern": "^_"
154
+ }
155
+ ],
156
+ "no-unused-vars": "off",
157
+ "no-shadow": "off",
158
+ "@typescript-eslint/no-shadow": 1,
159
+ "no-undef": "off",
160
+ "func-call-spacing": "off",
161
+ "@typescript-eslint/func-call-spacing": 1,
162
+ "import/extensions": [
163
+ "error",
164
+ "ignorePackages",
165
+ {
166
+ "js": "never",
167
+ "jsx": "never",
168
+ "ts": "never",
169
+ "tsx": "never"
170
+ }
171
+ ],
172
+ "react/jsx-filename-extension": [
173
+ 1,
174
+ {
175
+ "extensions": [
176
+ ".js",
177
+ ".jsx",
178
+ ".tsx"
179
+ ]
180
+ }
181
+ ]
182
+ }
183
+ }
184
+ ],
185
+ "settings": {
186
+ "import/resolver": {
187
+ "node": {
188
+ "extensions": [
189
+ ".js",
190
+ ".jsx",
191
+ ".ts",
192
+ ".tsx"
193
+ ]
194
+ }
195
+ }
196
+ }
197
+ },
198
+ "eslintIgnore": [
199
+ "node_modules/",
200
+ "lib/",
201
+ "*.d.ts",
202
+ "llama.cpp/"
203
+ ],
204
+ "prettier": {
205
+ "trailingComma": "all",
206
+ "tabWidth": 2,
207
+ "semi": false,
208
+ "singleQuote": true,
209
+ "printWidth": 80
210
+ },
211
+ "react-native-builder-bob": {
212
+ "source": "src",
213
+ "output": "lib",
214
+ "targets": [
215
+ "commonjs",
216
+ "module",
217
+ [
218
+ "typescript",
219
+ {
220
+ "project": "tsconfig.build.json"
221
+ }
222
+ ]
223
+ ]
224
+ },
225
+ "codegenConfig": {
226
+ "name": "RNLlamaSpec",
227
+ "type": "modules",
228
+ "jsSrcsDir": "src"
229
+ }
230
+ }