camstack 1.2.191 → 1.2.192

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/dist/cli.js CHANGED
@@ -37,7 +37,7 @@ async function runServe(args) {
37
37
  ...typeof values.data === "string" ? { data: values.data } : {}
38
38
  };
39
39
  Object.assign(process.env, buildServeEnv(opts));
40
- await import("./launcher-AZI5I6X5.js");
40
+ await import("./launcher-PJJ7PTWL.js");
41
41
  }
42
42
 
43
43
  // src/commands/agent.ts
@@ -82,7 +82,7 @@ async function runAgent(args) {
82
82
  ...typeof values.port === "string" ? { port: values.port } : {}
83
83
  };
84
84
  Object.assign(process.env, buildAgentEnv(opts));
85
- await import("./launcher-AZI5I6X5.js");
85
+ await import("./launcher-PJJ7PTWL.js");
86
86
  }
87
87
 
88
88
  // src/commands/setup.ts
@@ -14773,7 +14773,7 @@ function date4(params) {
14773
14773
  // ../../node_modules/zod/v4/classic/external.js
14774
14774
  config(en_default());
14775
14775
 
14776
- // ../types/dist/sleep-BxjU_fJM.mjs
14776
+ // ../types/dist/sleep-yKL5gfrH.mjs
14777
14777
  var AUDIO_CHUNK_FORMATS = [
14778
14778
  "f32le",
14779
14779
  "pcmu",
@@ -18584,10 +18584,12 @@ var AddonRoutesScopeSchema = external_exports.object({
18584
18584
  type: external_exports.literal("addon-routes"),
18585
18585
  access: external_exports.array(MethodAccessSchema).min(1)
18586
18586
  });
18587
+ var PreferencesSelfScopeSchema = external_exports.object({ type: external_exports.literal("preferences-self") });
18587
18588
  var CredentialScopeSchema = external_exports.union([
18588
18589
  external_exports.literal("*"),
18589
18590
  ShareViewScopeSchema,
18590
18591
  AddonRoutesScopeSchema,
18592
+ PreferencesSelfScopeSchema,
18591
18593
  TokenScopeSchema
18592
18594
  ]);
18593
18595
  var CREDENTIAL_TOKEN_KIND = "credential";
@@ -18597,6 +18599,58 @@ var CredentialTokenClaimsSchema = external_exports.object({
18597
18599
  jti: external_exports.string().min(16),
18598
18600
  scopes: external_exports.array(CredentialScopeSchema).min(1)
18599
18601
  });
18602
+ var PREFERENCES_NAMESPACE_PATTERN = /^[a-z][a-z0-9.-]{0,63}$/;
18603
+ var PREFERENCES_MAX_VALUE_BYTES = 256 * 1024;
18604
+ var PreferenceNamespaceSchema = external_exports.string().regex(PREFERENCES_NAMESPACE_PATTERN);
18605
+ var PreferenceValueSchema = external_exports.record(external_exports.string(), external_exports.unknown());
18606
+ var PreferenceDeviceIdSchema = external_exports.string().min(1).max(64);
18607
+ var PreferenceRowSchema = external_exports.object({
18608
+ namespace: PreferenceNamespaceSchema,
18609
+ value: PreferenceValueSchema,
18610
+ /** Starts at 1, +1 on every write of this namespace. A delete ends the row and its count. */
18611
+ revision: external_exports.number().int().positive(),
18612
+ updatedAt: external_exports.number().int(),
18613
+ /** The client id the last writer sent; `null` when it sent none. */
18614
+ updatedByDevice: PreferenceDeviceIdSchema.nullable()
18615
+ });
18616
+ var PreferencesGetInputSchema = external_exports.object({
18617
+ /** Absent: every namespace the caller holds. */
18618
+ namespaces: external_exports.array(PreferenceNamespaceSchema).max(32).optional()
18619
+ });
18620
+ var PreferencesGetOutputSchema = external_exports.object({ rows: external_exports.array(PreferenceRowSchema) });
18621
+ var PreferencesPutInputSchema = external_exports.object({
18622
+ namespace: PreferenceNamespaceSchema,
18623
+ value: PreferenceValueSchema,
18624
+ /**
18625
+ * The revision the edit was based on. Absent: last write wins. `0`: the
18626
+ * namespace must not exist yet. Any other value that is not the current
18627
+ * revision answers `conflict` and writes nothing.
18628
+ */
18629
+ baseRevision: external_exports.number().int().nonnegative().optional(),
18630
+ deviceId: PreferenceDeviceIdSchema.optional()
18631
+ });
18632
+ var PreferencesPutOutputSchema = external_exports.discriminatedUnion("status", [external_exports.object({
18633
+ status: external_exports.literal("saved"),
18634
+ row: PreferenceRowSchema
18635
+ }), external_exports.object({
18636
+ status: external_exports.literal("conflict"),
18637
+ current: PreferenceRowSchema.nullable()
18638
+ })]);
18639
+ var PreferencesDeleteInputSchema = external_exports.object({ namespace: PreferenceNamespaceSchema });
18640
+ var PreferencesDeleteOutputSchema = external_exports.object({
18641
+ /** `false` when the namespace did not exist. */
18642
+ deleted: external_exports.boolean()
18643
+ });
18644
+ var PreferencesChangedSinceInputSchema = external_exports.object({
18645
+ /** The revision the client holds per namespace; a namespace it does not list is new to it. */
18646
+ revisionByNamespace: external_exports.record(PreferenceNamespaceSchema, external_exports.number().int().nonnegative()).refine((map2) => Object.keys(map2).length <= 32, { message: `at most 32 namespaces` })
18647
+ });
18648
+ var PreferencesChangedSinceOutputSchema = external_exports.object({
18649
+ /** Every row whose revision differs from the client's, and every row it did not list. */
18650
+ rows: external_exports.array(PreferenceRowSchema),
18651
+ /** Namespaces the client listed that no longer exist. */
18652
+ deleted: external_exports.array(PreferenceNamespaceSchema)
18653
+ });
18600
18654
  var AppFlowPurposeSchema = external_exports.enum(["new-session", "step-up"]);
18601
18655
  var AppPageLangSchema = external_exports.enum(["en", "it"]);
18602
18656
  var APP_FLOW_REFUSAL_MESSAGES = {
@@ -46576,27 +46630,30 @@ var llmRuntimeCapability = {
46576
46630
  })
46577
46631
  }
46578
46632
  };
