@happyvertical/smrt-inference 0.0.0-stage → 0.60.15
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/AGENTS.md +201 -0
- package/CLAUDE.md +1 -0
- package/LICENSE +7 -0
- package/README.md +73 -2
- package/agents/fusions.md +92 -0
- package/agents/hosted.md +145 -0
- package/agents/resolver.md +65 -0
- package/agents/settings.md +84 -0
- package/dist/__smrt-register__.d.ts +2 -0
- package/dist/__smrt-register__.d.ts.map +1 -0
- package/dist/chunks/InferenceOverrideCollection-wl7sI-3C.js +398 -0
- package/dist/chunks/InferenceOverrideCollection-wl7sI-3C.js.map +1 -0
- package/dist/chunks/provider-config-4Bx8N52X.js +1847 -0
- package/dist/chunks/provider-config-4Bx8N52X.js.map +1 -0
- package/dist/classify.d.ts +32 -0
- package/dist/classify.d.ts.map +1 -0
- package/dist/config.d.ts +89 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/errors.d.ts +51 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/executor.d.ts +45 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/fusion-store.d.ts +16 -0
- package/dist/fusion-store.d.ts.map +1 -0
- package/dist/fusion.d.ts +155 -0
- package/dist/fusion.d.ts.map +1 -0
- package/dist/gate.d.ts +143 -0
- package/dist/gate.d.ts.map +1 -0
- package/dist/gate.js +94 -0
- package/dist/gate.js.map +1 -0
- package/dist/hosted.d.ts +454 -0
- package/dist/hosted.d.ts.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.json +453 -0
- package/dist/models/InferenceOverride.d.ts +38 -0
- package/dist/models/InferenceOverride.d.ts.map +1 -0
- package/dist/models/InferenceOverrideCollection.d.ts +35 -0
- package/dist/models/InferenceOverrideCollection.d.ts.map +1 -0
- package/dist/models.d.ts +11 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +2 -0
- package/dist/node.d.ts +110 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +1361 -0
- package/dist/node.js.map +1 -0
- package/dist/provider-config.d.ts +113 -0
- package/dist/provider-config.d.ts.map +1 -0
- package/dist/register.d.ts +30 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/resolver.d.ts +166 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +288 -0
- package/dist/resolver.js.map +1 -0
- package/dist/server.d.ts +24 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +985 -0
- package/dist/server.js.map +1 -0
- package/dist/settings/cache.d.ts +5 -0
- package/dist/settings/cache.d.ts.map +1 -0
- package/dist/settings/keys.d.ts +70 -0
- package/dist/settings/keys.d.ts.map +1 -0
- package/dist/settings/layers.d.ts +54 -0
- package/dist/settings/layers.d.ts.map +1 -0
- package/dist/settings/override-service.d.ts +119 -0
- package/dist/settings/override-service.d.ts.map +1 -0
- package/dist/settings/preferences.d.ts +137 -0
- package/dist/settings/preferences.d.ts.map +1 -0
- package/dist/settings/resolver.d.ts +34 -0
- package/dist/settings/resolver.d.ts.map +1 -0
- package/dist/settings/settings-service.d.ts +282 -0
- package/dist/settings/settings-service.d.ts.map +1 -0
- package/dist/settings/targets.d.ts +93 -0
- package/dist/settings/targets.d.ts.map +1 -0
- package/dist/smrt-knowledge.json +335 -0
- package/dist/smrt-knowledge.okf.md +80 -0
- package/dist/svelte/components/InferenceAliasEditor.svelte +210 -0
- package/dist/svelte/components/InferenceAliasEditor.svelte.d.ts +13 -0
- package/dist/svelte/components/InferenceAliasEditor.svelte.d.ts.map +1 -0
- package/dist/svelte/components/InferenceDefaultView.svelte +330 -0
- package/dist/svelte/components/InferenceDefaultView.svelte.d.ts +15 -0
- package/dist/svelte/components/InferenceDefaultView.svelte.d.ts.map +1 -0
- package/dist/svelte/components/InferenceFusionList.svelte +135 -0
- package/dist/svelte/components/InferenceFusionList.svelte.d.ts +16 -0
- package/dist/svelte/components/InferenceFusionList.svelte.d.ts.map +1 -0
- package/dist/svelte/components/InferenceSettingsPanel.svelte +345 -0
- package/dist/svelte/components/InferenceSettingsPanel.svelte.d.ts +65 -0
- package/dist/svelte/components/InferenceSettingsPanel.svelte.d.ts.map +1 -0
- package/dist/svelte/components/InferenceTierRow.svelte +199 -0
- package/dist/svelte/components/InferenceTierRow.svelte.d.ts +14 -0
- package/dist/svelte/components/InferenceTierRow.svelte.d.ts.map +1 -0
- package/dist/svelte/components/InferenceUsageTable.svelte +127 -0
- package/dist/svelte/components/InferenceUsageTable.svelte.d.ts +15 -0
- package/dist/svelte/components/InferenceUsageTable.svelte.d.ts.map +1 -0
- package/dist/svelte/index.d.ts +17 -0
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +14 -0
- package/dist/svelte/types.d.ts +197 -0
- package/dist/svelte/types.d.ts.map +1 -0
- package/dist/svelte/types.js +96 -0
- package/dist/types.d.ts +47 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -0
- package/package.json +105 -3
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Presentational types for the inference settings UI (#4754).
|
|
3
|
+
*
|
|
4
|
+
* Deliberately free of `@happyvertical/smrt-core`, the AI SDK and the
|
|
5
|
+
* `@smrt()` model, so the browser bundle stays a thin presentation layer.
|
|
6
|
+
* Field names match the rows `InferenceSettingsService` returns
|
|
7
|
+
* (`./server`), so a row is structurally assignable to its view with no
|
|
8
|
+
* mapping step.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
export const INFERENCE_SETTINGS_TIERS = [
|
|
13
|
+
'cheap',
|
|
14
|
+
'good',
|
|
15
|
+
'great',
|
|
16
|
+
'best',
|
|
17
|
+
];
|
|
18
|
+
export const INFERENCE_SETTINGS_MODES = [
|
|
19
|
+
'byo',
|
|
20
|
+
'local',
|
|
21
|
+
'hosted',
|
|
22
|
+
'off',
|
|
23
|
+
];
|
|
24
|
+
/** Human label for a supplying level. */
|
|
25
|
+
export function inferenceLevelLabel(level) {
|
|
26
|
+
switch (level) {
|
|
27
|
+
case 'tenant':
|
|
28
|
+
return 'Tenant override';
|
|
29
|
+
case 'app':
|
|
30
|
+
return 'App override';
|
|
31
|
+
case 'config':
|
|
32
|
+
return 'Config';
|
|
33
|
+
default:
|
|
34
|
+
return 'Default';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** Key-free label of a target. Mirrors `describeInferenceTarget()` in `./server`. */
|
|
38
|
+
export function describeTargetView(target) {
|
|
39
|
+
if (!target || Object.keys(target).length === 0) {
|
|
40
|
+
return 'Same as default (configured client)';
|
|
41
|
+
}
|
|
42
|
+
if (target.kind === 'fusion' || target.fusion) {
|
|
43
|
+
return `Fusion ${target.fusion ?? '?'}`;
|
|
44
|
+
}
|
|
45
|
+
if (target.alias)
|
|
46
|
+
return `Alias ${target.alias}`;
|
|
47
|
+
if (Array.isArray(target.candidates)) {
|
|
48
|
+
return `${target.candidates.length} inline candidate(s)`;
|
|
49
|
+
}
|
|
50
|
+
return `${target.provider ?? 'default'}/${target.model ?? 'default model'}`;
|
|
51
|
+
}
|
|
52
|
+
/** Key-free label of a candidate (`provider/model`, `preset:<id>/model`, `alias <name>`). */
|
|
53
|
+
export function candidateViewLabel(candidate) {
|
|
54
|
+
if (candidate.alias)
|
|
55
|
+
return `alias ${candidate.alias}`;
|
|
56
|
+
const model = candidate.model ?? 'default';
|
|
57
|
+
if (candidate.preset)
|
|
58
|
+
return `preset:${candidate.preset}/${model}`;
|
|
59
|
+
return `${candidate.provider ?? 'default'}/${model}`;
|
|
60
|
+
}
|
|
61
|
+
/** Allow-list reference of a target. Mirrors `inferenceTargetRef()` in `./server`. */
|
|
62
|
+
export function targetViewRef(target) {
|
|
63
|
+
if (target.kind === 'fusion' || target.fusion) {
|
|
64
|
+
return `fusion:${target.fusion ?? ''}`;
|
|
65
|
+
}
|
|
66
|
+
if (target.alias)
|
|
67
|
+
return `alias:${target.alias}`;
|
|
68
|
+
return `model:${target.provider ?? 'default'}/${target.model ?? 'default'}`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Whether a reference is on an allow-list (exact, trailing `*`, or `*`).
|
|
72
|
+
* Display only: the server enforces the list on every tenant write.
|
|
73
|
+
*/
|
|
74
|
+
export function isRefAllowed(ref, allowList) {
|
|
75
|
+
return (allowList ?? []).some((pattern) => pattern === '*'
|
|
76
|
+
? true
|
|
77
|
+
: pattern.endsWith('*')
|
|
78
|
+
? ref.startsWith(pattern.slice(0, -1))
|
|
79
|
+
: ref === pattern);
|
|
80
|
+
}
|
|
81
|
+
/** What reverting a tier at `scope` produces (the prompts revert invariant). */
|
|
82
|
+
export function tierRevertPreview(row, scope) {
|
|
83
|
+
if (scope === 'app')
|
|
84
|
+
return row.appRevertLabel ?? row.effectiveLabel;
|
|
85
|
+
return row.inheritedLabel ?? row.appRevertLabel ?? row.effectiveLabel;
|
|
86
|
+
}
|
|
87
|
+
/** The tier `auto` returns to when the scope reverts. */
|
|
88
|
+
export function defaultTierRevertPreview(view, scope) {
|
|
89
|
+
if (scope === 'app')
|
|
90
|
+
return view.appRevertTier ?? view.effectiveTier;
|
|
91
|
+
return view.inheritedTier ?? view.appRevertTier ?? view.effectiveTier;
|
|
92
|
+
}
|
|
93
|
+
/** Usage columns to render: only the dimensions the report was grouped by. */
|
|
94
|
+
export function usageColumns(view) {
|
|
95
|
+
return view.by.filter((dimension) => dimension.length > 0);
|
|
96
|
+
}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public shapes of the chain executor (#4752). The config shapes
|
|
3
|
+
* (`InferenceCandidate`, `InferenceAlias`, `InferenceTarget`) live in core,
|
|
4
|
+
* which owns the names; this package owns the behavior.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Why a candidate did not answer. Classified from the SDK error class, its
|
|
8
|
+
* code and the HTTP status through the cause chain, never from message text.
|
|
9
|
+
*
|
|
10
|
+
* - `quota`: billing or a rate limit that will not reset soon.
|
|
11
|
+
* - `credential`: missing, rejected or unauthorized key.
|
|
12
|
+
* - `missing-model`: the provider does not know the model.
|
|
13
|
+
* - `transient`: timeout, network, 5xx, or a short rate limit; retried once.
|
|
14
|
+
* - `refusal`: the provider's safety system or the model declined.
|
|
15
|
+
* - `missing-capability`: the candidate lacks a capability the request
|
|
16
|
+
* needs (JSON mode, tools) and the caller permitted no fallback (#4758).
|
|
17
|
+
* Detected before the call, so no model ran; core's typed capability
|
|
18
|
+
* refusal classifies the same way.
|
|
19
|
+
*/
|
|
20
|
+
export declare const INFERENCE_FAILURE_CLASSES: readonly ["quota", "credential", "missing-model", "transient", "refusal", "missing-capability"];
|
|
21
|
+
export type InferenceFailureClass = (typeof INFERENCE_FAILURE_CLASSES)[number];
|
|
22
|
+
/**
|
|
23
|
+
* A substitution reason: the failure class that moved the call on, `partial`
|
|
24
|
+
* for a candidate that streamed text and then failed, or `unclassified` for
|
|
25
|
+
* the terminal entry of a call ended by an error that is not a routing
|
|
26
|
+
* failure (rethrown as the caller's own error).
|
|
27
|
+
*/
|
|
28
|
+
export type InferenceSubstitutionReason = InferenceFailureClass | 'partial' | 'unclassified';
|
|
29
|
+
/**
|
|
30
|
+
* One step of a call's fallback trail, recorded in the `substitutions` usage
|
|
31
|
+
* tag (a JSON array). `from` and `to` are candidate labels
|
|
32
|
+
* (`provider/model`, `preset:<id>/model`, or `default` for the configured
|
|
33
|
+
* client); `to` is `null` when nothing took over.
|
|
34
|
+
*/
|
|
35
|
+
export interface InferenceSubstitution {
|
|
36
|
+
from: string;
|
|
37
|
+
to: string | null;
|
|
38
|
+
reason: InferenceSubstitutionReason;
|
|
39
|
+
}
|
|
40
|
+
/** One problem found in an `inference` config block. */
|
|
41
|
+
export interface InferenceConfigIssue {
|
|
42
|
+
/** Dotted config path of the offender, e.g. `inference.aliases.frontier`. */
|
|
43
|
+
path: string;
|
|
44
|
+
code: 'alias-empty' | 'alias-unknown' | 'alias-cycle' | 'candidate-invalid' | 'candidate-key-without-endpoint' | 'preset-unknown' | 'fusion-invalid' | 'fusion-unknown' | 'fusion-nested' | 'fusion-prompt-unknown';
|
|
45
|
+
message: string;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,yBAAyB,iGAO5B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,MAAM,2BAA2B,GACnC,qBAAqB,GACrB,SAAS,GACT,cAAc,CAAC;AAEnB;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,EAAE,2BAA2B,CAAC;CACrC;AAED,wDAAwD;AACxD,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EACA,aAAa,GACb,eAAe,GACf,aAAa,GACb,mBAAmB,GACnB,gCAAgC,GAChC,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,uBAAuB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/types.ts
|
|
2
|
+
var INFERENCE_FAILURE_CLASSES = [
|
|
3
|
+
"quota",
|
|
4
|
+
"credential",
|
|
5
|
+
"missing-model",
|
|
6
|
+
"transient",
|
|
7
|
+
"refusal",
|
|
8
|
+
"missing-capability"
|
|
9
|
+
];
|
|
10
|
+
//#endregion
|
|
11
|
+
export { INFERENCE_FAILURE_CLASSES };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["/**\n * Public shapes of the chain executor (#4752). The config shapes\n * (`InferenceCandidate`, `InferenceAlias`, `InferenceTarget`) live in core,\n * which owns the names; this package owns the behavior.\n */\n\n/**\n * Why a candidate did not answer. Classified from the SDK error class, its\n * code and the HTTP status through the cause chain, never from message text.\n *\n * - `quota`: billing or a rate limit that will not reset soon.\n * - `credential`: missing, rejected or unauthorized key.\n * - `missing-model`: the provider does not know the model.\n * - `transient`: timeout, network, 5xx, or a short rate limit; retried once.\n * - `refusal`: the provider's safety system or the model declined.\n * - `missing-capability`: the candidate lacks a capability the request\n * needs (JSON mode, tools) and the caller permitted no fallback (#4758).\n * Detected before the call, so no model ran; core's typed capability\n * refusal classifies the same way.\n */\nexport const INFERENCE_FAILURE_CLASSES = [\n 'quota',\n 'credential',\n 'missing-model',\n 'transient',\n 'refusal',\n 'missing-capability',\n] as const;\n\nexport type InferenceFailureClass = (typeof INFERENCE_FAILURE_CLASSES)[number];\n\n/**\n * A substitution reason: the failure class that moved the call on, `partial`\n * for a candidate that streamed text and then failed, or `unclassified` for\n * the terminal entry of a call ended by an error that is not a routing\n * failure (rethrown as the caller's own error).\n */\nexport type InferenceSubstitutionReason =\n | InferenceFailureClass\n | 'partial'\n | 'unclassified';\n\n/**\n * One step of a call's fallback trail, recorded in the `substitutions` usage\n * tag (a JSON array). `from` and `to` are candidate labels\n * (`provider/model`, `preset:<id>/model`, or `default` for the configured\n * client); `to` is `null` when nothing took over.\n */\nexport interface InferenceSubstitution {\n from: string;\n to: string | null;\n reason: InferenceSubstitutionReason;\n}\n\n/** One problem found in an `inference` config block. */\nexport interface InferenceConfigIssue {\n /** Dotted config path of the offender, e.g. `inference.aliases.frontier`. */\n path: string;\n code:\n | 'alias-empty'\n | 'alias-unknown'\n | 'alias-cycle'\n | 'candidate-invalid'\n | 'candidate-key-without-endpoint'\n | 'preset-unknown'\n | 'fusion-invalid'\n | 'fusion-unknown'\n | 'fusion-nested'\n | 'fusion-prompt-unknown';\n message: string;\n}\n"],"mappings":";AAoBO,IAAM,4BAA4B;CACvC;CACA;CACA;CACA;CACA;CACA;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,108 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-inference",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.60.15",
|
|
4
|
+
"description": "Inference alias chains with classified failures, recorded fallback and ladder degradation, consumer-defined fusions, per-user and per-tenant bindings, the InferenceSettingsPanel, hosted provisioning and spend gate, and the smrt doctor --ai binding check, for SMRT inference tiers",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"CLAUDE.md",
|
|
11
|
+
"AGENTS.md",
|
|
12
|
+
"agents"
|
|
13
|
+
],
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"import": "./dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./node": {
|
|
20
|
+
"types": "./dist/node.d.ts",
|
|
21
|
+
"import": "./dist/node.js"
|
|
22
|
+
},
|
|
23
|
+
"./resolver": {
|
|
24
|
+
"types": "./dist/resolver.d.ts",
|
|
25
|
+
"import": "./dist/resolver.js"
|
|
26
|
+
},
|
|
27
|
+
"./models": {
|
|
28
|
+
"types": "./dist/models.d.ts",
|
|
29
|
+
"import": "./dist/models.js"
|
|
30
|
+
},
|
|
31
|
+
"./server": {
|
|
32
|
+
"types": "./dist/server.d.ts",
|
|
33
|
+
"import": "./dist/server.js"
|
|
34
|
+
},
|
|
35
|
+
"./svelte": {
|
|
36
|
+
"types": "./dist/svelte/index.d.ts",
|
|
37
|
+
"svelte": "./dist/svelte/index.js",
|
|
38
|
+
"import": "./dist/svelte/index.js"
|
|
39
|
+
},
|
|
40
|
+
"./manifest": "./dist/manifest.json",
|
|
41
|
+
"./manifest.json": "./dist/manifest.json",
|
|
42
|
+
"./gate": {
|
|
43
|
+
"types": "./dist/gate.d.ts",
|
|
44
|
+
"import": "./dist/gate.js"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@happyvertical/ai": "^0.111.6",
|
|
49
|
+
"@happyvertical/smrt-config": "0.60.15",
|
|
50
|
+
"@happyvertical/smrt-core": "0.60.15",
|
|
51
|
+
"@happyvertical/smrt-prompts": "0.60.15",
|
|
52
|
+
"@happyvertical/smrt-secrets": "0.60.15",
|
|
53
|
+
"@happyvertical/smrt-tenancy": "0.60.15",
|
|
54
|
+
"@happyvertical/smrt-users": "0.60.15",
|
|
55
|
+
"@happyvertical/sql": "^0.111.6"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@happyvertical/smrt-vitest": "0.60.15",
|
|
59
|
+
"@sveltejs/package": "^2.5.8",
|
|
60
|
+
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
61
|
+
"@types/node": "24.13.6",
|
|
62
|
+
"jsdom": "^29.1.1",
|
|
63
|
+
"svelte": "^5.57.1",
|
|
64
|
+
"svelte-check": "^4.7.6",
|
|
65
|
+
"typescript": "6.0.3",
|
|
66
|
+
"vite": "8.1.6",
|
|
67
|
+
"vitest": "4.1.10"
|
|
68
|
+
},
|
|
69
|
+
"peerDependencies": {
|
|
70
|
+
"svelte": "^5.57.0"
|
|
71
|
+
},
|
|
72
|
+
"peerDependenciesMeta": {
|
|
73
|
+
"svelte": {
|
|
74
|
+
"optional": true
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"keywords": [
|
|
78
|
+
"smrt",
|
|
79
|
+
"ai",
|
|
80
|
+
"inference",
|
|
81
|
+
"fallback",
|
|
82
|
+
"routing",
|
|
83
|
+
"settings",
|
|
84
|
+
"svelte"
|
|
85
|
+
],
|
|
86
|
+
"author": "HappyVertical",
|
|
87
|
+
"license": "MIT",
|
|
88
|
+
"publishConfig": {
|
|
89
|
+
"registry": "https://registry.npmjs.org",
|
|
90
|
+
"access": "public"
|
|
91
|
+
},
|
|
92
|
+
"repository": {
|
|
93
|
+
"type": "git",
|
|
94
|
+
"url": "https://github.com/happyvertical/smrt.git",
|
|
95
|
+
"directory": "packages/inference"
|
|
96
|
+
},
|
|
97
|
+
"scripts": {
|
|
98
|
+
"build": "vite build --mode library && svelte-package -i src/svelte -o dist/svelte --tsconfig tsconfig.svelte.json && node ../../scripts/prune-svelte-package-artifacts.js dist/svelte",
|
|
99
|
+
"build:watch": "vite build --mode library --watch",
|
|
100
|
+
"clean": "rm -rf dist",
|
|
101
|
+
"dev": "vite dev",
|
|
102
|
+
"test": "vitest run",
|
|
103
|
+
"test:postgres": "node ../../scripts/run-with-ci-postgres.mjs -- pnpm exec vitest run optional.test.ts",
|
|
104
|
+
"test:watch": "vitest",
|
|
105
|
+
"typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.test.json && node ../../scripts/svelte-check-a11y.mjs --tsconfig ./tsconfig.svelte.json",
|
|
106
|
+
"verify:pack": "node ../../scripts/verify-package-types-exports.js ."
|
|
107
|
+
}
|
|
6
108
|
}
|