vantage-peers-mcp 2.4.12 → 2.4.13

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/CHANGELOG.md CHANGED
@@ -1,10 +1,29 @@
1
1
  # Changelog
2
2
 
3
- ## [2.4.0] — 2026-05-28M3 iframeEmbedSessions + __VP_TOOL_RESULT__ stream marker + ack-checklist
3
+ ## [2.4.13] — 2026-06-02Post-public republish: attribution + CHANGELOG day-numbers + RULE #7 narrative scrub
4
+
5
+ Repository visibility flip to PUBLIC on 2026-06-02 (mission D62 `k57e4t21sr55rhz8ng554eseb987wvh3`). This patch republishes the npm package so the published README + CHANGELOG + attribution match the now-public source.
6
+
7
+ No runtime / API / schema changes. Documentation + metadata only.
8
+
9
+ What changed since v2.4.12:
10
+ - `mcp-server/package.json`: author restructured to "VantageOS AI Orchestrator Team" with contributors block (Pi, Laurent Perello, ElPi Corp). Dependency `@vantageos/mosaic@^0.1.2` added for Phase 1 Mosaic groundwork (PR #605, server-side createMosaicResource API ready for Phase 2 primitive swap).
11
+ - `mcp-server/CHANGELOG.md`: version headers simplified to `X.Y.Z — YYYY-MM-DD` (Day N anchors dropped per Laurent verdict 2026-06-02 — dates are self-explanatory, day numbers added noise). Narrative client-name mentions (Marie/Iris RH/Cédric Delport) genericized to "early-access RH cohort" / "self-host incident" per RULE #7 pre-public scrub.
12
+ - Root README rework (PR #611 + PR #610 + PR #616 chain): TL;DR + Mermaid architecture diagram + 5 hero features + 22-features collapsed details + 84-tools 8-groups + Backend: Convex 3-paths + attribution Credits section. README /team 404 hotfix landed in PR #616.
13
+
14
+ Merged PRs in this republish window:
15
+ - PR #611 (`9464f9a`) — T5ter README rework + CHANGELOG day-numbers + attribution
16
+ - PR #615 (`c189a1d`) — Phase 1 RULE #7 pre-public scrub
17
+ - PR #616 (`99eeae5`) — README /team 404 hotfix
18
+
19
+ Mission: D62 pre-public cleanup `k57e4t21sr55rhz8ng554eseb987wvh3`.
20
+ Friction capitalize: `post-public-flip-must-trigger-npm-republish-for-consistency-not-just-repo-visibility-flip` + `day-79-hook-should-validate-tree-not-commit-sha`.
21
+
22
+ ## [2.4.0] — 2026-05-29 — M3 iframeEmbedSessions + __VP_TOOL_RESULT__ stream marker + ack-checklist
4
23
 
5
24
  **Mission instance** : `sigma-vantage-peers-mcp-gui-iframe-embed-v1` (k5730xct6rvrwkvxhy5t5js12d87jwfw).
6
25
  **Pi sign-off** : PI_AUTHORIZED_TASK_ID=`k1793m1qgn0zaay6r87dhvsh7187kwya` (PROD-DEPLOY-AUTHORIZED).
7
- **Eta sign-off** : ETA_APPROVED_TASK_ID=`k171ep964sxabbrgmb21fk9axd87ka1n` at commit `338a7b9e6130ce69dc5fe7f3e2e9ecc4648b4f6a` (Day 79 SHA-pinned).
26
+ **Eta sign-off** : ETA_APPROVED_TASK_ID=`k171ep964sxabbrgmb21fk9axd87ka1n` at commit `338a7b9e6130ce69dc5fe7f3e2e9ecc4648b4f6a` (SHA-pinned).
8
27
  **Merge** : PR #545 squash `f509c8d92f0b142bc063a0e9dd070e1993cc729b`.
9
28
 
10
29
  M3 delivers the session registry and stream-marker protocol that connects the VP MCP server
@@ -56,7 +75,7 @@ Change is surgical — existing return shape is preserved; marker is appended as
56
75
  ### Ack checklist
57
76
 
58
77
  NEW `docs/M3-ACK-CHECKLIST.md` — bilingual FR/EN post-deploy verification checklist
59
- for Marie + Ismaël. Covers: package install, primitive reads, Shadow DOM scoping,
78
+ for the beta verifier cohort. Covers: package install, primitive reads, Shadow DOM scoping,
60
79
  stream marker emit + parse, bilingual spot check, WCAG AA (contrast + role attrs),
61
80
  default-OFF guard.
62
81
 
@@ -80,7 +99,7 @@ default-OFF guard.
80
99
  **Mission instance** : `sigma-vantage-peers-mcp-gui-iframe-embed-v1` (k5730xct6rvrwkvxhy5t5js12d87jwfw).
81
100
  **Template VR consumed** : `gui-iframe-embed-v1` v1.0.0 (jx7bzk0x1086tgwgj2zrssk2pn87k1ga).
82
101
 
83
- M1 Foundation (adapted MCP-pure paradigm per Pi arbitrage Day 84) :
102
+ M1 Foundation (adapted MCP-pure paradigm per Pi arbitrage 2026-05-28) :
84
103
  - NEW `mcp-server/src/ui-resources/index.ts` : URI parser `ui://vp/v1/<primitive>?<query>` + primitive registry + handler factory.
85
104
  - NEW `mcp-server/src/ui-resources/primitives/tasks-table.ts` : M1 MVP primitive returning HTML inline (Shadow DOM scoped CSS) — WCAG AA + bilingual FR+EN.
86
105
  - `mcp-server/server-http.ts` : wired `ListResourcesRequestSchema` + `ReadResourceRequestSchema` MCP handlers on the existing McpServer instance.
@@ -102,11 +121,13 @@ Bearer sha256 validation : Already in place since v2.3.4 DCR security fix. `mcp-
102
121
 
103
122
  Tests : 42 new vitest cases in `src/__tests__/ui-resources-m2-primitives.test.ts` (target was ≥22). Covers : PRIMITIVES registry (6 entries), each of 5 new primitives (empty + populated + FR labels + XSS escape + error fallback = 5 cases each), Zod schema roundtrip (VpToolResultSchema all 6 variants accepted, malformed rejected, individual payload schema validations). 0 regression on M1 17 cases + 194 other MCP tests (253/253 total).
104
123
 
105
- M3 next : Registry json-render + `__VP_TOOL_RESULT__<json>` stream marker + smoke E2E + ack-checklist + PI-SIGNED Convex prod deploy + visual ack Marie/Ismaël.
124
+ M3 next : Registry json-render + `__VP_TOOL_RESULT__<json>` stream marker + smoke E2E + ack-checklist + PI-SIGNED Convex prod deploy + visual ack from beta cohort verifiers.
125
+
126
+ ---
106
127
 
107
128
  ## v2.3.5 — 2026-05-28
108
129
 
109
- **Critical hotfix** — v2.3.3 (PR #539) shipped the backend filters `createdBy` + `updatedSince` and the Zod schema exports but did NOT wire those params into the 4 list MCP tool args blocks. Pi pull-cycle quickstart `list_tasks createdBy="pi" status="review" fields="lite"` was silently dropping `createdBy` at the MCP boundary and returning all visible tasks. Auto-clamp safeguard (Day 83) also could not trigger because Zod `.default(50)` / `.default(20)` on `limit` overrode the absent-value signal before it reached the backend.
130
+ **Critical hotfix** — v2.3.3 (PR #539) shipped the backend filters `createdBy` + `updatedSince` and the Zod schema exports but did NOT wire those params into the 4 list MCP tool args blocks. Pi pull-cycle quickstart `list_tasks createdBy="pi" status="review" fields="lite"` was silently dropping `createdBy` at the MCP boundary and returning all visible tasks. Auto-clamp safeguard (2026-05-27) also could not trigger because Zod `.default(50)` / `.default(20)` on `limit` overrode the absent-value signal before it reached the backend.
110
131
 
111
132
  Fixes:
112
133
  - `mcp-server/src/tools.ts` : 4 list tools now expose `createdBy` (`list_tasks` + `list_tasks_by_mission` only — `list_missions` + `list_briefing_notes` do not accept it backend-side) and `updatedSince` (all 4).
@@ -114,15 +135,15 @@ Fixes:
114
135
 
115
136
  Tests : 8 new boundary-forwarding cases (`src/__tests__/list-queries-v2.3.5-wire-createdby-updatedsince.test.ts`) — verify MCP layer actually forwards new params to `convex.query` instead of dropping them. 0 regression on existing suites.
116
137
 
117
- Detection : Vantage-Bridge architecture review Sigma scope Day 84 — direct `grep`/`sed` inspection of `tools.ts` confirmed the gap. Backend already correct since v2.3.3 (`convex/tasks.ts:354-357`).
138
+ Detection : Vantage-Bridge architecture review Sigma scope 2026-05-28 — direct `grep`/`sed` inspection of `tools.ts` confirmed the gap. Backend already correct since v2.3.3 (`convex/tasks.ts:354-357`).
118
139
 
119
- Fix-pattern (Day 84 capitalize) : when adding a new param across backend + MCP wrapper, the test suite MUST cover not only schema validation but also the tool-handler→convex.query forwarding boundary. Schema-only tests passed cleanly in v2.3.3 while the actual feature was broken in prod.
140
+ Fix-pattern (2026-05-28 capitalize) : when adding a new param across backend + MCP wrapper, the test suite MUST cover not only schema validation but also the tool-handler→convex.query forwarding boundary. Schema-only tests passed cleanly in v2.3.3 while the actual feature was broken in prod.
120
141
 
121
142
  VP task : `k177tsvdxzase5sjy2qm9fdvp187kbwr`. Predecessor v2.3.3 PR #539 (`k1796s5j6jfkvkx0tn5n926ftd87jx9p`).
122
143
 
123
144
  ## v2.3.4 — 2026-05-28
124
145
 
125
- **Security fix** — DCR (Dynamic Client Registration) self-registration now defaults to tenant-scope only. Master scope requires explicit admin authorization (`ADMIN_DCR_TOKEN` / `BEARER_SECRET_MASTER` env var). Closes beta blocker for Marie/Iris RH onboarding identified in VP Cloud audit Day 84.
146
+ **Security fix** — DCR (Dynamic Client Registration) self-registration now defaults to tenant-scope only. Master scope requires explicit admin authorization (`ADMIN_DCR_TOKEN` / `BEARER_SECRET_MASTER` env var). Closes beta blocker for early-access RH cohort onboarding identified in VP Cloud audit 2026-05-28.
126
147
 
127
148
  Changes:
128
149
  - `convex/oauth.ts`: `registerPublicClient` now explicitly rejects `scopeProfile="master"` with a `ScopeViolation` error. Previously only the HTTP server enforced this; the Convex-layer was bypassable via direct internal call.
@@ -131,11 +152,11 @@ Changes:
131
152
 
132
153
  Tests: 5 new Convex security tests (`convex/oauth-dcr-security.test.ts`) + 5 new MCP scope enforcement tests (`mcp-server/src/__tests__/dcr-scope-enforcement.test.ts`), 0 regression on existing suites.
133
154
 
134
- VP task: k17218rvqyncs1v6rwj3qdzfsn87jj4n. Beta unblock chain: DCR fix → 5 quick wins onboarding (seed-profiles + marie-iris-rh client + README VP Cloud + runbook + email).
155
+ VP task: k17218rvqyncs1v6rwj3qdzfsn87jj4n. Beta unblock chain: DCR fix → 5 quick wins onboarding (seed-profiles + early-access RH cohort client + README VP Cloud + runbook + email).
135
156
 
136
157
  ## v2.3.3 — 2026-05-28
137
158
 
138
- **Follow-up to v2.3.2 (Day 84 scope élargi)** — Extend list queries with `createdBy` + `updatedSince` filters + auto-clamp safeguard.
159
+ **Follow-up to v2.3.2 (2026-05-28 scope élargi)** — Extend list queries with `createdBy` + `updatedSince` filters + auto-clamp safeguard.
139
160
 
140
161
  Backend (Convex) :
141
162
  - `tasks.list` + `tasks.listByMission` : + `createdBy` (filter by task creator) + `updatedSince` (Unix ms window) + auto-clamp limit=30 when `fields="full"` and no explicit limit
@@ -157,7 +178,7 @@ VP task: `k1796s5j6jfkvkx0tn5n926ftd87jx9p`. Successor of `k17e09ng1tf217n93z9m4
157
178
 
158
179
  ## v2.3.2 — 2026-05-28
159
180
 
160
- **Hotfix** — Expose `fields="lite"` + `status` array/aliases in MCP tool schemas (Day 82 sprint gap).
181
+ **Hotfix** — Expose `fields="lite"` + `status` array/aliases in MCP tool schemas (2026-05-26 sprint gap).
161
182
 
162
183
  Backend support for these params shipped in v2.3.1 but the MCP wrapper Zod schemas never exposed them, so MCP clients couldn't pass them. Fixed for 4 list tools:
163
184
 
@@ -578,16 +578,7 @@ app.all("/mcp", bearerAuthMiddleware(), async (c) => {
578
578
  // biome-ignore lint/suspicious/noExplicitAny: Convex string API
579
579
  return convex.query(functionName, args);
580
580
  };
581
- const resource = await readUiResource(uri.toString(), fetchConvex);
582
- return {
583
- contents: [
584
- {
585
- uri: resource.uri,
586
- mimeType: resource.mimeType,
587
- text: resource.text,
588
- },
589
- ],
590
- };
581
+ return await readUiResource(uri.toString(), fetchConvex);
591
582
  });
592
583
  const transport = new WebStandardStreamableHTTPServerTransport();
593
584
  await server.connect(transport);
@@ -1,20 +1,27 @@
1
1
  /**
2
2
  * SEP-1865 ui:// resources for VantagePeers Generative UI.
3
3
  *
4
+ * Canonical PR #1865 (MERGED 2026-01-28) compliance:
5
+ * - MIME: text/html;profile=mcp-app (RESOURCE_MIME_TYPE)
6
+ * - _meta.ui: UIResourceMeta envelope (nested, NOT flat _meta["ui/resourceUri"])
7
+ * - Capability key declared at server initialize: io.modelcontextprotocol/ui
8
+ * - Fallback markdown content item in resources/read response (Critical Rule #1)
9
+ *
10
+ * Uses @mcp-ui/server createUIResource() helper (reference impl by SEP-1865 co-author).
11
+ *
4
12
  * URI pattern : ui://vp/v1/<primitive>?<query>
5
13
  * Examples :
6
14
  * ui://vp/v1/tasks-table?assignedTo=pi&status=review&fields=lite&limit=10
7
15
  * ui://vp/v1/messages-feed?recipient=sigma&limit=20
8
16
  *
9
- * M1 scope : 1 primitive (tasks-table) — proves the pipeline.
10
- * M2 scope : ≥6 primitives (tasks/messages/diary/missions/briefingNotes/memories).
11
- *
12
17
  * Pattern Hybrid 60% static lit-ui + 11% Gen UI + 27% Hybrid (cf vp-gui-views-research-2026-05-28.md).
13
- * Returns HTML inline with embedded JS + CSS Shadow DOM scoped.
14
18
  *
15
19
  * Reference instance Theta : theta-vantage-crm-gui-iframe-embed-v1 (blissful-gopher-531).
16
20
  * Mission Sigma : sigma-vantage-peers-mcp-gui-iframe-embed-v1 (k5730xct6rvrwkvxhy5t5js12d87jwfw).
17
21
  */
22
+ export declare const MCP_UI_CAPABILITY_KEY: "io.modelcontextprotocol/ui";
23
+ export declare const MCP_UI_MIME_TYPE = "text/html;profile=mcp-app";
24
+ type UIResourceMeta = Record<string, never>;
18
25
  export type UiResourceParsed = {
19
26
  primitive: string;
20
27
  query: URLSearchParams;
@@ -23,14 +30,30 @@ export declare function parseUiUri(uri: string): UiResourceParsed | null;
23
30
  export declare const PRIMITIVES: readonly ["tasks-table", "messages-feed", "diary-entry", "mission-timeline", "briefing-note", "memory-quote"];
24
31
  export type Primitive = (typeof PRIMITIVES)[number];
25
32
  export declare const PRIMITIVE_DESCRIPTIONS: Record<Primitive, string>;
26
- export declare function listUiResources(): Array<{
33
+ export type UiResourceListEntry = {
27
34
  uri: string;
28
35
  name: string;
29
36
  description: string;
30
37
  mimeType: string;
31
- }>;
32
- export declare function readUiResource(uri: string, fetchConvex: (functionName: string, args: Record<string, unknown>) => Promise<unknown>): Promise<{
38
+ _meta: {
39
+ ui: UIResourceMeta;
40
+ };
41
+ };
42
+ export declare function listUiResources(): UiResourceListEntry[];
43
+ export type UiResourceContent = {
33
44
  uri: string;
34
45
  mimeType: string;
35
46
  text: string;
36
- }>;
47
+ _meta?: {
48
+ ui: UIResourceMeta;
49
+ };
50
+ } | {
51
+ uri: string;
52
+ mimeType: "text/markdown";
53
+ text: string;
54
+ };
55
+ export type UiResourceReadResult = {
56
+ contents: UiResourceContent[];
57
+ };
58
+ export declare function readUiResource(uri: string, fetchConvex: (functionName: string, args: Record<string, unknown>) => Promise<unknown>): Promise<UiResourceReadResult>;
59
+ export {};
@@ -1,26 +1,37 @@
1
1
  /**
2
2
  * SEP-1865 ui:// resources for VantagePeers Generative UI.
3
3
  *
4
+ * Canonical PR #1865 (MERGED 2026-01-28) compliance:
5
+ * - MIME: text/html;profile=mcp-app (RESOURCE_MIME_TYPE)
6
+ * - _meta.ui: UIResourceMeta envelope (nested, NOT flat _meta["ui/resourceUri"])
7
+ * - Capability key declared at server initialize: io.modelcontextprotocol/ui
8
+ * - Fallback markdown content item in resources/read response (Critical Rule #1)
9
+ *
10
+ * Uses @mcp-ui/server createUIResource() helper (reference impl by SEP-1865 co-author).
11
+ *
4
12
  * URI pattern : ui://vp/v1/<primitive>?<query>
5
13
  * Examples :
6
14
  * ui://vp/v1/tasks-table?assignedTo=pi&status=review&fields=lite&limit=10
7
15
  * ui://vp/v1/messages-feed?recipient=sigma&limit=20
8
16
  *
9
- * M1 scope : 1 primitive (tasks-table) — proves the pipeline.
10
- * M2 scope : ≥6 primitives (tasks/messages/diary/missions/briefingNotes/memories).
11
- *
12
17
  * Pattern Hybrid 60% static lit-ui + 11% Gen UI + 27% Hybrid (cf vp-gui-views-research-2026-05-28.md).
13
- * Returns HTML inline with embedded JS + CSS Shadow DOM scoped.
14
18
  *
15
19
  * Reference instance Theta : theta-vantage-crm-gui-iframe-embed-v1 (blissful-gopher-531).
16
20
  * Mission Sigma : sigma-vantage-peers-mcp-gui-iframe-embed-v1 (k5730xct6rvrwkvxhy5t5js12d87jwfw).
17
21
  */
22
+ import { RESOURCE_MIME_TYPE } from "@mcp-ui/server";
18
23
  import { renderBriefingNote } from "./primitives/briefing-note.js";
19
24
  import { renderDiaryEntry } from "./primitives/diary-entry.js";
20
25
  import { renderMemoryQuote } from "./primitives/memory-quote.js";
21
26
  import { renderMessagesFeed } from "./primitives/messages-feed.js";
22
27
  import { renderMissionTimeline } from "./primitives/mission-timeline.js";
23
28
  import { renderTasksTable } from "./primitives/tasks-table.js";
29
+ // MCP Apps capability negotiation key (declared at server initialize handshake).
30
+ // Tools opting into UI resources reference it from their _meta.ui field.
31
+ export const MCP_UI_CAPABILITY_KEY = "io.modelcontextprotocol/ui";
32
+ // PR #1865 MIME — re-export from @mcp-ui/server for downstream visibility.
33
+ export const MCP_UI_MIME_TYPE = RESOURCE_MIME_TYPE;
34
+ const DEFAULT_UI_META = {};
24
35
  // URI parser : ui://vp/v1/<primitive>?<query>
25
36
  const UI_URI_RE = /^ui:\/\/vp\/v1\/([a-z][a-z0-9-]*)(?:\?(.*))?$/;
26
37
  export function parseUiUri(uri) {
@@ -51,16 +62,36 @@ export const PRIMITIVE_DESCRIPTIONS = {
51
62
  "briefing-note": "Render briefing note details. Query params: noteId or (topic + limit), lang.",
52
63
  "memory-quote": "Render memory quotes from a namespace. Query params: namespace, type, limit, lang.",
53
64
  };
54
- // Resource list — returned by resources/list MCP handler
65
+ // Resource list — returned by resources/list MCP handler.
66
+ // PR #1865 canonical: mimeType=text/html;profile=mcp-app + _meta.ui envelope.
55
67
  export function listUiResources() {
56
68
  return PRIMITIVES.map((p) => ({
57
69
  uri: `ui://vp/v1/${p}`,
58
70
  name: p,
59
71
  description: PRIMITIVE_DESCRIPTIONS[p],
60
- mimeType: "text/html",
72
+ mimeType: MCP_UI_MIME_TYPE,
73
+ _meta: { ui: DEFAULT_UI_META },
61
74
  }));
62
75
  }
63
- // Resource read dispatched by primitive name. Returns HTML inline.
76
+ // Markdown fallback per Critical Rule #1: every UI resource MUST provide a
77
+ // meaningful text-only payload for hosts without the UI extension. We render a
78
+ // short hint + the primitive description so model + non-UI clients still get
79
+ // usable output (raw HTML is not a substitute — it is the same content the iframe
80
+ // would render, defeating the fallback purpose).
81
+ function renderMarkdownFallback(uri, primitive) {
82
+ const desc = PRIMITIVE_DESCRIPTIONS[primitive];
83
+ return [
84
+ `# ${primitive}`,
85
+ "",
86
+ `This resource (${uri}) provides an interactive UI rendering for VantagePeers \`${primitive}\` data.`,
87
+ "",
88
+ desc,
89
+ "",
90
+ "Your client does not appear to support the MCP UI extension (`text/html;profile=mcp-app`). For a textual view of the same data, call the corresponding VantagePeers tool directly (e.g. `list_tasks`, `list_messages`, `list_diaries`, `list_missions`, `list_briefing_notes`, `recall`) with equivalent filters.",
91
+ ].join("\n");
92
+ }
93
+ // Resource read — dispatched by primitive name. Returns canonical
94
+ // resources/read contents array: [HTML profile=mcp-app, markdown fallback].
64
95
  export async function readUiResource(uri, fetchConvex) {
65
96
  const parsed = parseUiUri(uri);
66
97
  if (!parsed) {
@@ -69,8 +100,9 @@ export async function readUiResource(uri, fetchConvex) {
69
100
  if (!PRIMITIVES.includes(parsed.primitive)) {
70
101
  throw new Error(`[VP UI Resources] Unknown primitive: ${parsed.primitive}. Available: ${PRIMITIVES.join(", ")}`);
71
102
  }
103
+ const primitive = parsed.primitive;
72
104
  let html;
73
- switch (parsed.primitive) {
105
+ switch (primitive) {
74
106
  case "tasks-table":
75
107
  html = await renderTasksTable(parsed.query, fetchConvex);
76
108
  break;
@@ -93,8 +125,18 @@ export async function readUiResource(uri, fetchConvex) {
93
125
  throw new Error(`[VP UI Resources] Unimplemented primitive: ${parsed.primitive}`);
94
126
  }
95
127
  return {
96
- uri,
97
- mimeType: "text/html",
98
- text: html,
128
+ contents: [
129
+ {
130
+ uri,
131
+ mimeType: MCP_UI_MIME_TYPE,
132
+ text: html,
133
+ _meta: { ui: DEFAULT_UI_META },
134
+ },
135
+ {
136
+ uri,
137
+ mimeType: "text/markdown",
138
+ text: renderMarkdownFallback(uri, primitive),
139
+ },
140
+ ],
99
141
  };
100
142
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vantage-peers-mcp",
3
- "version": "2.4.12",
3
+ "version": "2.4.13",
4
4
  "description": "MCP server for VantagePeers — shared memory, messaging, and task coordination for AI agent teams",
5
5
  "type": "module",
6
6
  "main": "./dist/server.js",
@@ -54,11 +54,18 @@
54
54
  "rag",
55
55
  "vector-search"
56
56
  ],
57
- "author": "ElPi Corp",
57
+ "author": "VantageOS AI Orchestrator Team",
58
+ "contributors": [
59
+ "Pi (π) — Lead orchestrator",
60
+ "Laurent Perello — Founder, supervisor",
61
+ "ElPi Corp"
62
+ ],
58
63
  "license": "FSL-1.1-Apache-2.0",
59
64
  "dependencies": {
65
+ "@mcp-ui/server": "^6.1.0",
60
66
  "@modelcontextprotocol/sdk": "^1.29.0",
61
- "convex": "^1.34.0",
67
+ "@vantageos/mosaic": "^0.1.2",
68
+ "convex": ">=1.0.0",
62
69
  "dotenv": "^17.4.2",
63
70
  "zod": "^4.3.6"
64
71
  },
@@ -66,14 +73,14 @@
66
73
  "convex": ">=1.0.0"
67
74
  },
68
75
  "devDependencies": {
69
- "typescript": "^5.9.3",
70
- "@types/node": "^24.12.2"
76
+ "@types/node": "^24.12.2",
77
+ "typescript": "^5.9.3"
71
78
  },
72
79
  "overrides": {
73
80
  "path-to-regexp": "^8.4.0"
74
81
  },
75
82
  "engines": {
76
- "node": ">=18"
83
+ "node": ">=20"
77
84
  },
78
85
  "publishConfig": {
79
86
  "access": "public",