46579
- var LlmProfileKindSchema = external_exports.enum([
46580
- "openai-compatible",
46581
- "openai",
46582
- "anthropic",
46583
- "google",
46584
- "managed-local",
46585
- "apple-foundation"
46586
- ]);
46633
+ var LLM_PROFILE_KIND_PATTERN = /^[a-z0-9][a-z0-9-]{0,63}$/;
46634
+ var LlmProfileKindSchema = external_exports.string().regex(LLM_PROFILE_KIND_PATTERN, "a kind id is lower-case letters, digits and dashes");
46635
+ var LlmModelFeaturesSchema = external_exports.object({
46636
+ vision: external_exports.boolean(),
46637
+ tools: external_exports.boolean(),
46638
+ streaming: external_exports.boolean()
46639
+ });
46640
+ var LlmModelInfoSchema = external_exports.object({
46641
+ id: external_exports.string(),
46642
+ label: external_exports.string().optional(),
46643
+ contextLength: external_exports.number().int().positive().optional(),
46644
+ features: LlmModelFeaturesSchema.partial().optional()
46645
+ });
46646
+ var LlmProviderConfigSchema = external_exports.record(external_exports.string(), external_exports.unknown());
46587
46647
  var LlmProfileSchema = external_exports.object({
46588
46648
  id: external_exports.string(),
46589
46649
  name: external_exports.string(),
46650
+ /** The provider-declared kind (`LlmProfileKindDescriptor.kind`). */
46590
46651
  kind: LlmProfileKindSchema,
46591
46652
  /** Stamped by the provider — keeps the fanned catalog routable. */
46592
46653
  addonId: external_exports.string(),
46593
46654
  enabled: external_exports.boolean(),
46594
46655
  /** Vendor model id, or the managed runtime's loaded model. */
46595
46656
  model: external_exports.string(),
46596
- /** Required for openai-compatible; override for cloud kinds. */
46597
- baseUrl: external_exports.string().optional(),
46598
- /** ConfigUISchema type:'password' — never round-trips (spec §5). */
46599
- apiKey: external_exports.string().optional(),
46600
46657
  /** Vision on/off. A vision call against a `false` profile is REFUSED, never
46601
46658
  * degraded to text — that shipped once and produced a confident answer to a
46602
46659
  * question about a picture nobody sent. */
@@ -46604,15 +46661,11 @@ var LlmProfileSchema = external_exports.object({
46604
46661
  temperature: external_exports.number().min(0).max(2).optional(),
46605
46662
  /** Nucleus sampling. Every wire we speak has it. */
46606
46663
  topP: external_exports.number().min(0).max(1).optional(),
46607
- /** Top-k sampling. Carried only by the wires that have it — NEITHER OpenAI
46608
- * wire does, and the client drops it there (measured: the request body gets
46609
- * `top_p` and no `top_k`). The profile editor hides the field wherever it
46610
- * would change nothing; `KINDS_WITH_TOP_K` is the single owner of that list. */
46664
+ /** Top-k sampling. Carried only by the wires that have it — a kind offers the
46665
+ * field in its editor only when its descriptor lists it in `profileFields`. */
46611
46666
  topK: external_exports.number().int().positive().optional(),
46612
46667
  maxTokens: external_exports.number().int().positive().optional(),
46613
- /** Prompt context window. Advisory for cloud kinds (they enforce their own);
46614
- * for `managed-local` it is the llama.cpp `--ctx-size` the runtime starts
46615
- * the model with, so it is the one field that changes a PROCESS. */
46668
+ /** Prompt context window. Advisory for cloud kinds (they enforce their own). */
46616
46669
  contextLength: external_exports.number().int().positive().optional(),
46617
46670
  /** Default system prompt. A caller's `system` REPLACES it (never appends —
46618
46671
  * two system prompts fighting is worse than either alone). */
@@ -46638,26 +46691,76 @@ var LlmProfileSchema = external_exports.object({
46638
46691
  * library; the REGISTRY of callable tools is ours and is empty in v1, so a
46639
46692
  * `true` here buys the wiring, not behaviour, until tools are registered. */
46640
46693
  toolsEnabled: external_exports.boolean().default(false),
46641
- extraHeaders: external_exports.record(external_exports.string(), external_exports.string()).optional(),
46642
- /** kind === 'managed-local' only (spec §4). */
46643
- runtime: ManagedRuntimeConfigSchema.optional(),
46644
- /**
46645
- * kind === 'apple-foundation' only: WHERE it runs — the only thing there is
46646
- * to configure (no key, no URL, no download; `model` is `apple-system`).
46647
- * `supportsVision` on such a row is stamped by the provider from the node's
46648
- * reported `imageInput`, never taken from the operator (D62).
46649
- */
46650
- appleFoundation: external_exports.object({ nodeId: external_exports.string() }).optional()
46694
+ /** Everything the kind's provider owns (endpoint, key, node, runtime…). */
46695
+ providerConfig: LlmProviderConfigSchema.default({})
46696
+ });
46697
+ var LlmProfileFieldSchema = external_exports.enum([
46698
+ "temperature",
46699
+ "topP",
46700
+ "topK",
46701
+ "maxTokens",
46702
+ "contextLength",
46703
+ "systemPrompt",
46704
+ "timeoutMs",
46705
+ "connectTimeoutMs",
46706
+ "firstTokenTimeoutMs",
46707
+ "idleTimeoutMs",
46708
+ "retry",
46709
+ "toolsEnabled"
46710
+ ]);
46711
+ var LlmProviderWidgetSchema = external_exports.object({
46712
+ id: external_exports.string(),
46713
+ placement: external_exports.enum(["connection", "model"]),
46714
+ /** `providerConfig` keys this widget must fill before the profile can be saved. */
46715
+ requires: external_exports.array(external_exports.string()).optional()
46651
46716
  });
46652
46717
  var ConfigSchemaPassthrough$3 = external_exports.unknown();
46653
46718
  var LlmProfileKindDescriptorSchema = external_exports.object({
46654
46719
  kind: LlmProfileKindSchema,
46655
46720
  label: external_exports.string(),
46721
+ /** A generic icon name (`cloud`, `plug`, `cpu`) — never a glyph or a logo. */
46656
46722
  icon: external_exports.string(),
46657
46723
  /** Stamped by each provider so the concat-fanned catalog stays routable. */
46658
46724
  addonId: external_exports.string(),
46659
- configSchema: ConfigSchemaPassthrough$3
46725
+ /** The provider's own fields (`providerConfig`); `password` fields are keychain-held. */
46726
+ connectionSchema: ConfigSchemaPassthrough$3,
46727
+ /** Provider fields that belong under "Advanced" (extra headers, runtime tuning). */
46728
+ advancedSchema: ConfigSchemaPassthrough$3.optional(),
46729
+ /** The kind's defaults; a model from `listModels` may override any of them. */
46730
+ features: LlmModelFeaturesSchema,
46731
+ /** `false` = the provider stamps `supportsVision` itself (from what a node reports). */
46732
+ visionEditable: external_exports.boolean(),
46733
+ /** Where the model list comes from: `listModels`, `staticModels`, or nowhere. */
46734
+ modelCatalog: external_exports.enum([
46735
+ "fetch",
46736
+ "static",
46737
+ "none"
46738
+ ]),
46739
+ staticModels: external_exports.array(LlmModelInfoSchema).optional(),
46740
+ /** The common fields that mean something on this kind's wire. */
46741
+ profileFields: external_exports.array(LlmProfileFieldSchema),
46742
+ providerWidgets: external_exports.array(LlmProviderWidgetSchema).optional()
46743
+ });
46744
+ var LlmListModelsInputSchema = external_exports.object({
46745
+ addonId: external_exports.string(),
46746
+ kind: LlmProfileKindSchema,
46747
+ profileId: external_exports.string().optional(),
46748
+ connection: LlmProviderConfigSchema.optional()
46660
46749
  });
46750
+ var LlmListModelsErrorCodeSchema = external_exports.enum([
46751
+ "auth",
46752
+ "network",
46753
+ "unsupported",
46754
+ "invalid"
46755
+ ]);
46756
+ var LlmListModelsResultSchema = external_exports.discriminatedUnion("ok", [external_exports.object({
46757
+ ok: external_exports.literal(true),
46758
+ models: external_exports.array(LlmModelInfoSchema)
46759
+ }), external_exports.object({
46760
+ ok: external_exports.literal(false),
46761
+ code: LlmListModelsErrorCodeSchema,
46762
+ message: external_exports.string()
46763
+ })]);
46661
46764
  var LlmDefaultSelectorSchema = external_exports.union([external_exports.object({ consumer: external_exports.string() }), external_exports.object({ purpose: external_exports.enum(["text", "vision"]) })]);
46662
46765
  var LlmDefaultSchema = external_exports.object({
46663
46766
  selector: LlmDefaultSelectorSchema,
@@ -46777,8 +46880,17 @@ var llmCapability = {
46777
46880
  auth: "admin",
46778
46881
  timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
46779
46882
  }),
46780
- /** Live vendor enumeration (GET /models etc.). */
46781
- listModels: method(ProfileRefInputSchema, external_exports.array(external_exports.string())),
46883
+ /**
46884
+ * The models a kind offers, for a SAVED profile or an unsaved draft
46885
+ * (`connection`). A mutation, not a query: a draft may carry a key, and a
46886
+ * query's input travels in the URL. Admin: it dials whatever endpoint the
46887
+ * draft names and may resolve a stored key to do it. The answer never
46888
+ * carries a secret — failures are a typed result, never a throw.
46889
+ */
46890
+ listModels: method(LlmListModelsInputSchema, LlmListModelsResultSchema, {
46891
+ kind: "mutation",
46892
+ auth: "admin"
46893
+ }),
46782
46894
  getDefaults: method(external_exports.object({}), external_exports.array(LlmDefaultSchema)),
46783
46895
  setDefault: method(external_exports.object({
46784
46896
  selector: LlmDefaultSelectorSchema,
@@ -70044,26 +70156,6 @@ var ApiKeySummarySchema = external_exports.object({
70044
70156
  createdAt: external_exports.number(),
70045
70157
  lastUsedAt: external_exports.number().optional()
70046
70158
  });
70047
- var ScopedTokenSummarySchema = external_exports.object({
70048
- id: external_exports.string(),
70049
- userId: external_exports.string(),
70050
- name: external_exports.string(),
70051
- tokenPrefix: external_exports.string(),
70052
- scopes: external_exports.array(TokenScopeSchema),
70053
- expiresAt: external_exports.number().nullish(),
70054
- lastUsedAt: external_exports.number().nullish(),
70055
- createdAt: external_exports.number()
70056
- });
70057
- var CreateScopedTokenInputSchema = external_exports.object({
70058
- userId: external_exports.string(),
70059
- name: external_exports.string(),
70060
- scopes: external_exports.array(TokenScopeSchema),
70061
- expiresAt: external_exports.number().optional()
70062
- });
70063
- var CreateScopedTokenResultSchema = external_exports.object({
70064
- token: external_exports.string(),
70065
- record: ScopedTokenSummarySchema
70066
- });
70067
70159
  var OauthSessionSummarySchema = external_exports.object({
70068
70160
  id: external_exports.string(),
70069
70161
  userId: external_exports.string(),
@@ -70150,18 +70242,6 @@ var userManagementCapability = {
70150
70242
  auth: "admin",
70151
70243
  access: "delete"
70152
70244
  }),
70153
- createScopedToken: method(CreateScopedTokenInputSchema, CreateScopedTokenResultSchema, {
70154
- kind: "mutation",
70155
- auth: "admin",
70156
- access: "create"
70157
- }),
70158
- revokeScopedToken: method(external_exports.object({ id: external_exports.string() }), external_exports.object({ success: external_exports.literal(true) }), {
70159
- kind: "mutation",
70160
- auth: "admin",
70161
- access: "delete"
70162
- }),
70163
- validateScopedToken: method(external_exports.object({ token: external_exports.string() }), ScopedTokenSummarySchema.nullable(), { access: "view" }),
70164
- listScopedTokens: method(external_exports.object({ userId: external_exports.string() }), external_exports.array(ScopedTokenSummarySchema), { auth: "admin" }),
70165
70245
  setupTotp: method(external_exports.object({ userId: external_exports.string() }), TotpSetupResultSchema, {
70166
70246
  kind: "mutation",
70167
70247
  auth: "admin",
@@ -74839,7 +74919,7 @@ var METHOD_ACCESS_MAP = Object.freeze({
74839
74919
  capName: "llm",
74840
74920
  capScope: "system",
74841
74921
  addonId: null,
74842
- access: "view"
74922
+ access: "create"
74843
74923
  },
74844
74924
  "llm.listNodeModels": {
74845
74925
  capName: "llm",
@@ -79503,12 +79583,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
79503
79583
  addonId: null,
79504
79584
  access: "create"
79505
79585
  },
79506
- "userManagement.createScopedToken": {
79507
- capName: "user-management",
79508
- capScope: "system",
79509
- addonId: null,
79510
- access: "create"
79511
- },
79512
79586
  "userManagement.createUser": {
79513
79587
  capName: "user-management",
79514
79588
  capScope: "system",
@@ -79557,12 +79631,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
79557
79631
  addonId: null,
79558
79632
  access: "view"
79559
79633
  },
79560
- "userManagement.listScopedTokens": {
79561
- capName: "user-management",
79562
- capScope: "system",
79563
- addonId: null,
79564
- access: "view"
79565
- },
79566
79634
  "userManagement.listUsers": {
79567
79635
  capName: "user-management",
79568
79636
  capScope: "system",
@@ -79617,12 +79685,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
79617
79685
  addonId: null,
79618
79686
  access: "delete"
79619
79687
  },
79620
- "userManagement.revokeScopedToken": {
79621
- capName: "user-management",
79622
- capScope: "system",
79623
- addonId: null,
79624
- access: "delete"
79625
- },
79626
79688
  "userManagement.setupTotp": {
79627
79689
  capName: "user-management",
79628
79690
  capScope: "system",
@@ -79653,12 +79715,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
79653
79715
  addonId: null,
79654
79716
  access: "view"
79655
79717
  },
79656
- "userManagement.validateScopedToken": {
79657
- capName: "user-management",
79658
- capScope: "system",
79659
- addonId: null,
79660
- access: "view"
79661
- },
79662
79718
  "userManagement.verifyTotp": {
79663
79719
  capName: "user-management",
79664
79720
  capScope: "system",
@@ -86154,7 +86210,7 @@ function isLoginPayload(value) {
86154
86210
  function revocationFor(session) {
86155
86211
  if (session.tokenId) {
86156
86212
  return {
86157
- procedure: "userManagement.revokeScopedToken",
86213
+ procedure: "auth.revokeToken",
86158
86214
  input: { id: session.tokenId },
86159
86215
  bearer: "fresh"
86160
86216
  };