@vellumai/assistant 0.10.9-staging.1 → 0.10.9
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 +4 -0
- package/knip.json +1 -4
- package/openapi.yaml +27 -17
- package/package.json +1 -1
- package/src/__tests__/always-loaded-tools-guard.test.ts +4 -6
- package/src/__tests__/app-routes-csp.test.ts +13 -4
- package/src/__tests__/conversation-tool-setup-tools-disabled.test.ts +4 -8
- package/src/__tests__/disk-pressure-tools.test.ts +4 -4
- package/src/__tests__/file-list-tool.test.ts +22 -12
- package/src/__tests__/list-all-apps.test.ts +204 -0
- package/src/__tests__/messaging-send-tool.test.ts +67 -0
- package/src/__tests__/mtime-cache.test.ts +42 -0
- package/src/__tests__/oauth-provider-profiles.test.ts +3 -2
- package/src/__tests__/outlook-messaging-provider.test.ts +71 -0
- package/src/__tests__/plugin-app-serve-routes.test.ts +163 -0
- package/src/__tests__/plugin-import-boundary-guard.test.ts +1 -0
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +47 -0
- package/src/__tests__/subagent-notify-parent.test.ts +4 -3
- package/src/__tests__/subagent-tool-filtering.test.ts +21 -21
- package/src/__tests__/subagent-tool-gate-mode.test.ts +6 -6
- package/src/apps/app-store.ts +302 -2
- package/src/cli/AGENTS.md +17 -0
- package/src/cli/commands/__tests__/gateway.test.ts +55 -0
- package/src/cli/commands/apps.help.ts +17 -11
- package/src/cli/commands/apps.ts +5 -15
- package/src/cli/commands/gateway.help.ts +30 -0
- package/src/cli/commands/gateway.ts +40 -1
- package/src/cli/commands/platform/__tests__/status.test.ts +0 -90
- package/src/cli/commands/platform/index.help.ts +3 -2
- package/src/cli/commands/platform/index.ts +0 -9
- package/src/cli/commands/routes.help.ts +13 -7
- package/src/cli/commands/routes.ts +5 -3
- package/src/cli/commands/status.help.ts +24 -0
- package/src/cli/commands/status.ts +29 -0
- package/src/cli/lib/__tests__/global-json-option.test.ts +97 -0
- package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +1 -0
- package/src/cli/lib/__tests__/plugin-fingerprint.test.ts +31 -0
- package/src/cli/lib/bundled-marketplace.json +187 -173
- package/src/cli/lib/global-json-option.ts +41 -0
- package/src/cli/lib/plugin-fingerprint.ts +18 -7
- package/src/cli/program.ts +5 -0
- package/src/config/bundled-skills/messaging/TOOLS.json +2 -2
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +27 -19
- package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +3 -3
- package/src/config/feature-flag-registry.json +1 -9
- package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +3 -6
- package/src/daemon/__tests__/conversation-tool-setup-plugin-scope.test.ts +3 -6
- package/src/daemon/__tests__/conversation-tool-setup.test.ts +8 -5
- package/src/daemon/conversation-tool-setup.ts +5 -90
- package/src/daemon/conversation.ts +2 -2
- package/src/messaging/provider-types.ts +9 -0
- package/src/messaging/providers/outlook/adapter.ts +17 -2
- package/src/messaging/providers/outlook/client.ts +11 -2
- package/src/messaging/providers/outlook/types.ts +9 -0
- package/src/monitoring/__tests__/plugin-source-watch.test.ts +37 -0
- package/src/monitoring/plugin-source-watch.ts +53 -0
- package/src/oauth/seed-providers.ts +6 -0
- package/src/persistence/embeddings/__tests__/messages-lexical-index.test.ts +3 -0
- package/src/persistence/embeddings/messages-lexical-index.ts +11 -0
- package/src/plugin-api/conversation-turn.ts +234 -0
- package/src/plugin-api/index.ts +12 -0
- package/src/plugins/__tests__/source-fingerprint.test.ts +41 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +48 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-skill-card.test.ts +46 -5
- package/src/plugins/defaults/memory/graph/tool-handlers.ts +2 -2
- package/src/plugins/defaults/memory/graph-topology/__tests__/build-memory-graph.test.ts +81 -2
- package/src/plugins/defaults/memory/graph-topology/build-memory-graph.ts +80 -33
- package/src/plugins/defaults/memory/memory-retrospective-job.ts +40 -1
- package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +28 -2
- package/src/plugins/mtime-cache.ts +26 -13
- package/src/plugins/plugin-tree-walk.ts +30 -0
- package/src/plugins/source-fingerprint.ts +9 -2
- package/src/plugins/surface-import.ts +28 -0
- package/src/providers/speech-to-text/__tests__/vellum-managed-realtime.test.ts +1 -1
- package/src/providers/speech-to-text/__tests__/vellum-speech-relay-connection.test.ts +4 -1
- package/src/providers/speech-to-text/vellum-speech-relay-connection.ts +5 -0
- package/src/runtime/routes/__tests__/gateway-status-routes.test.ts +84 -0
- package/src/runtime/routes/__tests__/plugins-routes.test.ts +47 -3
- package/src/runtime/routes/__tests__/user-routes-cli.test.ts +154 -0
- package/src/runtime/routes/app-management-routes.ts +96 -32
- package/src/runtime/routes/app-routes.ts +33 -17
- package/src/runtime/routes/gateway-status-routes.ts +69 -0
- package/src/runtime/routes/index.ts +2 -0
- package/src/runtime/routes/platform-routes.ts +4 -14
- package/src/runtime/routes/plugins-routes.ts +58 -1
- package/src/runtime/routes/settings-routes.ts +8 -6
- package/src/runtime/routes/user-route-dispatcher.ts +6 -86
- package/src/runtime/routes/user-route-resolution.ts +141 -0
- package/src/runtime/routes/user-routes-cli.ts +56 -35
- package/src/telemetry/AGENTS.md +15 -0
- package/src/telemetry/__tests__/telemetry-event-fixtures.ts +258 -0
- package/src/telemetry/telemetry-wire-source.json +1 -1
- package/src/telemetry/telemetry-wire-validation.test.ts +157 -0
- package/src/telemetry/telemetry-wire-validation.ts +125 -0
- package/src/telemetry/telemetry-wire.generated.ts +60 -9
- package/src/telemetry/types.test.ts +38 -0
- package/src/telemetry/types.ts +183 -91
- package/src/telemetry/usage-telemetry-reporter.ts +5 -0
- package/src/telemetry/watchdog-direct-emit.ts +6 -0
- package/src/tools/skills/scaffold-managed.ts +43 -11
|
@@ -6,123 +6,150 @@
|
|
|
6
6
|
},
|
|
7
7
|
"plugins": [
|
|
8
8
|
{
|
|
9
|
-
"name": "
|
|
9
|
+
"name": "admin-copilot",
|
|
10
10
|
"source": {
|
|
11
11
|
"source": "github",
|
|
12
|
-
"repo": "
|
|
13
|
-
"ref": "
|
|
12
|
+
"repo": "vellum-ai/admin-copilot",
|
|
13
|
+
"ref": "d30596aa50a1c702f5d74e05c45bd965d14e2107"
|
|
14
14
|
},
|
|
15
|
-
"description": "
|
|
15
|
+
"description": "Proactive chief-of-staff: a morning digest, propose-then-confirm inbox triage, calendar prep, and a weekly competitor brief.",
|
|
16
16
|
"category": "productivity",
|
|
17
|
-
"homepage": "https://github.com/
|
|
17
|
+
"homepage": "https://github.com/vellum-ai/admin-copilot",
|
|
18
18
|
"license": "MIT"
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
|
-
"name": "
|
|
21
|
+
"name": "agent-wrapped",
|
|
22
22
|
"source": {
|
|
23
23
|
"source": "github",
|
|
24
|
-
"repo": "vellum-ai/
|
|
25
|
-
"ref": "
|
|
24
|
+
"repo": "vellum-ai/agent-wrapped",
|
|
25
|
+
"ref": "1bfa2b9c0735662e4c493955a414b6b62136a380"
|
|
26
26
|
},
|
|
27
|
-
"description": "
|
|
28
|
-
"category": "
|
|
29
|
-
"
|
|
30
|
-
"
|
|
27
|
+
"description": "Your agent's year in review: conversations, days together, memories formed, swear count, top topics, and the receipt (total tokens + LLM calls). Works with Vellum agents and Claude Code. Ships a stats collector tool, a CLI, a Claude Code plugin, and a skill for the shareable cards experience.",
|
|
28
|
+
"category": "creative",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"submittedBy": "marina",
|
|
31
|
+
"homepage": "https://agent-wrapped.com"
|
|
31
32
|
},
|
|
32
33
|
{
|
|
33
|
-
"name": "
|
|
34
|
+
"name": "ai-hero-engineer-kit",
|
|
34
35
|
"source": {
|
|
35
36
|
"source": "github",
|
|
36
|
-
"repo": "
|
|
37
|
-
"ref": "
|
|
37
|
+
"repo": "marinatrajk/ai-hero-engineer-kit",
|
|
38
|
+
"ref": "18d33c62b15a3e2cc22dc070723fe3077749dcec"
|
|
38
39
|
},
|
|
39
|
-
"description": "
|
|
40
|
-
"category": "
|
|
41
|
-
"homepage": "https://github.com/
|
|
40
|
+
"description": "Five engineering skills adapted from Matt Pocock's '5 Agent Skills I Use Every Day' \u2014 plans, PRDs, vertical-slice issues, TDD loop, and codebase deepening in one install.",
|
|
41
|
+
"category": "developer",
|
|
42
|
+
"homepage": "https://github.com/marinatrajk/ai-hero-engineer-kit",
|
|
42
43
|
"license": "MIT"
|
|
43
44
|
},
|
|
44
45
|
{
|
|
45
|
-
"name": "
|
|
46
|
+
"name": "amex-perk-reminder",
|
|
46
47
|
"source": {
|
|
47
48
|
"source": "github",
|
|
48
|
-
"repo": "AnitaKirkovska/
|
|
49
|
-
"ref": "
|
|
49
|
+
"repo": "AnitaKirkovska/amex-perk-reminder",
|
|
50
|
+
"ref": "48649b3e9f5c37153c7a8b2887a740eadd7c0b1e"
|
|
50
51
|
},
|
|
51
|
-
"description": "
|
|
52
|
-
"category": "
|
|
53
|
-
"homepage": "https://github.com/AnitaKirkovska/
|
|
52
|
+
"description": "Track every credit on the Amex cards you hold (Platinum, Gold, Business Platinum, Delta Gold/Platinum/Reserve) with status-aware reminders before any window closes.",
|
|
53
|
+
"category": "lifestyle",
|
|
54
|
+
"homepage": "https://github.com/AnitaKirkovska/amex-perk-reminder",
|
|
54
55
|
"license": "MIT"
|
|
55
56
|
},
|
|
56
57
|
{
|
|
57
|
-
"name": "
|
|
58
|
+
"name": "astrology-horoscope",
|
|
58
59
|
"source": {
|
|
59
60
|
"source": "github",
|
|
60
|
-
"repo": "vellum-ai/
|
|
61
|
-
"ref": "
|
|
61
|
+
"repo": "vellum-ai/astrology-horoscope",
|
|
62
|
+
"ref": "d226ce2e0a021e12cbf89ca7313f7c76a0bd8e39"
|
|
62
63
|
},
|
|
63
|
-
"description": "
|
|
64
|
-
"category": "
|
|
65
|
-
"homepage": "https://github.com/vellum-ai/
|
|
64
|
+
"description": "Western tropical natal chart and transit computation. Local ephemeris (astronomy-engine, no API keys) for planet positions, ascendant/midheaven, whole-sign houses, and aspects, plus a natal-reading skill that interprets the raw chart into a readable report.",
|
|
65
|
+
"category": "hobby",
|
|
66
|
+
"homepage": "https://github.com/vellum-ai/astrology-horoscope",
|
|
66
67
|
"license": "MIT"
|
|
67
68
|
},
|
|
68
69
|
{
|
|
69
|
-
"name": "
|
|
70
|
+
"name": "caveman",
|
|
70
71
|
"source": {
|
|
71
72
|
"source": "github",
|
|
72
|
-
"repo": "
|
|
73
|
-
"ref": "
|
|
73
|
+
"repo": "JuliusBrussee/caveman",
|
|
74
|
+
"ref": "63a91ecadbf4c4719a4602a5abb00883f9966034"
|
|
74
75
|
},
|
|
75
|
-
"description": "
|
|
76
|
+
"description": "Ultra-compressed communication mode that strips filler words to cut token usage.",
|
|
76
77
|
"category": "productivity",
|
|
77
|
-
"homepage": "https://github.com/
|
|
78
|
-
"license": "MIT"
|
|
78
|
+
"homepage": "https://github.com/JuliusBrussee/caveman",
|
|
79
|
+
"license": "MIT",
|
|
80
|
+
"icon": "\ud83e\uddb4"
|
|
79
81
|
},
|
|
80
82
|
{
|
|
81
|
-
"name": "
|
|
83
|
+
"name": "coffee-aficionado",
|
|
82
84
|
"source": {
|
|
83
85
|
"source": "github",
|
|
84
|
-
"repo": "vellum-ai/
|
|
85
|
-
"ref": "
|
|
86
|
+
"repo": "vellum-ai/coffee-aficionado",
|
|
87
|
+
"ref": "facd5a03979605edc894ea61e9a45f7b6a53214a"
|
|
86
88
|
},
|
|
87
|
-
"description": "
|
|
88
|
-
"category": "
|
|
89
|
-
"homepage": "https://github.com/vellum-ai/
|
|
89
|
+
"description": "Find great coffee beans and machines matched to your taste profile, budget, and kitchen. Persistent memory learns your preferences over time.",
|
|
90
|
+
"category": "lifestyle",
|
|
91
|
+
"homepage": "https://github.com/vellum-ai/coffee-aficionado",
|
|
92
|
+
"license": "MIT",
|
|
93
|
+
"icon": "\u2615"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"name": "cofounder",
|
|
97
|
+
"source": {
|
|
98
|
+
"source": "github",
|
|
99
|
+
"repo": "vellum-ai/cofounder",
|
|
100
|
+
"ref": "547adf1c0db0cbb32855ff0e4ef46c056248bdea"
|
|
101
|
+
},
|
|
102
|
+
"description": "AI co-founder that remembers your company context, challenges your thinking, and tracks your decisions.",
|
|
103
|
+
"category": "productivity",
|
|
104
|
+
"homepage": "https://github.com/vellum-ai/cofounder",
|
|
90
105
|
"license": "MIT"
|
|
91
106
|
},
|
|
92
107
|
{
|
|
93
|
-
"name": "
|
|
108
|
+
"name": "cognee",
|
|
94
109
|
"source": {
|
|
95
110
|
"source": "github",
|
|
96
|
-
"repo": "
|
|
97
|
-
"
|
|
111
|
+
"repo": "topoteretes/cognee-integrations",
|
|
112
|
+
"path": "integrations/vellum-assistant",
|
|
113
|
+
"ref": "d79bd9a216c9f6d88d27694cc0b42a18b63dba88"
|
|
98
114
|
},
|
|
99
|
-
"description": "
|
|
100
|
-
"category": "
|
|
101
|
-
"homepage": "https://github.com/
|
|
115
|
+
"description": "Cognee knowledge graph memory for Vellum Assistant: session-aware storage, auto-routing recall, and persistent learning across sessions. Supports local mode and Cognee Cloud.",
|
|
116
|
+
"category": "memory",
|
|
117
|
+
"homepage": "https://github.com/topoteretes/cognee-integrations/tree/main/integrations/vellum-assistant"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"name": "dynamic-notch",
|
|
121
|
+
"source": {
|
|
122
|
+
"source": "github",
|
|
123
|
+
"repo": "AnitaKirkovska/dynamic-notch",
|
|
124
|
+
"ref": "9729c3685d60d00d1de73a183b03122b9fa1f8f4"
|
|
125
|
+
},
|
|
126
|
+
"description": "Put your Vellum assistant inside your MacBook's notch: click to chat, hold Ctrl+Option to talk, and get a floating task bulb while it works, with live-streamed replies and per-sentence voice.",
|
|
127
|
+
"category": "interface",
|
|
128
|
+
"homepage": "https://github.com/AnitaKirkovska/dynamic-notch",
|
|
102
129
|
"license": "MIT"
|
|
103
130
|
},
|
|
104
131
|
{
|
|
105
|
-
"name": "
|
|
132
|
+
"name": "family-briefing",
|
|
106
133
|
"source": {
|
|
107
134
|
"source": "github",
|
|
108
|
-
"repo": "
|
|
109
|
-
"ref": "
|
|
135
|
+
"repo": "AnitaKirkovska/family-briefing",
|
|
136
|
+
"ref": "145f341db7d06ffa81e2052033f187679b8bda4d"
|
|
110
137
|
},
|
|
111
|
-
"description": "
|
|
138
|
+
"description": "Daily morning briefing for parents: merges family calendars, triages school emails, and detects scheduling conflicts.",
|
|
112
139
|
"category": "productivity",
|
|
113
|
-
"homepage": "https://github.com/
|
|
140
|
+
"homepage": "https://github.com/AnitaKirkovska/family-briefing",
|
|
114
141
|
"license": "MIT"
|
|
115
142
|
},
|
|
116
143
|
{
|
|
117
|
-
"name": "
|
|
144
|
+
"name": "fitness-companion",
|
|
118
145
|
"source": {
|
|
119
146
|
"source": "github",
|
|
120
|
-
"repo": "vellum-ai/
|
|
121
|
-
"ref": "
|
|
147
|
+
"repo": "vellum-ai/fitness-companion",
|
|
148
|
+
"ref": "fe4e02e2b514207a37f2a7e9f9c500ec8a73edcb"
|
|
122
149
|
},
|
|
123
|
-
"description": "
|
|
124
|
-
"category": "
|
|
125
|
-
"homepage": "https://github.com/vellum-ai/
|
|
150
|
+
"description": "Fitness and nutrition companion. Logs meals, workouts, and weight; looks up nutrition data from OpenFoodFacts; calculates macro targets; and injects daily fitness context into every conversation.",
|
|
151
|
+
"category": "health",
|
|
152
|
+
"homepage": "https://github.com/vellum-ai/fitness-companion",
|
|
126
153
|
"license": "MIT"
|
|
127
154
|
},
|
|
128
155
|
{
|
|
@@ -138,123 +165,111 @@
|
|
|
138
165
|
"license": "MIT"
|
|
139
166
|
},
|
|
140
167
|
{
|
|
141
|
-
"name": "
|
|
168
|
+
"name": "google-drive-search",
|
|
142
169
|
"source": {
|
|
143
170
|
"source": "github",
|
|
144
|
-
"repo": "
|
|
145
|
-
"ref": "
|
|
171
|
+
"repo": "ZeebBoyBlue/google-drive-search",
|
|
172
|
+
"ref": "ddd5013477cc1ec8d1fb174db6b599dbfe1cca21"
|
|
146
173
|
},
|
|
147
|
-
"description": "
|
|
148
|
-
"category": "
|
|
149
|
-
"homepage": "https://github.com/
|
|
150
|
-
"license": "
|
|
174
|
+
"description": "Local full-text search across your Google Drive. Indexes file metadata and document content into SQLite FTS5 for instant, private search.",
|
|
175
|
+
"category": "productivity",
|
|
176
|
+
"homepage": "https://github.com/ZeebBoyBlue/google-drive-search",
|
|
177
|
+
"license": "Apache-2.0"
|
|
151
178
|
},
|
|
152
179
|
{
|
|
153
|
-
"name": "
|
|
180
|
+
"name": "influencer-marketing",
|
|
154
181
|
"source": {
|
|
155
182
|
"source": "github",
|
|
156
|
-
"repo": "
|
|
157
|
-
"ref": "
|
|
183
|
+
"repo": "ZeebBoyBlue/influencer",
|
|
184
|
+
"ref": "8629b0dcfdacf62246122af2dcd7320baa6db04e"
|
|
158
185
|
},
|
|
159
|
-
"description": "
|
|
160
|
-
"category": "
|
|
161
|
-
"homepage": "https://github.com/
|
|
186
|
+
"description": "Find and research influencers on Instagram, TikTok, and X/Twitter. Includes a strategy builder that walks from campaign brief to research criteria, a research skill that discovers real profiles via browser automation, scores candidates, and exports ranked shortlists, and a dashboard skill that turns the shortlist into an interactive outreach tracker.",
|
|
187
|
+
"category": "marketing",
|
|
188
|
+
"homepage": "https://github.com/ZeebBoyBlue/influencer",
|
|
162
189
|
"license": "MIT"
|
|
163
190
|
},
|
|
164
191
|
{
|
|
165
|
-
"name": "
|
|
192
|
+
"name": "kitchen-companion",
|
|
166
193
|
"source": {
|
|
167
194
|
"source": "github",
|
|
168
|
-
"repo": "vellum-ai/
|
|
169
|
-
"ref": "
|
|
195
|
+
"repo": "vellum-ai/kitchen-companion",
|
|
196
|
+
"ref": "b6ebdda6992dfa1fd2186a600a642f538fb64584"
|
|
170
197
|
},
|
|
171
|
-
"description": "
|
|
172
|
-
"category": "
|
|
173
|
-
"homepage": "https://github.com/vellum-ai/
|
|
198
|
+
"description": "Full kitchen companion. Scan your fridge with a photo to stock a pantry inventory and get 3 makeable-now recipes, get alerts before food expires, clip recipes from any URL into a clean format, and generate meal plans with grocery lists from what you actually have.",
|
|
199
|
+
"category": "lifestyle",
|
|
200
|
+
"homepage": "https://github.com/vellum-ai/kitchen-companion",
|
|
174
201
|
"license": "MIT"
|
|
175
202
|
},
|
|
176
203
|
{
|
|
177
|
-
"name": "
|
|
204
|
+
"name": "level-up",
|
|
178
205
|
"source": {
|
|
179
206
|
"source": "github",
|
|
180
|
-
"repo": "vellum-ai/
|
|
181
|
-
"ref": "
|
|
207
|
+
"repo": "vellum-ai/level-up",
|
|
208
|
+
"ref": "d3cbb50f8aba1f8320cd2d59ea3a85d0a4e9210b"
|
|
182
209
|
},
|
|
183
|
-
"description": "
|
|
184
|
-
"category": "
|
|
185
|
-
"homepage": "https://github.com/vellum-ai/
|
|
210
|
+
"description": "Surfaces a first-class \"Level Up\" diff card whenever the assistant edits its own skills or plugins, so you can see how it improved itself after the fact.",
|
|
211
|
+
"category": "developer",
|
|
212
|
+
"homepage": "https://github.com/vellum-ai/level-up",
|
|
186
213
|
"license": "MIT"
|
|
187
214
|
},
|
|
188
215
|
{
|
|
189
|
-
"name": "
|
|
216
|
+
"name": "marketing-expert",
|
|
190
217
|
"source": {
|
|
191
218
|
"source": "github",
|
|
192
|
-
"repo": "
|
|
193
|
-
"ref": "
|
|
219
|
+
"repo": "vellum-ai/marketing-expert",
|
|
220
|
+
"ref": "6a85ee33e184c2be56ed63cd5681d1287a941eff"
|
|
194
221
|
},
|
|
195
|
-
"description": "
|
|
196
|
-
"category": "
|
|
197
|
-
"homepage": "https://github.com/
|
|
222
|
+
"description": "Acts as a full-stack marketing expert for any business (B2B or B2C): an on-demand persona plus playbook skills (positioning, demand planning, launches, content & copywriting, brand voice, email sequences, SEO & GEO, competitive teardown, board reporting) and deterministic funnel/positioning/GTM/competitive tools.",
|
|
223
|
+
"category": "marketing",
|
|
224
|
+
"homepage": "https://github.com/vellum-ai/marketing-expert",
|
|
198
225
|
"license": "MIT"
|
|
199
226
|
},
|
|
200
227
|
{
|
|
201
|
-
"name": "
|
|
228
|
+
"name": "model-router",
|
|
202
229
|
"source": {
|
|
203
230
|
"source": "github",
|
|
204
|
-
"repo": "
|
|
205
|
-
"ref": "
|
|
231
|
+
"repo": "AnitaKirkovska/model-router",
|
|
232
|
+
"ref": "605100d27b5333b243ada5a29fcb324e2217d336"
|
|
206
233
|
},
|
|
207
|
-
"description": "
|
|
208
|
-
"category": "
|
|
209
|
-
"homepage": "https://github.com/
|
|
234
|
+
"description": "Routes each user-facing message to one of your workspace's inference profiles, so model selection can vary per call instead of staying pinned to a single profile.",
|
|
235
|
+
"category": "productivity",
|
|
236
|
+
"homepage": "https://github.com/AnitaKirkovska/model-router",
|
|
210
237
|
"license": "MIT"
|
|
211
238
|
},
|
|
212
239
|
{
|
|
213
|
-
"name": "
|
|
240
|
+
"name": "motion-design",
|
|
214
241
|
"source": {
|
|
215
242
|
"source": "github",
|
|
216
|
-
"repo": "vellum-ai/
|
|
217
|
-
"ref": "
|
|
243
|
+
"repo": "vellum-ai/motion-design",
|
|
244
|
+
"ref": "9cdc798c26e0141dcdf6887d7707559c38bfe00e"
|
|
218
245
|
},
|
|
219
|
-
"description": "
|
|
220
|
-
"category": "
|
|
221
|
-
"homepage": "https://github.com/vellum-ai/
|
|
246
|
+
"description": "Teaches the assistant to build polished UI animations with Motion (motion.dev) for React: animated product mockups, chat replays, typing effects, and staggered reveals, with a complete animated chat example included.",
|
|
247
|
+
"category": "creative",
|
|
248
|
+
"homepage": "https://github.com/vellum-ai/motion-design",
|
|
222
249
|
"license": "MIT"
|
|
223
250
|
},
|
|
224
251
|
{
|
|
225
|
-
"name": "
|
|
252
|
+
"name": "originkit",
|
|
226
253
|
"source": {
|
|
227
254
|
"source": "github",
|
|
228
|
-
"repo": "
|
|
229
|
-
"ref": "
|
|
255
|
+
"repo": "vellum-ai/originkit",
|
|
256
|
+
"ref": "9aa260c2561ad9e765832dc342e9bbb5138858a4"
|
|
230
257
|
},
|
|
231
|
-
"description": "
|
|
232
|
-
"category": "
|
|
233
|
-
"homepage": "https://github.com/
|
|
258
|
+
"description": "Browse and import animated UI components from Originkit, a free library of 50 animated components. Browse by category or search term without an API key; fetch component source code (React, Next.js, Vite, Framer) with a free key from originkit.dev.",
|
|
259
|
+
"category": "productivity",
|
|
260
|
+
"homepage": "https://github.com/vellum-ai/originkit",
|
|
234
261
|
"license": "MIT"
|
|
235
262
|
},
|
|
236
263
|
{
|
|
237
|
-
"name": "
|
|
264
|
+
"name": "personal-finance",
|
|
238
265
|
"source": {
|
|
239
266
|
"source": "github",
|
|
240
|
-
"repo": "
|
|
241
|
-
"ref": "
|
|
267
|
+
"repo": "AnitaKirkovska/personal-finance",
|
|
268
|
+
"ref": "f8f9bfba3d86c943001da894b920e7e867507dd4"
|
|
242
269
|
},
|
|
243
|
-
"description": "
|
|
270
|
+
"description": "Track expenses, income, recurring bills, and savings funds from your assistant. Multi-currency, receipt OCR, Plaid bank sync, and financial summaries. All data stored locally in SQLite.",
|
|
244
271
|
"category": "productivity",
|
|
245
|
-
"homepage": "https://github.com/
|
|
246
|
-
"license": "Apache-2.0"
|
|
247
|
-
},
|
|
248
|
-
{
|
|
249
|
-
"name": "coffee-aficionado",
|
|
250
|
-
"source": {
|
|
251
|
-
"source": "github",
|
|
252
|
-
"repo": "vellum-ai/coffee-aficionado",
|
|
253
|
-
"ref": "b37a0b5adc2bda5559d3b21abe38e436093c1ff3"
|
|
254
|
-
},
|
|
255
|
-
"description": "Find great coffee beans and machines matched to your taste profile, budget, and kitchen. Persistent memory learns your preferences over time.",
|
|
256
|
-
"category": "lifestyle",
|
|
257
|
-
"homepage": "https://github.com/vellum-ai/coffee-aficionado",
|
|
272
|
+
"homepage": "https://github.com/AnitaKirkovska/personal-finance",
|
|
258
273
|
"license": "MIT"
|
|
259
274
|
},
|
|
260
275
|
{
|
|
@@ -270,87 +285,87 @@
|
|
|
270
285
|
"license": "MIT"
|
|
271
286
|
},
|
|
272
287
|
{
|
|
273
|
-
"name": "
|
|
288
|
+
"name": "polyglot",
|
|
274
289
|
"source": {
|
|
275
290
|
"source": "github",
|
|
276
|
-
"repo": "vellum-ai/
|
|
277
|
-
"ref": "
|
|
291
|
+
"repo": "vellum-ai/polyglot",
|
|
292
|
+
"ref": "ab607b7c60b64b0ac5c6bf01609840a004cfd002"
|
|
278
293
|
},
|
|
279
|
-
"description": "
|
|
280
|
-
"category": "
|
|
281
|
-
"homepage": "https://github.com/vellum-ai/
|
|
294
|
+
"description": "Ambient language acquisition through your assistant. Three graduated modes (practice, ambient, immersive) weave a target language into your real conversations, with SM-2 spaced repetition, error-pattern tracking, and CEFR level history.",
|
|
295
|
+
"category": "education",
|
|
296
|
+
"homepage": "https://github.com/vellum-ai/polyglot",
|
|
282
297
|
"license": "MIT"
|
|
283
298
|
},
|
|
284
299
|
{
|
|
285
|
-
"name": "
|
|
300
|
+
"name": "proactive-slacks",
|
|
286
301
|
"source": {
|
|
287
302
|
"source": "github",
|
|
288
|
-
"repo": "AnitaKirkovska/
|
|
289
|
-
"ref": "
|
|
303
|
+
"repo": "AnitaKirkovska/proactive-slacks",
|
|
304
|
+
"ref": "a5dd35699455ae7a2db3d2243511a8c7edc49aea"
|
|
290
305
|
},
|
|
291
|
-
"description": "
|
|
306
|
+
"description": "Let your assistant reach you on Slack on purpose. Route notifications by topic to the right channel at the right volume, with heartbeat-based change detection so it only pings when something actually changed.",
|
|
292
307
|
"category": "productivity",
|
|
293
|
-
"homepage": "https://github.com/AnitaKirkovska/
|
|
308
|
+
"homepage": "https://github.com/AnitaKirkovska/proactive-slacks",
|
|
294
309
|
"license": "MIT"
|
|
295
310
|
},
|
|
296
311
|
{
|
|
297
|
-
"name": "
|
|
312
|
+
"name": "reading-pal",
|
|
298
313
|
"source": {
|
|
299
314
|
"source": "github",
|
|
300
|
-
"repo": "
|
|
301
|
-
"ref": "
|
|
315
|
+
"repo": "vellum-ai/reading-pal",
|
|
316
|
+
"ref": "5219474719e67db7ea64848f6bd2a0b7312e4f27"
|
|
302
317
|
},
|
|
303
|
-
"description": "
|
|
304
|
-
"category": "
|
|
305
|
-
"homepage": "https://github.com/
|
|
318
|
+
"description": "Your reading life in one plugin. Track your TBR pile, get guilt-tripped about your backlog, find your next read, and sync from Goodreads.",
|
|
319
|
+
"category": "hobby",
|
|
320
|
+
"homepage": "https://github.com/vellum-ai/reading-pal",
|
|
306
321
|
"license": "MIT"
|
|
307
322
|
},
|
|
308
323
|
{
|
|
309
|
-
"name": "
|
|
324
|
+
"name": "simple-memory",
|
|
310
325
|
"source": {
|
|
311
326
|
"source": "github",
|
|
312
|
-
"repo": "
|
|
313
|
-
"ref": "
|
|
327
|
+
"repo": "vellum-ai/simple-memory",
|
|
328
|
+
"ref": "ed09a4c01bf18e4ac8859faee94cb65c7cbd1ca3"
|
|
314
329
|
},
|
|
315
|
-
"description": "
|
|
316
|
-
"category": "
|
|
317
|
-
"homepage": "https://github.com/
|
|
330
|
+
"description": "Reference memory plugin that exercises the full plugin API with low-cost variants of Vellum's memory defaults.",
|
|
331
|
+
"category": "memory",
|
|
332
|
+
"homepage": "https://github.com/vellum-ai/simple-memory",
|
|
318
333
|
"license": "MIT"
|
|
319
334
|
},
|
|
320
335
|
{
|
|
321
|
-
"name": "
|
|
336
|
+
"name": "smb-inbox-brief",
|
|
322
337
|
"source": {
|
|
323
338
|
"source": "github",
|
|
324
|
-
"repo": "AnitaKirkovska/
|
|
325
|
-
"ref": "
|
|
339
|
+
"repo": "AnitaKirkovska/smb-inbox-brief",
|
|
340
|
+
"ref": "8e298bd8ded5e0e16c5160edcd547eda1e4d222f"
|
|
326
341
|
},
|
|
327
|
-
"description": "
|
|
342
|
+
"description": "Find urgent replies, overdue invoices, quotes, and customer follow-ups before they slip. Scans email, logs business items, delivers urgency-ranked daily briefs.",
|
|
328
343
|
"category": "productivity",
|
|
329
|
-
"homepage": "https://github.com/AnitaKirkovska/
|
|
344
|
+
"homepage": "https://github.com/AnitaKirkovska/smb-inbox-brief",
|
|
330
345
|
"license": "MIT"
|
|
331
346
|
},
|
|
332
347
|
{
|
|
333
|
-
"name": "
|
|
348
|
+
"name": "tennis-companion",
|
|
334
349
|
"source": {
|
|
335
350
|
"source": "github",
|
|
336
|
-
"repo": "
|
|
337
|
-
"
|
|
338
|
-
"ref": "d79bd9a216c9f6d88d27694cc0b42a18b63dba88"
|
|
351
|
+
"repo": "vellum-ai/tennis-companion",
|
|
352
|
+
"ref": "1c6d2bd448ee7b5285d37cfee4e0e413522746d1"
|
|
339
353
|
},
|
|
340
|
-
"description": "
|
|
341
|
-
"category": "
|
|
342
|
-
"homepage": "https://github.com/
|
|
354
|
+
"description": "Tennis journal, drill sessions, court finder, and progress tracking. Log matches with opponent tendencies, generate 30-minute practice sessions with progressions, find nearby courts via OpenStreetMap, and track win rate by surface and conditions.",
|
|
355
|
+
"category": "health",
|
|
356
|
+
"homepage": "https://github.com/vellum-ai/tennis-companion",
|
|
357
|
+
"license": "MIT"
|
|
343
358
|
},
|
|
344
359
|
{
|
|
345
|
-
"name": "
|
|
360
|
+
"name": "travel-planner",
|
|
346
361
|
"source": {
|
|
347
362
|
"source": "github",
|
|
348
|
-
"repo": "
|
|
349
|
-
"ref": "
|
|
363
|
+
"repo": "AnitaKirkovska/travel-planner",
|
|
364
|
+
"ref": "10c2c4878b017997cb6766b8204b9803c56bc6cf"
|
|
350
365
|
},
|
|
351
|
-
"description": "
|
|
352
|
-
"category": "
|
|
353
|
-
"homepage": "https://github.com/
|
|
366
|
+
"description": "A travel EA for your assistant. Remembers how you travel (carrier, miles, hotel budget, card benefits), keeps per-trip records, watches Gmail for booking changes, syncs your calendar, and emails an EA-style trip brief 48 hours before departure.",
|
|
367
|
+
"category": "lifestyle",
|
|
368
|
+
"homepage": "https://github.com/AnitaKirkovska/travel-planner",
|
|
354
369
|
"license": "MIT"
|
|
355
370
|
},
|
|
356
371
|
{
|
|
@@ -366,17 +381,16 @@
|
|
|
366
381
|
"license": "MIT"
|
|
367
382
|
},
|
|
368
383
|
{
|
|
369
|
-
"name": "
|
|
384
|
+
"name": "writing-coach",
|
|
370
385
|
"source": {
|
|
371
386
|
"source": "github",
|
|
372
|
-
"repo": "vellum-ai/
|
|
373
|
-
"ref": "
|
|
387
|
+
"repo": "vellum-ai/writing-coach",
|
|
388
|
+
"ref": "9cb2289343fed2fd6ad8b0bb5db07616d1c8181c"
|
|
374
389
|
},
|
|
375
|
-
"description": "
|
|
376
|
-
"category": "
|
|
377
|
-
"homepage": "https://github.com/vellum-ai/
|
|
390
|
+
"description": "A writing coach in your pocket. Daily prompts that escalate with your streak, savage-but-constructive draft roasts, query letter critiques, and a word count enforcer that guilt-trips you when you skip.",
|
|
391
|
+
"category": "hobby",
|
|
392
|
+
"homepage": "https://github.com/vellum-ai/writing-coach",
|
|
378
393
|
"license": "MIT"
|
|
379
394
|
}
|
|
380
395
|
]
|
|
381
396
|
}
|
|
382
|
-
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
|
|
3
|
+
const JSON_FLAG = "--json";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Register a `--json` option on every leaf command in the tree that does not
|
|
7
|
+
* already declare one.
|
|
8
|
+
*
|
|
9
|
+
* Commander only recognizes an option at the position of the command it is
|
|
10
|
+
* attached to, so a single option on the root program would still reject
|
|
11
|
+
* `assistant status --json` with "unknown option '--json'". Attaching `--json`
|
|
12
|
+
* to each leaf command makes the flag accepted everywhere it is actually
|
|
13
|
+
* invoked, which is what callers (and agents) expect when they append `--json`
|
|
14
|
+
* to a command.
|
|
15
|
+
*
|
|
16
|
+
* Only **leaf** commands (those with no subcommands) get the option. Commander
|
|
17
|
+
* consumes a recognized option at the *outermost* command that declares it,
|
|
18
|
+
* even when the flag appears after the subcommand name — so putting `--json`
|
|
19
|
+
* on a group command like `clients` would swallow `clients list --json` before
|
|
20
|
+
* the `list` action ever sees it (`opts.json` would be undefined). Attaching it
|
|
21
|
+
* only to leaves keeps the flag bound to the command that reads it.
|
|
22
|
+
*
|
|
23
|
+
* Commands that render output through `writeOutput`/`shouldOutputJson` (which
|
|
24
|
+
* walk the parent chain) honor the flag automatically; leaves that declare
|
|
25
|
+
* their own `--json` are left untouched so their description and behavior win.
|
|
26
|
+
*/
|
|
27
|
+
export function registerGlobalJsonOption(program: Command): void {
|
|
28
|
+
const walk = (cmd: Command): void => {
|
|
29
|
+
const isLeaf = cmd.commands.length === 0;
|
|
30
|
+
const alreadyDeclared = cmd.options.some((opt) => opt.long === JSON_FLAG);
|
|
31
|
+
if (isLeaf && !alreadyDeclared) {
|
|
32
|
+
cmd.option(JSON_FLAG, "Output machine-readable JSON");
|
|
33
|
+
}
|
|
34
|
+
for (const child of cmd.commands) {
|
|
35
|
+
walk(child);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
for (const child of program.commands) {
|
|
39
|
+
walk(child);
|
|
40
|
+
}
|
|
41
|
+
}
|