@vellumai/assistant 0.12.2-staging.4 → 0.12.2-staging.6
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/Dockerfile +7 -7
- package/openapi.yaml +151 -53
- package/package.json +5 -4
- package/scripts/bundled-plugin-packages.ts +154 -0
- package/scripts/generate-bundled-plugin-packages.ts +29 -0
- package/scripts/test.ts +15 -13
- package/src/__tests__/managed-store.test.ts +121 -0
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +88 -0
- package/src/calls/__tests__/voice-control-protocol.test.ts +24 -2
- package/src/calls/__tests__/voice-session-bridge.test.ts +22 -2
- package/src/calls/voice-control-protocol.ts +13 -4
- package/src/calls/voice-session-bridge.ts +27 -6
- package/src/cli/commands/__tests__/plugins.test.ts +66 -0
- package/src/cli/commands/plugins.ts +50 -18
- package/src/cli/lib/__tests__/install-from-github.test.ts +67 -0
- package/src/cli/lib/__tests__/local-plugin-upgrade.test.ts +169 -0
- package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +57 -0
- package/src/cli/lib/__tests__/plugin-catalog-platform.test.ts +14 -0
- package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +27 -1
- package/src/cli/lib/__tests__/plugin-details.test.ts +9 -2
- package/src/cli/lib/__tests__/plugin-marketplace.test.ts +20 -0
- package/src/cli/lib/__tests__/plugins-install-offline.test.ts +43 -0
- package/src/cli/lib/__tests__/search-plugins.test.ts +31 -0
- package/src/cli/lib/bundled-plugin-packages.json +4 -0
- package/src/cli/lib/bundled-plugin-packages.ts +87 -0
- package/src/cli/lib/diff-plugin.ts +1 -1
- package/src/cli/lib/inspect-plugin.ts +80 -12
- package/src/cli/lib/install-from-github.ts +133 -76
- package/src/cli/lib/plugin-catalog-cache.ts +22 -3
- package/src/cli/lib/plugin-catalog-local.ts +13 -3
- package/src/cli/lib/plugin-catalog-platform.ts +6 -1
- package/src/cli/lib/plugin-catalog-resolve.ts +20 -0
- package/src/cli/lib/plugin-details.ts +12 -0
- package/src/cli/lib/plugin-marketplace.ts +121 -21
- package/src/cli/lib/plugin-pin-history.ts +5 -2
- package/src/cli/lib/search-plugins.ts +58 -16
- package/src/cli/lib/upgrade-plugin.ts +48 -3
- package/src/config/bundled-skills/skill-management/SKILL.md +1 -1
- package/src/config/bundled-skills/skill-management/TOOLS.json +7 -7
- package/src/daemon/conversation-tool-setup.ts +4 -22
- package/src/live-voice/__tests__/live-voice-look-follow-up.test.ts +374 -0
- package/src/live-voice/__tests__/live-voice-vad.test.ts +658 -3
- package/src/live-voice/__tests__/protocol.test.ts +48 -0
- package/src/live-voice/__tests__/session-controls.test.ts +43 -0
- package/src/live-voice/live-voice-session.ts +784 -64
- package/src/live-voice/protocol.ts +20 -0
- package/src/live-voice/session-controls.ts +61 -3
- package/src/monitoring/plugin-auto-update.ts +6 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-prompt.test.ts +15 -0
- package/src/plugins/defaults/memory/memory-retrospective-prompt.ts +1 -1
- package/src/runtime/routes/__tests__/plugins-routes.test.ts +102 -0
- package/src/runtime/routes/plugins-routes.ts +69 -49
- package/src/skills/managed-store.ts +153 -31
- package/src/tools/skills/find-similar-skills.test.ts +214 -2
- package/src/tools/skills/find-similar-skills.ts +62 -9
- package/src/tools/skills/resolve-execute-invocation.ts +24 -0
- package/src/tools/skills/scaffold-managed.ts +16 -13
|
@@ -49,9 +49,12 @@ const MISSING_CHANGE_SUMMARY =
|
|
|
49
49
|
/**
|
|
50
50
|
* Validate + normalize a string-array input (sanitize, drop blanks, dedupe).
|
|
51
51
|
* Returns `{ error }` on the first invalid element, or `{ value }` holding
|
|
52
|
-
* the normalized array
|
|
53
|
-
*
|
|
54
|
-
*
|
|
52
|
+
* the normalized array: undefined when the input is absent, and an empty
|
|
53
|
+
* array when it was passed empty, since on an overwrite the store keeps the
|
|
54
|
+
* current value for an absent field and clears it for an empty one. Shared by
|
|
55
|
+
* the includes / activation_hints / avoid_when inputs so they behave
|
|
56
|
+
* identically; whether an absent or empty value is acceptable is the
|
|
57
|
+
* caller's call.
|
|
55
58
|
* Each element goes through sanitizeFrontmatterValue: activation_hints /
|
|
56
59
|
* avoid_when are concatenated verbatim into capability memory text (see
|
|
57
60
|
* buildSkillContent), so an embedded newline could otherwise smuggle an extra
|
|
@@ -84,7 +87,7 @@ function normalizeOptionalStringArray(
|
|
|
84
87
|
seen.add(cleaned);
|
|
85
88
|
normalized.push(cleaned);
|
|
86
89
|
}
|
|
87
|
-
return { value: normalized
|
|
90
|
+
return { value: normalized };
|
|
88
91
|
}
|
|
89
92
|
|
|
90
93
|
/**
|
|
@@ -231,9 +234,11 @@ export async function executeScaffoldManagedSkill(
|
|
|
231
234
|
return { content: `Error: ${activationHintsResult.error}`, isError: true };
|
|
232
235
|
}
|
|
233
236
|
const activationHints = activationHintsResult.value;
|
|
234
|
-
// Hints are the skill's "Use when:" retrieval text
|
|
235
|
-
//
|
|
236
|
-
|
|
237
|
+
// Hints are the skill's "Use when:" retrieval text and should track the
|
|
238
|
+
// body, so every write states them: the store would keep the current ones
|
|
239
|
+
// on an overwrite, but hints for a rewritten procedure are the caller's
|
|
240
|
+
// to restate, not the store's to assume.
|
|
241
|
+
if (!activationHints || activationHints.length === 0) {
|
|
237
242
|
return {
|
|
238
243
|
content: `Error: ${MISSING_ACTIVATION_HINTS}`,
|
|
239
244
|
isError: true,
|
|
@@ -313,8 +318,9 @@ export async function executeScaffoldManagedSkill(
|
|
|
313
318
|
}
|
|
314
319
|
|
|
315
320
|
// Validate and normalize the optional category (lowercased/trimmed for
|
|
316
|
-
// consistency with the lowercase Skills-UI sidebar buckets).
|
|
317
|
-
//
|
|
321
|
+
// consistency with the lowercase Skills-UI sidebar buckets). A blank value
|
|
322
|
+
// is passed through as the store's "clear" signal; the frontmatter builder
|
|
323
|
+
// never writes a blank category.
|
|
318
324
|
let category: string | undefined;
|
|
319
325
|
if (input.category !== undefined) {
|
|
320
326
|
if (typeof input.category !== "string") {
|
|
@@ -323,10 +329,7 @@ export async function executeScaffoldManagedSkill(
|
|
|
323
329
|
isError: true,
|
|
324
330
|
};
|
|
325
331
|
}
|
|
326
|
-
|
|
327
|
-
if (normalized) {
|
|
328
|
-
category = normalized;
|
|
329
|
-
}
|
|
332
|
+
category = input.category.trim().toLowerCase();
|
|
330
333
|
}
|
|
331
334
|
|
|
332
335
|
// The update notice's body. Model-authored text bound for a notification
|