@dinilmusick/gutts 0.1.2 → 1.0.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 (100) hide show
  1. package/.krusbl-release-attestation.json +8 -0
  2. package/README.md +15 -6
  3. package/dist/api/api-registry.d.ts +4 -0
  4. package/dist/api/api-registry.d.ts.map +1 -0
  5. package/dist/api/api-registry.js +26 -0
  6. package/dist/api/api-registry.js.map +1 -0
  7. package/dist/api/api-types.d.ts +37 -0
  8. package/dist/api/api-types.d.ts.map +1 -0
  9. package/dist/api/api-types.js +2 -0
  10. package/dist/api/api-types.js.map +1 -0
  11. package/dist/api/array-apis.d.ts +3 -0
  12. package/dist/api/array-apis.d.ts.map +1 -0
  13. package/dist/api/array-apis.js +11 -0
  14. package/dist/api/array-apis.js.map +1 -0
  15. package/dist/api/define-api.d.ts +3 -0
  16. package/dist/api/define-api.d.ts.map +1 -0
  17. package/dist/api/define-api.js +22 -0
  18. package/dist/api/define-api.js.map +1 -0
  19. package/dist/api/index.d.ts +4 -0
  20. package/dist/api/index.d.ts.map +1 -0
  21. package/dist/api/index.js +3 -0
  22. package/dist/api/index.js.map +1 -0
  23. package/dist/api/json-apis.d.ts +3 -0
  24. package/dist/api/json-apis.d.ts.map +1 -0
  25. package/dist/api/json-apis.js +9 -0
  26. package/dist/api/json-apis.js.map +1 -0
  27. package/dist/api/number-apis.d.ts +3 -0
  28. package/dist/api/number-apis.d.ts.map +1 -0
  29. package/dist/api/number-apis.js +9 -0
  30. package/dist/api/number-apis.js.map +1 -0
  31. package/dist/api/object-apis.d.ts +3 -0
  32. package/dist/api/object-apis.d.ts.map +1 -0
  33. package/dist/api/object-apis.js +8 -0
  34. package/dist/api/object-apis.js.map +1 -0
  35. package/dist/api/string-apis.d.ts +3 -0
  36. package/dist/api/string-apis.d.ts.map +1 -0
  37. package/dist/api/string-apis.js +16 -0
  38. package/dist/api/string-apis.js.map +1 -0
  39. package/dist/api/url-apis.d.ts +3 -0
  40. package/dist/api/url-apis.d.ts.map +1 -0
  41. package/dist/api/url-apis.js +9 -0
  42. package/dist/api/url-apis.js.map +1 -0
  43. package/dist/index.d.ts +2 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +2 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/models/ettin/index.d.ts +115 -0
  48. package/dist/models/ettin/index.d.ts.map +1 -0
  49. package/dist/models/ettin/index.js +62 -0
  50. package/dist/models/ettin/index.js.map +1 -0
  51. package/dist/models/index.d.ts +10 -0
  52. package/dist/models/index.d.ts.map +1 -0
  53. package/dist/models/index.js +9 -0
  54. package/dist/models/index.js.map +1 -0
  55. package/dist/models/minilm/index.d.ts +39 -0
  56. package/dist/models/minilm/index.d.ts.map +1 -0
  57. package/dist/models/minilm/index.js +41 -0
  58. package/dist/models/minilm/index.js.map +1 -0
  59. package/dist/models/model-library.d.ts +10 -0
  60. package/dist/models/model-library.d.ts.map +1 -0
  61. package/dist/models/model-library.js +14 -0
  62. package/dist/models/model-library.js.map +1 -0
  63. package/dist/models/model-registry.d.ts +4 -0
  64. package/dist/models/model-registry.d.ts.map +1 -0
  65. package/dist/models/model-registry.js +17 -0
  66. package/dist/models/model-registry.js.map +1 -0
  67. package/dist/models/model-residency.d.ts +11 -0
  68. package/dist/models/model-residency.d.ts.map +1 -0
  69. package/dist/models/model-residency.js +49 -0
  70. package/dist/models/model-residency.js.map +1 -0
  71. package/dist/models/model-types.d.ts +45 -0
  72. package/dist/models/model-types.d.ts.map +1 -0
  73. package/dist/models/model-types.js +2 -0
  74. package/dist/models/model-types.js.map +1 -0
  75. package/dist/models/needle3/index.d.ts +43 -0
  76. package/dist/models/needle3/index.d.ts.map +1 -0
  77. package/dist/models/needle3/index.js +44 -0
  78. package/dist/models/needle3/index.js.map +1 -0
  79. package/dist/models/runtimes/cactus.d.ts +6 -0
  80. package/dist/models/runtimes/cactus.d.ts.map +1 -0
  81. package/dist/models/runtimes/cactus.js +41 -0
  82. package/dist/models/runtimes/cactus.js.map +1 -0
  83. package/dist/models/runtimes/ettin-head.d.ts +13 -0
  84. package/dist/models/runtimes/ettin-head.d.ts.map +1 -0
  85. package/dist/models/runtimes/ettin-head.js +88 -0
  86. package/dist/models/runtimes/ettin-head.js.map +1 -0
  87. package/dist/models/runtimes/transformers.d.ts +8 -0
  88. package/dist/models/runtimes/transformers.d.ts.map +1 -0
  89. package/dist/models/runtimes/transformers.js +141 -0
  90. package/dist/models/runtimes/transformers.js.map +1 -0
  91. package/dist/models/smollm2/index.d.ts +39 -0
  92. package/dist/models/smollm2/index.d.ts.map +1 -0
  93. package/dist/models/smollm2/index.js +42 -0
  94. package/dist/models/smollm2/index.js.map +1 -0
  95. package/dist/models/whistle/index.d.ts +38 -0
  96. package/dist/models/whistle/index.d.ts.map +1 -0
  97. package/dist/models/whistle/index.js +40 -0
  98. package/dist/models/whistle/index.js.map +1 -0
  99. package/gutts.manifest.json +7 -3
  100. package/package.json +25 -9
@@ -0,0 +1,62 @@
1
+ import { defineApi } from "../../api/define-api.js";
2
+ import { ModelLibrary } from "../model-library.js";
3
+ import { ettinRuntime } from "../runtimes/transformers.js";
4
+ const defineEttin = (id, name, parameters, description) => ({
5
+ id, name, provider: "Hugging Face", version: String(parameters),
6
+ description,
7
+ examples: ["rank search results", "order retrieved documents by relevance"],
8
+ whenToUse: "Use for cross-encoder reranking when candidate texts must be sorted by semantic relevance.",
9
+ avoidWhen: "Avoid for text generation, embeddings, or transcription.",
10
+ size: { value: parameters * 1_000_000, unit: "parameters", qualifier: "parameters" },
11
+ capabilities: ["reranking", "relevance-scoring"],
12
+ input: "Query and candidate texts", output: "Candidate relevance scores",
13
+ runtime: "ModelRuntime adapter", modelUri: `cross-encoder/ettin-reranker-${parameters}m-v1`,
14
+ license: "Apache-2.0",
15
+ });
16
+ export const ettinReranker17MMetadata = defineEttin("model.ettin-reranker-17m", "Ettin-Reranker-17M", 17, "Very small relevance model for ranking candidate text.");
17
+ export const ettinReranker32MMetadata = defineEttin("model.ettin-reranker-32m", "Ettin-Reranker-32M", 32, "Small relevance model for ranking candidate text.");
18
+ export const ettinReranker68MMetadata = defineEttin("model.ettin-reranker-68m", "Ettin-Reranker-68M", 68, "Compact relevance model for higher-quality candidate ranking.");
19
+ export const ettinReranker150MMetadata = defineEttin("model.ettin-reranker-150m", "Ettin-Reranker-150M", 150, "Larger compact relevance model for candidate ranking.");
20
+ export const ettinRerankApi = defineApi({
21
+ id: "model.ettin-reranker.rerank",
22
+ name: "EttinReranker.rerank",
23
+ category: "models",
24
+ description: "Rank candidate texts by relevance to a query.",
25
+ parameters: [
26
+ { name: "query", description: "Query text.", required: true, schema: { type: "string" } },
27
+ { name: "candidates", description: "Candidate texts to rank.", required: true, schema: { type: "array", items: { type: "string" } } },
28
+ ],
29
+ output: { type: "array", description: "Relevance scores in candidate order.", items: { type: "number" } },
30
+ semantics: { deterministic: true, pure: false, sideEffects: false },
31
+ });
32
+ export class EttinReranker extends ModelLibrary {
33
+ modelMetadata;
34
+ constructor(modelMetadata = ettinReranker17MMetadata, runtime = ettinRuntime) {
35
+ super(modelMetadata, runtime);
36
+ this.modelMetadata = modelMetadata;
37
+ }
38
+ rerank(input) {
39
+ return this.withModel((model) => model.rerank(input));
40
+ }
41
+ }
42
+ export class EttinReranker17M extends EttinReranker {
43
+ constructor(runtime = ettinRuntime) {
44
+ super(ettinReranker17MMetadata, runtime);
45
+ }
46
+ }
47
+ export class EttinReranker32M extends EttinReranker {
48
+ constructor(runtime = ettinRuntime) {
49
+ super(ettinReranker32MMetadata, runtime);
50
+ }
51
+ }
52
+ export class EttinReranker68M extends EttinReranker {
53
+ constructor(runtime = ettinRuntime) {
54
+ super(ettinReranker68MMetadata, runtime);
55
+ }
56
+ }
57
+ export class EttinReranker150M extends EttinReranker {
58
+ constructor(runtime = ettinRuntime) {
59
+ super(ettinReranker150MMetadata, runtime);
60
+ }
61
+ }
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/ettin/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type { ModelMetadata, ModelLoadContext, ModelRuntime, ModelLease, ModelLoader, ModelUnloader } from "./model-types.js";
2
+ export { ModelResidency } from "./model-residency.js";
3
+ export { ModelLibrary } from "./model-library.js";
4
+ export { guttsModelDefinitions, guttsModelById } from "./model-registry.js";
5
+ export { Needle3, needle3CompleteApi, needle3Metadata } from "./needle3/index.js";
6
+ export { SmolLM2, smolLM2GenerateApi, smolLM2Metadata } from "./smollm2/index.js";
7
+ export { Whistle, whistleTranscribeApi, whistleMetadata } from "./whistle/index.js";
8
+ export { EttinReranker, EttinReranker17M, EttinReranker32M, EttinReranker68M, EttinReranker150M, ettinRerankApi, ettinReranker17MMetadata, ettinReranker32MMetadata, ettinReranker68MMetadata, ettinReranker150MMetadata } from "./ettin/index.js";
9
+ export { MiniLM, miniLMSimilarityApi, miniLML6Metadata } from "./minilm/index.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC5H,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAC,qBAAqB,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AACjP,OAAO,EAAC,MAAM,EAAE,mBAAmB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { ModelResidency } from "./model-residency.js";
2
+ export { ModelLibrary } from "./model-library.js";
3
+ export { guttsModelDefinitions, guttsModelById } from "./model-registry.js";
4
+ export { Needle3, needle3CompleteApi, needle3Metadata } from "./needle3/index.js";
5
+ export { SmolLM2, smolLM2GenerateApi, smolLM2Metadata } from "./smollm2/index.js";
6
+ export { Whistle, whistleTranscribeApi, whistleMetadata } from "./whistle/index.js";
7
+ export { EttinReranker, EttinReranker17M, EttinReranker32M, EttinReranker68M, EttinReranker150M, ettinRerankApi, ettinReranker17MMetadata, ettinReranker32MMetadata, ettinReranker68MMetadata, ettinReranker150MMetadata } from "./ettin/index.js";
8
+ export { MiniLM, miniLMSimilarityApi, miniLML6Metadata } from "./minilm/index.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAC,qBAAqB,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AACjP,OAAO,EAAC,MAAM,EAAE,mBAAmB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { ModelLibrary } from "../model-library.js";
2
+ import type { ModelRuntime } from "../model-types.js";
3
+ export type MiniLMModel = {
4
+ similarity(input: {
5
+ left: string;
6
+ right: string;
7
+ }): Promise<number>;
8
+ dispose?: () => Promise<void>;
9
+ };
10
+ export declare const miniLML6Metadata: {
11
+ readonly id: "model.minilm-l6-v2";
12
+ readonly name: "MiniLM-L6-v2";
13
+ readonly provider: "Sentence Transformers";
14
+ readonly version: "L6-v2";
15
+ readonly description: "Compact sentence embedding model for semantic similarity.";
16
+ readonly examples: readonly ["compare two texts", "match a query to a short description"];
17
+ readonly avoidWhen: "Avoid when generation, extraction, or tool calling is required.";
18
+ readonly whenToUse: "Use for lightweight semantic similarity and embedding-based matching.";
19
+ readonly size: {
20
+ readonly value: 22700000;
21
+ readonly unit: "parameters";
22
+ readonly qualifier: "parameters";
23
+ };
24
+ readonly capabilities: readonly ["embeddings", "semantic-similarity"];
25
+ readonly input: "Two text strings";
26
+ readonly output: "Similarity score";
27
+ readonly runtime: "ModelRuntime adapter";
28
+ readonly modelUri: "sentence-transformers/all-MiniLM-L6-v2";
29
+ readonly license: "Apache-2.0";
30
+ };
31
+ export declare const miniLMSimilarityApi: import("../../index.js").ApiDefinition;
32
+ export declare class MiniLM extends ModelLibrary<MiniLMModel> {
33
+ constructor(runtime?: ModelRuntime<MiniLMModel>);
34
+ similarity(input: {
35
+ left: string;
36
+ right: string;
37
+ }): Promise<number>;
38
+ }
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/minilm/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAGpD,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,CAAC,KAAK,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;CAgBnB,CAAC;AAEX,eAAO,MAAM,mBAAmB,wCAW9B,CAAC;AAEH,qBAAa,MAAO,SAAQ,YAAY,CAAC,WAAW,CAAC;gBACvC,OAAO,GAAE,YAAY,CAAC,WAAW,CAAiB;IAI9D,UAAU,CAAC,KAAK,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAGlE"}
@@ -0,0 +1,41 @@
1
+ import { defineApi } from "../../api/define-api.js";
2
+ import { ModelLibrary } from "../model-library.js";
3
+ import { miniLMRuntime } from "../runtimes/transformers.js";
4
+ export const miniLML6Metadata = {
5
+ id: "model.minilm-l6-v2",
6
+ name: "MiniLM-L6-v2",
7
+ provider: "Sentence Transformers",
8
+ version: "L6-v2",
9
+ description: "Compact sentence embedding model for semantic similarity.",
10
+ examples: ["compare two texts", "match a query to a short description"],
11
+ avoidWhen: "Avoid when generation, extraction, or tool calling is required.",
12
+ whenToUse: "Use for lightweight semantic similarity and embedding-based matching.",
13
+ size: { value: 22_700_000, unit: "parameters", qualifier: "parameters" },
14
+ capabilities: ["embeddings", "semantic-similarity"],
15
+ input: "Two text strings",
16
+ output: "Similarity score",
17
+ runtime: "ModelRuntime adapter",
18
+ modelUri: "sentence-transformers/all-MiniLM-L6-v2",
19
+ license: "Apache-2.0",
20
+ };
21
+ export const miniLMSimilarityApi = defineApi({
22
+ id: "model.minilm-l6-v2.similarity",
23
+ name: "MiniLM-L6-v2.similarity",
24
+ category: "models",
25
+ description: "Compute semantic similarity between two texts.",
26
+ parameters: [
27
+ { name: "left", description: "First text.", required: true, schema: { type: "string" } },
28
+ { name: "right", description: "Second text.", required: true, schema: { type: "string" } },
29
+ ],
30
+ output: { type: "number", description: "Semantic similarity score." },
31
+ semantics: { deterministic: true, pure: false, sideEffects: false },
32
+ });
33
+ export class MiniLM extends ModelLibrary {
34
+ constructor(runtime = miniLMRuntime) {
35
+ super(miniLML6Metadata, runtime);
36
+ }
37
+ similarity(input) {
38
+ return this.withModel((model) => model.similarity(input));
39
+ }
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/minilm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAO1D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,uBAAuB;IACjC,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,2DAA2D;IACxE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;IACvE,SAAS,EAAE,iEAAiE;IAC5E,SAAS,EAAE,uEAAuE;IAClF,IAAI,EAAE,EAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,YAAqB,EAAE,SAAS,EAAE,YAAqB,EAAC;IACxF,YAAY,EAAE,CAAC,YAAY,EAAE,qBAAqB,CAAC;IACnD,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,kBAAkB;IAC1B,OAAO,EAAE,sBAAsB;IAC/B,QAAQ,EAAE,wCAAwC;IAClD,OAAO,EAAE,YAAY;CACb,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;IAC3C,EAAE,EAAE,+BAA+B;IACnC,IAAI,EAAE,yBAAyB;IAC/B,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,gDAAgD;IAC7D,UAAU,EAAE;QACV,EAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAC;QACpF,EAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAC;KACvF;IACD,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAC;IACnE,SAAS,EAAE,EAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAC;CAClE,CAAC,CAAC;AAEH,MAAM,OAAO,MAAO,SAAQ,YAAyB;IACnD,YAAY,UAAqC,aAAa;QAC5D,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,KAAoC;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import { ModelResidency } from "./model-residency.js";
2
+ import type { ModelMetadata, ModelRuntime } from "./model-types.js";
3
+ export declare abstract class ModelLibrary<TModel> {
4
+ readonly metadata: ModelMetadata;
5
+ readonly runtime: ModelRuntime<TModel>;
6
+ readonly residency: ModelResidency<TModel>;
7
+ protected constructor(metadata: ModelMetadata, runtime: ModelRuntime<TModel>);
8
+ withModel<T>(operation: (model: TModel) => Promise<T>): Promise<T>;
9
+ }
10
+ //# sourceMappingURL=model-library.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-library.d.ts","sourceRoot":"","sources":["../../src/models/model-library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAElE,8BAAsB,YAAY,CAAC,MAAM;IAIrC,QAAQ,CAAC,QAAQ,EAAE,aAAa;IAChC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC;IAJxC,QAAQ,CAAC,SAAS,yBAAgC;IAElD,SAAS,aACE,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC;IAGxC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAOnE"}
@@ -0,0 +1,14 @@
1
+ import { ModelResidency } from "./model-residency.js";
2
+ export class ModelLibrary {
3
+ metadata;
4
+ runtime;
5
+ residency = new ModelResidency();
6
+ constructor(metadata, runtime) {
7
+ this.metadata = metadata;
8
+ this.runtime = runtime;
9
+ }
10
+ withModel(operation) {
11
+ return this.residency.run(() => this.runtime.load(this.metadata), (model) => this.runtime.unload(model), operation);
12
+ }
13
+ }
14
+ //# sourceMappingURL=model-library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-library.js","sourceRoot":"","sources":["../../src/models/model-library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAGpD,MAAM,OAAgB,YAAY;IAIrB;IACA;IAJF,SAAS,GAAG,IAAI,cAAc,EAAU,CAAC;IAElD,YACW,QAAuB,EACvB,OAA6B;QAD7B,aAAQ,GAAR,QAAQ,CAAe;QACvB,YAAO,GAAP,OAAO,CAAsB;IACrC,CAAC;IAEJ,SAAS,CAAI,SAAwC;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CACvB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EACtC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EACrC,SAAS,CACV,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import type { ModelMetadata } from "./model-types.js";
2
+ export declare const guttsModelDefinitions: readonly ModelMetadata[];
3
+ export declare const guttsModelById: Readonly<Record<string, ModelMetadata>>;
4
+ //# sourceMappingURL=model-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/models/model-registry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,EAAE,SAAS,aAAa,EASxD,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAElE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { ettinReranker150MMetadata, ettinReranker17MMetadata, ettinReranker32MMetadata, ettinReranker68MMetadata } from "./ettin/index.js";
2
+ import { miniLML6Metadata } from "./minilm/index.js";
3
+ import { needle3Metadata } from "./needle3/index.js";
4
+ import { smolLM2Metadata } from "./smollm2/index.js";
5
+ import { whistleMetadata } from "./whistle/index.js";
6
+ export const guttsModelDefinitions = Object.freeze([
7
+ smolLM2Metadata,
8
+ needle3Metadata,
9
+ whistleMetadata,
10
+ ettinReranker17MMetadata,
11
+ ettinReranker32MMetadata,
12
+ ettinReranker68MMetadata,
13
+ ettinReranker150MMetadata,
14
+ miniLML6Metadata,
15
+ ]);
16
+ export const guttsModelById = Object.freeze(Object.fromEntries(guttsModelDefinitions.map((model) => [model.id, model])));
17
+ //# sourceMappingURL=model-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/models/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,wBAAwB,EAAC,MAAM,kBAAkB,CAAC;AACzI,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAGnD,MAAM,CAAC,MAAM,qBAAqB,GAA6B,MAAM,CAAC,MAAM,CAAC;IAC3E,eAAe;IACf,eAAe;IACf,eAAe;IACf,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,yBAAyB;IACzB,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAA4C,MAAM,CAAC,MAAM,CAClF,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAC5E,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ModelLoader, ModelUnloader } from "./model-types.js";
2
+ export declare class ModelResidency<TModel> {
3
+ private entry?;
4
+ private loading?;
5
+ private unloading?;
6
+ run<T>(load: ModelLoader<TModel>, unload: ModelUnloader<TModel>, operation: (model: TModel) => Promise<T>): Promise<T>;
7
+ get activeUsers(): number;
8
+ get isLoaded(): boolean;
9
+ private loadOnce;
10
+ }
11
+ //# sourceMappingURL=model-residency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-residency.d.ts","sourceRoot":"","sources":["../../src/models/model-residency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAOjE,qBAAa,cAAc,CAAC,MAAM;IAChC,OAAO,CAAC,KAAK,CAAC,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAAC,CAA8B;IAC9C,OAAO,CAAC,SAAS,CAAC,CAA4B;IAExC,GAAG,CAAC,CAAC,EACT,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GACvC,OAAO,CAAC,CAAC,CAAC;IA+Bb,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;YAEa,QAAQ;CAQvB"}
@@ -0,0 +1,49 @@
1
+ export class ModelResidency {
2
+ entry;
3
+ loading;
4
+ unloading;
5
+ async run(load, unload, operation) {
6
+ if (this.unloading) {
7
+ await this.unloading;
8
+ }
9
+ if (!this.entry) {
10
+ this.entry = { users: 0 };
11
+ }
12
+ const entry = this.entry;
13
+ entry.users += 1;
14
+ try {
15
+ if (!entry.model) {
16
+ entry.model = await this.loadOnce(load);
17
+ }
18
+ return await operation(entry.model);
19
+ }
20
+ finally {
21
+ entry.users -= 1;
22
+ if (entry.users === 0 && this.entry === entry) {
23
+ this.entry = undefined;
24
+ if (entry.model) {
25
+ const modelToUnload = entry.model;
26
+ this.unloading = unload(modelToUnload).finally(() => {
27
+ this.unloading = undefined;
28
+ });
29
+ await this.unloading;
30
+ }
31
+ }
32
+ }
33
+ }
34
+ get activeUsers() {
35
+ return this.entry?.users ?? 0;
36
+ }
37
+ get isLoaded() {
38
+ return this.entry?.model !== undefined;
39
+ }
40
+ async loadOnce(load) {
41
+ if (!this.loading) {
42
+ this.loading = load().finally(() => {
43
+ this.loading = undefined;
44
+ });
45
+ }
46
+ return this.loading;
47
+ }
48
+ }
49
+ //# sourceMappingURL=model-residency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-residency.js","sourceRoot":"","sources":["../../src/models/model-residency.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,cAAc;IACjB,KAAK,CAA6B;IAClC,OAAO,CAA+B;IACtC,SAAS,CAA6B;IAE9C,KAAK,CAAC,GAAG,CACP,IAAyB,EACzB,MAA6B,EAC7B,SAAwC;QAExC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC;QAC1B,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAEjB,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACjB,KAAK,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;YACjB,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC9C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBACvB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;oBAClC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;wBAClD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC7B,CAAC,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,SAAS,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,IAAyB;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACjC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,45 @@
1
+ export type ModelSize = {
2
+ value: number;
3
+ unit: "MB" | "GB";
4
+ qualifier: "artifact";
5
+ } | {
6
+ value: number;
7
+ unit: "parameters";
8
+ qualifier: "parameters";
9
+ } | {
10
+ min: number;
11
+ max: number;
12
+ unit: "MB" | "GB";
13
+ qualifier: "range";
14
+ };
15
+ export type ModelMetadata = {
16
+ id: string;
17
+ name: string;
18
+ provider: string;
19
+ version: string;
20
+ description: string;
21
+ examples: readonly string[];
22
+ whenToUse: string;
23
+ avoidWhen: string;
24
+ size: ModelSize;
25
+ capabilities: readonly string[];
26
+ input: string;
27
+ output: string;
28
+ runtime: string;
29
+ modelUri?: string;
30
+ license?: string;
31
+ };
32
+ export type ModelLoadContext = {
33
+ signal?: AbortSignal;
34
+ };
35
+ export type ModelRuntime<TModel> = {
36
+ load(metadata: ModelMetadata, context?: ModelLoadContext): Promise<TModel>;
37
+ unload(model: TModel): Promise<void>;
38
+ };
39
+ export type ModelLease<TModel> = {
40
+ model: TModel;
41
+ release(): Promise<void>;
42
+ };
43
+ export type ModelLoader<TModel> = () => Promise<TModel>;
44
+ export type ModelUnloader<TModel> = (model: TModel) => Promise<void>;
45
+ //# sourceMappingURL=model-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-types.d.ts","sourceRoot":"","sources":["../../src/models/model-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,GACzD;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,YAAY,CAAA;CAAC,GAC5D;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAC,CAAC;AAEtE,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,MAAM,IAAI;IACjC,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,MAAM,IAAI;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,MAAM,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AACxD,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=model-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-types.js","sourceRoot":"","sources":["../../src/models/model-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ import { ModelLibrary } from "../model-library.js";
2
+ import type { ModelRuntime } from "../model-types.js";
3
+ export type Needle3Model = {
4
+ complete(input: {
5
+ prompt: string;
6
+ tools?: readonly unknown[];
7
+ schema?: unknown;
8
+ }): Promise<unknown>;
9
+ embed(input: string): Promise<readonly number[] | Float32Array>;
10
+ close?: () => Promise<void>;
11
+ };
12
+ export declare const needle3Metadata: {
13
+ readonly id: "model.cactus-needle3";
14
+ readonly name: "Needle 3";
15
+ readonly provider: "Cactus Compute";
16
+ readonly version: "3";
17
+ readonly description: "Tiny structured inference model for tool selection, argument extraction, classification, and embeddings.";
18
+ readonly examples: readonly ["select a tool", "extract fields", "classify an intent"];
19
+ readonly avoidWhen: "Avoid for open-ended long-form generation or complex multi-step reasoning.";
20
+ readonly whenToUse: "Use when natural language must be mapped to a small tool set or structured schema.";
21
+ readonly size: {
22
+ readonly min: 8;
23
+ readonly max: 29;
24
+ readonly unit: "MB";
25
+ readonly qualifier: "range";
26
+ };
27
+ readonly capabilities: readonly ["tool-selection", "argument-extraction", "classification", "structured-output", "embeddings"];
28
+ readonly input: "Natural-language text with optional tools or extraction schema";
29
+ readonly output: "Structured JSON or embedding vector";
30
+ readonly runtime: "Cactus Needle runtime adapter";
31
+ readonly modelUri: "Cactus-Compute/needle3";
32
+ };
33
+ export declare const needle3CompleteApi: import("../../index.js").ApiDefinition;
34
+ export declare class Needle3 extends ModelLibrary<Needle3Model> {
35
+ constructor(runtime?: ModelRuntime<Needle3Model>);
36
+ complete(input: {
37
+ prompt: string;
38
+ tools?: readonly unknown[];
39
+ schema?: unknown;
40
+ }): Promise<unknown>;
41
+ embed(input: string): Promise<readonly number[] | Float32Array>;
42
+ }
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/needle3/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAGpD,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,KAAK,EAAE;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC;IAChE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;CAelB,CAAC;AAEX,eAAO,MAAM,kBAAkB,wCAY7B,CAAC;AAEH,qBAAa,OAAQ,SAAQ,YAAY,CAAC,YAAY,CAAC;gBACzC,OAAO,GAAE,YAAY,CAAC,YAAY,CAAwB;IAItE,QAAQ,CAAC,KAAK,EAAE;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,YAAY,CAAC;CAGhE"}
@@ -0,0 +1,44 @@
1
+ import { defineApi } from "../../api/define-api.js";
2
+ import { ModelLibrary } from "../model-library.js";
3
+ import { cactusNeedle3Runtime } from "../runtimes/cactus.js";
4
+ export const needle3Metadata = {
5
+ id: "model.cactus-needle3",
6
+ name: "Needle 3",
7
+ provider: "Cactus Compute",
8
+ version: "3",
9
+ description: "Tiny structured inference model for tool selection, argument extraction, classification, and embeddings.",
10
+ examples: ["select a tool", "extract fields", "classify an intent"],
11
+ avoidWhen: "Avoid for open-ended long-form generation or complex multi-step reasoning.",
12
+ whenToUse: "Use when natural language must be mapped to a small tool set or structured schema.",
13
+ size: { min: 8, max: 29, unit: "MB", qualifier: "range" },
14
+ capabilities: ["tool-selection", "argument-extraction", "classification", "structured-output", "embeddings"],
15
+ input: "Natural-language text with optional tools or extraction schema",
16
+ output: "Structured JSON or embedding vector",
17
+ runtime: "Cactus Needle runtime adapter",
18
+ modelUri: "Cactus-Compute/needle3",
19
+ };
20
+ export const needle3CompleteApi = defineApi({
21
+ id: "model.cactus-needle3.complete",
22
+ name: "Needle3.complete",
23
+ category: "models",
24
+ description: "Select tools or extract structured data from natural-language input.",
25
+ parameters: [
26
+ { name: "prompt", description: "Natural-language input.", required: true, schema: { type: "string" } },
27
+ { name: "tools", description: "Optional tool definitions.", required: false, schema: { type: "array" } },
28
+ { name: "schema", description: "Optional extraction schema.", required: false, schema: { type: "object" } },
29
+ ],
30
+ output: { type: "object", description: "Structured model result." },
31
+ semantics: { deterministic: false, pure: false, sideEffects: false },
32
+ });
33
+ export class Needle3 extends ModelLibrary {
34
+ constructor(runtime = cactusNeedle3Runtime) {
35
+ super(needle3Metadata, runtime);
36
+ }
37
+ complete(input) {
38
+ return this.withModel((model) => model.complete(input));
39
+ }
40
+ embed(input) {
41
+ return this.withModel((model) => model.embed(input));
42
+ }
43
+ }
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/needle3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAQ3D,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,gBAAgB;IAC1B,OAAO,EAAE,GAAG;IACZ,WAAW,EAAE,0GAA0G;IACvH,QAAQ,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,CAAC;IACnE,SAAS,EAAE,4EAA4E;IACvF,SAAS,EAAE,oFAAoF;IAC/F,IAAI,EAAE,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAC;IACvD,YAAY,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,YAAY,CAAC;IAC5G,KAAK,EAAE,gEAAgE;IACvE,MAAM,EAAE,qCAAqC;IAC7C,OAAO,EAAE,+BAA+B;IACxC,QAAQ,EAAE,wBAAwB;CAC1B,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;IAC1C,EAAE,EAAE,+BAA+B;IACnC,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,sEAAsE;IACnF,UAAU,EAAE;QACV,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAC;QAClG,EAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,EAAC;QACpG,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAC;KACxG;IACD,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAC;IACjE,SAAS,EAAE,EAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAC;CACnE,CAAC,CAAC;AAEH,MAAM,OAAO,OAAQ,SAAQ,YAA0B;IACrD,YAAY,UAAsC,oBAAoB;QACpE,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,QAAQ,CAAC,KAAqE;QAC5E,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import type { ModelRuntime } from "../model-types.js";
2
+ import type { Needle3Model } from "../needle3/index.js";
3
+ import type { WhistleModel } from "../whistle/index.js";
4
+ export declare const cactusNeedle3Runtime: ModelRuntime<Needle3Model>;
5
+ export declare const cactusWhistleRuntime: ModelRuntime<WhistleModel>;
6
+ //# sourceMappingURL=cactus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cactus.d.ts","sourceRoot":"","sources":["../../../src/models/runtimes/cactus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AActD,eAAO,MAAM,oBAAoB,EAAE,YAAY,CAAC,YAAY,CAkB3D,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAAY,CAAC,YAAY,CAmB3D,CAAC"}
@@ -0,0 +1,41 @@
1
+ export const cactusNeedle3Runtime = {
2
+ async load() {
3
+ const { createNeedle, downloadModel } = await import("cactus-needle");
4
+ await downloadModel({ model: "needle3" });
5
+ const session = await createNeedle();
6
+ const needle = session;
7
+ return {
8
+ complete: async (input) => {
9
+ if (input.schema !== undefined)
10
+ return needle.extract(input.prompt, input.schema);
11
+ return needle.complete(input.prompt, { tools: input.tools });
12
+ },
13
+ embed: async (input) => needle.embed(input),
14
+ close: () => needle.close(),
15
+ };
16
+ },
17
+ async unload(model) {
18
+ await model.close?.();
19
+ },
20
+ };
21
+ export const cactusWhistleRuntime = {
22
+ async load() {
23
+ const { createWhistle, downloadModel } = await import("cactus-needle");
24
+ await downloadModel({ model: "whistle" });
25
+ const session = await createWhistle();
26
+ const whistle = session;
27
+ return {
28
+ transcribe: async (input) => {
29
+ const result = await whistle.transcribe(input.audio, {
30
+ ...(input.language === undefined ? {} : { language: input.language }),
31
+ });
32
+ return typeof result === "string" ? result : result?.text ?? "";
33
+ },
34
+ close: () => whistle.close(),
35
+ };
36
+ },
37
+ async unload(model) {
38
+ await model.close?.();
39
+ },
40
+ };
41
+ //# sourceMappingURL=cactus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cactus.js","sourceRoot":"","sources":["../../../src/models/runtimes/cactus.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,oBAAoB,GAA+B;IAC9D,KAAK,CAAC,IAAI;QACR,MAAM,EAAC,YAAY,EAAE,aAAa,EAAC,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACpE,MAAM,aAAa,CAAC,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,OAAkC,CAAC;QAClD,OAAO;YACL,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACxB,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;oBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClF,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAC,CAAC,CAAC;YAC7D,CAAC;YACD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3C,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;SAC5B,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,KAAK;QAChB,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACxB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA+B;IAC9D,KAAK,CAAC,IAAI;QACR,MAAM,EAAC,aAAa,EAAE,aAAa,EAAC,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACrE,MAAM,aAAa,CAAC,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,OAAmC,CAAC;QACpD,OAAO;YACL,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC1B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE;oBACnD,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAC,CAAC;iBACpE,CAAC,CAAC;gBACH,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YAClE,CAAC;YACD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;SAC7B,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,KAAK;QAChB,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACxB,CAAC;CACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ export type EttinHeadWeights = {
2
+ w1: Float32Array;
3
+ lnWeight: Float32Array;
4
+ lnBias: Float32Array;
5
+ w2: Float32Array;
6
+ b2: Float32Array;
7
+ };
8
+ export declare function loadEttinHeadWeights(modelUri: string): Promise<EttinHeadWeights>;
9
+ export declare function computeEttinHeadScores(hidden: {
10
+ dims: readonly number[];
11
+ data: Float32Array;
12
+ }, head: EttinHeadWeights): number[];
13
+ //# sourceMappingURL=ettin-head.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ettin-head.d.ts","sourceRoot":"","sources":["../../../src/models/runtimes/ettin-head.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,YAAY,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,EAAE,EAAE,YAAY,CAAC;IACjB,EAAE,EAAE,YAAY,CAAC;CAClB,CAAC;AAmCF,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiBtF;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE;IAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAC,EACrD,IAAI,EAAE,gBAAgB,GACrB,MAAM,EAAE,CAwCV"}