@vibesdotdev/integrations-meta 0.0.0-stage → 1.0.0-rc.1
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/LICENSE +126 -0
- package/README.md +38 -2
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +5 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/metadata/provider-models/meta/meta-muse-spark-1-1.json +18 -0
- package/dist/ai/metadata/provider-models/meta/meta-muse-spark-1-2-contributor.json +18 -0
- package/dist/ai/metadata/provider-models/meta/meta-muse-spark-1-2.json +18 -0
- package/dist/ai/metadata/provider-models/meta/meta-muse-spark-1-3-contributor.json +18 -0
- package/dist/ai/metadata/provider-models/meta/meta-muse-spark-1-3.json +18 -0
- package/dist/ai/metadata/providers/meta.json +8 -0
- package/dist/ai/muse-client.consumer.d.ts +10 -0
- package/dist/ai/muse-client.consumer.d.ts.map +1 -0
- package/dist/ai/muse-client.consumer.js +31 -0
- package/dist/ai/muse-client.consumer.js.map +1 -0
- package/dist/ai/provider.cloud.plugin.d.ts +6 -0
- package/dist/ai/provider.cloud.plugin.d.ts.map +1 -0
- package/dist/ai/provider.cloud.plugin.js +105 -0
- package/dist/ai/provider.cloud.plugin.js.map +1 -0
- package/dist/ai/provider.consumer.plugin.d.ts +3 -0
- package/dist/ai/provider.consumer.plugin.d.ts.map +1 -0
- package/dist/ai/provider.consumer.plugin.js +30 -0
- package/dist/ai/provider.consumer.plugin.js.map +1 -0
- package/dist/ai/provider.plugin.d.ts +6 -0
- package/dist/ai/provider.plugin.d.ts.map +1 -0
- package/dist/ai/provider.plugin.js +17 -0
- package/dist/ai/provider.plugin.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/meta/config/config.meta.descriptor.d.ts +4194 -0
- package/dist/ai/providers/cloud/frontier/meta/config/config.meta.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/meta/config/config.meta.descriptor.js +13 -0
- package/dist/ai/providers/cloud/frontier/meta/config/config.meta.descriptor.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/meta/config/schemas/index.d.ts +39 -0
- package/dist/ai/providers/cloud/frontier/meta/config/schemas/index.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/meta/config/schemas/index.js +34 -0
- package/dist/ai/providers/cloud/frontier/meta/config/schemas/index.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/meta/index.d.ts +5 -0
- package/dist/ai/providers/cloud/frontier/meta/index.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/meta/index.js +4 -0
- package/dist/ai/providers/cloud/frontier/meta/index.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/meta/provider.meta.descriptor.d.ts +183 -0
- package/dist/ai/providers/cloud/frontier/meta/provider.meta.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/meta/provider.meta.descriptor.js +97 -0
- package/dist/ai/providers/cloud/frontier/meta/provider.meta.descriptor.js.map +1 -0
- package/dist/ai/providers/meta/detection/system.d.ts +8 -0
- package/dist/ai/providers/meta/detection/system.d.ts.map +1 -0
- package/dist/ai/providers/meta/detection/system.js +16 -0
- package/dist/ai/providers/meta/detection/system.js.map +1 -0
- package/dist/ai/providers/meta/docs/ai.providers.meta.docs.descriptor.d.ts +4 -0
- package/dist/ai/providers/meta/docs/ai.providers.meta.docs.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/meta/docs/ai.providers.meta.docs.descriptor.js +20 -0
- package/dist/ai/providers/meta/docs/ai.providers.meta.docs.descriptor.js.map +1 -0
- package/dist/ai/providers/meta/index.d.ts +7 -0
- package/dist/ai/providers/meta/index.d.ts.map +1 -0
- package/dist/ai/providers/meta/index.js +6 -0
- package/dist/ai/providers/meta/index.js.map +1 -0
- package/dist/ai/providers/meta/meta-known-models.d.ts +3 -0
- package/dist/ai/providers/meta/meta-known-models.d.ts.map +1 -0
- package/dist/ai/providers/meta/meta-known-models.js +2 -0
- package/dist/ai/providers/meta/meta-known-models.js.map +1 -0
- package/dist/ai/providers/meta/meta.provider.impl.d.ts +42 -0
- package/dist/ai/providers/meta/meta.provider.impl.d.ts.map +1 -0
- package/dist/ai/providers/meta/meta.provider.impl.js +269 -0
- package/dist/ai/providers/meta/meta.provider.impl.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/client.d.ts +66 -0
- package/dist/ai/providers/meta/muse-server/client.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/client.js +209 -0
- package/dist/ai/providers/meta/muse-server/client.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/connection.d.ts +77 -0
- package/dist/ai/providers/meta/muse-server/connection.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/connection.js +174 -0
- package/dist/ai/providers/meta/muse-server/connection.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/failure-chunk.d.ts +10 -0
- package/dist/ai/providers/meta/muse-server/failure-chunk.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/failure-chunk.js +33 -0
- package/dist/ai/providers/meta/muse-server/failure-chunk.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/index.d.ts +9 -0
- package/dist/ai/providers/meta/muse-server/index.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/index.js +9 -0
- package/dist/ai/providers/meta/muse-server/index.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-failure.d.ts +189 -0
- package/dist/ai/providers/meta/muse-server/muse-failure.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-failure.js +226 -0
- package/dist/ai/providers/meta/muse-server/muse-failure.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-messages.d.ts +19 -0
- package/dist/ai/providers/meta/muse-server/muse-messages.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-messages.js +83 -0
- package/dist/ai/providers/meta/muse-server/muse-messages.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-server.spec.descriptor.d.ts +25 -0
- package/dist/ai/providers/meta/muse-server/muse-server.spec.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-server.spec.descriptor.js +21 -0
- package/dist/ai/providers/meta/muse-server/muse-server.spec.descriptor.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-server.spec.impl.d.ts +33 -0
- package/dist/ai/providers/meta/muse-server/muse-server.spec.impl.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-server.spec.impl.js +192 -0
- package/dist/ai/providers/meta/muse-server/muse-server.spec.impl.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-server.transport.descriptor.d.ts +13 -0
- package/dist/ai/providers/meta/muse-server/muse-server.transport.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-server.transport.descriptor.js +11 -0
- package/dist/ai/providers/meta/muse-server/muse-server.transport.descriptor.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-server.transport.impl.consumer.d.ts +41 -0
- package/dist/ai/providers/meta/muse-server/muse-server.transport.impl.consumer.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/muse-server.transport.impl.consumer.js +103 -0
- package/dist/ai/providers/meta/muse-server/muse-server.transport.impl.consumer.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/protocol.d.ts +138 -0
- package/dist/ai/providers/meta/muse-server/protocol.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/protocol.js +106 -0
- package/dist/ai/providers/meta/muse-server/protocol.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/runtime-execution.d.ts +14 -0
- package/dist/ai/providers/meta/muse-server/runtime-execution.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/runtime-execution.js +39 -0
- package/dist/ai/providers/meta/muse-server/runtime-execution.js.map +1 -0
- package/dist/ai/providers/meta/muse-server/session.d.ts +19 -0
- package/dist/ai/providers/meta/muse-server/session.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-server/session.js +341 -0
- package/dist/ai/providers/meta/muse-server/session.js.map +1 -0
- package/dist/ai/providers/meta/muse-subscription.d.ts +38 -0
- package/dist/ai/providers/meta/muse-subscription.d.ts.map +1 -0
- package/dist/ai/providers/meta/muse-subscription.js +77 -0
- package/dist/ai/providers/meta/muse-subscription.js.map +1 -0
- package/dist/ai/providers/meta/recommendations.d.ts +26 -0
- package/dist/ai/providers/meta/recommendations.d.ts.map +1 -0
- package/dist/ai/providers/meta/recommendations.js +24 -0
- package/dist/ai/providers/meta/recommendations.js.map +1 -0
- package/dist/ai/providers/meta/schemas/index.d.ts +12 -0
- package/dist/ai/providers/meta/schemas/index.d.ts.map +1 -0
- package/dist/ai/providers/meta/schemas/index.js +8 -0
- package/dist/ai/providers/meta/schemas/index.js.map +1 -0
- package/dist/external/external.plugin.d.ts +3 -0
- package/dist/external/external.plugin.d.ts.map +1 -0
- package/dist/external/external.plugin.js +18 -0
- package/dist/external/external.plugin.js.map +1 -0
- package/dist/external/index.d.ts +2 -0
- package/dist/external/index.d.ts.map +1 -0
- package/dist/external/index.js +2 -0
- package/dist/external/index.js.map +1 -0
- package/dist/external/muse/index.d.ts +162 -0
- package/dist/external/muse/index.d.ts.map +1 -0
- package/dist/external/muse/index.js +7 -0
- package/dist/external/muse/index.js.map +1 -0
- package/dist/external/muse/manifest.d.ts +7 -0
- package/dist/external/muse/manifest.d.ts.map +1 -0
- package/dist/external/muse/manifest.js +25 -0
- package/dist/external/muse/manifest.js.map +1 -0
- package/dist/external/muse-subscription.operation.descriptors.d.ts +29 -0
- package/dist/external/muse-subscription.operation.descriptors.d.ts.map +1 -0
- package/dist/external/muse-subscription.operation.descriptors.js +12 -0
- package/dist/external/muse-subscription.operation.descriptors.js.map +1 -0
- package/dist/external/muse-subscription.operations.d.ts +3 -0
- package/dist/external/muse-subscription.operations.d.ts.map +1 -0
- package/dist/external/muse-subscription.operations.js +23 -0
- package/dist/external/muse-subscription.operations.js.map +1 -0
- package/dist/failure-outcome.d.ts +21 -0
- package/dist/failure-outcome.d.ts.map +1 -0
- package/dist/failure-outcome.js +22 -0
- package/dist/failure-outcome.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/package.json +103 -4
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { CaughtFailureSchema, isCapabilityError } from '@vibesdotdev/kernel';
|
|
2
|
+
import { AsyncQueue, boundedExcerpt } from '@vibesdotdev/external/jsonrpc';
|
|
3
|
+
import { CapacityExceededError } from '@vibesdotdev/ai/utils/capacity-retry';
|
|
4
|
+
import { getLogger } from '@vibesdotdev/logging';
|
|
5
|
+
import { attempt, settle } from "../../../../failure-outcome.js";
|
|
6
|
+
import { failureAsChunk } from "./failure-chunk.js";
|
|
7
|
+
import { childTextCause, museFailure } from "./muse-failure.js";
|
|
8
|
+
import { generateUuidV7, MuseAgentMessageItemSchema, MuseApprovalRequestParamsSchema, MuseErrorParamsSchema, MuseIgnoredResultSchema, MuseItemCompletedParamsSchema, MuseItemDeltaParamsSchema, MuseItemKindSchema, MuseNotificationSessionSchema, MuseSessionStartResultSchema, MuseToolCallItemSchema, MuseTurnCompletedParamsSchema, MuseTurnStartResultSchema } from "./protocol.js";
|
|
9
|
+
/**
|
|
10
|
+
* What one turn may hold in memory, declared: the records waiting for the
|
|
11
|
+
* consumer, the accumulated text, the tool executions it remembers, and the
|
|
12
|
+
* notifications that arrive before the session is named. Past a bound the turn
|
|
13
|
+
* fails `muse-output-too-large`.
|
|
14
|
+
*/
|
|
15
|
+
export const MUSE_TURN_LIMITS = {
|
|
16
|
+
recordQueueCapacity: 4_096,
|
|
17
|
+
maxTextChars: 8 * 1024 * 1024,
|
|
18
|
+
maxToolExecutions: 1_024,
|
|
19
|
+
maxEarlyNotifications: 1_024
|
|
20
|
+
};
|
|
21
|
+
export function createMuseServerSessionProgram(body) {
|
|
22
|
+
return (connection, options) => runMuseServerSession(connection, body, options);
|
|
23
|
+
}
|
|
24
|
+
async function* runMuseServerSession(connection, body, options) {
|
|
25
|
+
const queue = new AsyncQueue(MUSE_TURN_LIMITS.recordQueueCapacity);
|
|
26
|
+
const toolExecutions = [];
|
|
27
|
+
/** The approval answers in flight: each is observed (never floating) and joined when the turn ends. */
|
|
28
|
+
const decisions = new Set();
|
|
29
|
+
const turnAbort = new AbortController();
|
|
30
|
+
let streamedText = '';
|
|
31
|
+
let completedText = '';
|
|
32
|
+
let sessionId;
|
|
33
|
+
let turnId;
|
|
34
|
+
let disposeSubscription;
|
|
35
|
+
let cancelled = false;
|
|
36
|
+
let interruptSent = false;
|
|
37
|
+
let turnEnded = false;
|
|
38
|
+
let cancellationError = cancelledFailure(options.signal?.reason);
|
|
39
|
+
/** Fails the turn's record queue; the first failure is the one the consumer sees. */
|
|
40
|
+
const failTurn = (failure) => {
|
|
41
|
+
turnEnded = true;
|
|
42
|
+
queue.fail(failure);
|
|
43
|
+
};
|
|
44
|
+
const push = (record) => {
|
|
45
|
+
if (queue.push(record) === 'full')
|
|
46
|
+
failTurn(museFailure('muse-output-too-large', { details: { bound: 'records' } }));
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Notifications that arrive before the answer to `session/start` has named the session.
|
|
50
|
+
* The child may write them right behind the answer, and nothing orders their delivery
|
|
51
|
+
* against the continuation that learns the id, so they wait here (bounded) and are replayed.
|
|
52
|
+
*/
|
|
53
|
+
const early = [];
|
|
54
|
+
const interruptTurn = async () => {
|
|
55
|
+
if (!sessionId || !turnId || interruptSent || connection.closed)
|
|
56
|
+
return;
|
|
57
|
+
interruptSent = true;
|
|
58
|
+
const interrupted = await settle(connection.request('turn/interrupt', { commandId: generateUuidV7(), sessionId, turnId }, MuseIgnoredResultSchema));
|
|
59
|
+
// The caller gets its answer either way; a failed interrupt means the turn may keep running.
|
|
60
|
+
if (interrupted.failed) {
|
|
61
|
+
getLogger('integrations-meta', connection.runtime).warn('muse-server turn interrupt failed', {
|
|
62
|
+
error: interrupted.cause
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const cancel = (error) => {
|
|
67
|
+
if (cancelled)
|
|
68
|
+
return;
|
|
69
|
+
cancelled = true;
|
|
70
|
+
cancellationError = error;
|
|
71
|
+
turnAbort.abort();
|
|
72
|
+
if (!sessionId || !turnId)
|
|
73
|
+
return;
|
|
74
|
+
void interruptTurn().then(() => queue.fail(cancellationError));
|
|
75
|
+
};
|
|
76
|
+
const abortFromSignal = () => cancel(cancelledFailure(options.signal?.reason));
|
|
77
|
+
const timeoutMs = options.timeoutMs;
|
|
78
|
+
const cancelTimeout = timeoutMs
|
|
79
|
+
? connection.runtime.lifecycle.timeout(() => cancel(museFailure('muse-turn-timeout', { details: { timeoutMs } })), timeoutMs)
|
|
80
|
+
: undefined;
|
|
81
|
+
options.signal?.addEventListener('abort', abortFromSignal, { once: true });
|
|
82
|
+
/** Sends the answer to one approval request; a failed answer ends the turn typed (it would stall otherwise). */
|
|
83
|
+
const decide = (sessionName, approval) => {
|
|
84
|
+
const verdict = approvalAnswer(sessionName, approval, body.approvalMode);
|
|
85
|
+
// A turn that needs an approval the declared posture does not give fails typed: nothing the request
|
|
86
|
+
// asked for (tool, arguments) or the child said is kept. The turn is not known to have ended: the
|
|
87
|
+
// interrupt in the `finally` stops it.
|
|
88
|
+
if (verdict.denied)
|
|
89
|
+
queue.fail(museFailure('approval-denied', { details: { mode: body.approvalMode } }));
|
|
90
|
+
const answered = settle(connection.request('approval/decide', verdict.answer, MuseIgnoredResultSchema, {
|
|
91
|
+
signal: turnAbort.signal
|
|
92
|
+
})).then((outcome) => {
|
|
93
|
+
decisions.delete(answered);
|
|
94
|
+
if (outcome.failed && !cancelled && !verdict.denied) {
|
|
95
|
+
failTurn(museFailure('muse-approval-failed', { cause: outcome.cause }));
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
decisions.add(answered);
|
|
99
|
+
};
|
|
100
|
+
/** What a notification of this session says; a malformed one ends the turn typed, never skipped. */
|
|
101
|
+
const parseParams = (schema, notification) => {
|
|
102
|
+
const parsed = schema.safeParse(notification.params);
|
|
103
|
+
if (!parsed.success) {
|
|
104
|
+
throw museFailure('muse-notification-invalid', { details: { method: notification.method.slice(0, 64) } });
|
|
105
|
+
}
|
|
106
|
+
return parsed.data;
|
|
107
|
+
};
|
|
108
|
+
const applyNotification = (notification) => {
|
|
109
|
+
if (!sessionId) {
|
|
110
|
+
if (early.length >= MUSE_TURN_LIMITS.maxEarlyNotifications) {
|
|
111
|
+
throw museFailure('muse-output-too-large', { details: { bound: 'early-notifications' } });
|
|
112
|
+
}
|
|
113
|
+
early.push(notification);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const named = MuseNotificationSessionSchema.safeParse(notification.params);
|
|
117
|
+
const namedSession = named.success ? named.data.sessionId : undefined;
|
|
118
|
+
if (notification.method === 'error') {
|
|
119
|
+
const params = MuseErrorParamsSchema.safeParse(notification.params);
|
|
120
|
+
// Another session's error is that session's; one that names none is the connection's, and fails this turn too.
|
|
121
|
+
if (params.success && params.data.sessionId !== undefined && params.data.sessionId !== sessionId)
|
|
122
|
+
return;
|
|
123
|
+
// The turn is not known to have ended: the interrupt below stops it.
|
|
124
|
+
queue.fail(museFailure('muse-turn-failed', { cause: childTextCause(params.success ? (params.data.message ?? '') : '') }));
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// A notification that names another session (or none) is not this turn's.
|
|
128
|
+
if (namedSession !== sessionId)
|
|
129
|
+
return;
|
|
130
|
+
// A headless turn cannot answer. Fail the queue without marking the turn ended, so the
|
|
131
|
+
// finally interrupts the child: it would wait for `userInput/answer` until the profile
|
|
132
|
+
// deadline otherwise. The prompt is not kept. MSP `session/start` has no tool deny list.
|
|
133
|
+
if (notification.method === 'userInput/requested' || notification.method === 'userInput/request') {
|
|
134
|
+
queue.fail(museFailure('muse-user-input-requested'));
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (notification.method === 'approval/request') {
|
|
138
|
+
decide(sessionId, parseParams(MuseApprovalRequestParamsSchema, notification));
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (notification.method === 'item/delta') {
|
|
142
|
+
const delta = parseParams(MuseItemDeltaParamsSchema, notification);
|
|
143
|
+
// A delta of another field (reasoning, for instance) is not the answer's text: declared ignored.
|
|
144
|
+
if (delta.field === undefined || delta.field === '' || delta.field === 'text') {
|
|
145
|
+
streamedText = boundedText(streamedText, delta.delta);
|
|
146
|
+
push({ type: 'text-delta', delta: delta.delta });
|
|
147
|
+
}
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (notification.method === 'item/completed') {
|
|
151
|
+
const completed = parseParams(MuseItemCompletedParamsSchema, notification);
|
|
152
|
+
const kind = MuseItemKindSchema.safeParse(completed.item);
|
|
153
|
+
if (kind.success && kind.data.kind === 'agentMessage') {
|
|
154
|
+
const message = parseParams(MuseAgentMessageItemSchema, { method: notification.method, params: completed.item });
|
|
155
|
+
completedText = boundedText('', message.text);
|
|
156
|
+
if (streamedText.length === 0 && message.text.length > 0)
|
|
157
|
+
push({ type: 'text-delta', delta: message.text });
|
|
158
|
+
}
|
|
159
|
+
else if (kind.success && kind.data.kind === 'user_input_prompt_requested') {
|
|
160
|
+
queue.fail(museFailure('muse-user-input-requested'));
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
else if (kind.success && kind.data.kind === 'toolCall') {
|
|
164
|
+
const call = parseParams(MuseToolCallItemSchema, { method: notification.method, params: completed.item });
|
|
165
|
+
if (toolExecutions.length >= MUSE_TURN_LIMITS.maxToolExecutions) {
|
|
166
|
+
throw museFailure('muse-output-too-large', { details: { bound: 'tool-executions' } });
|
|
167
|
+
}
|
|
168
|
+
const evidence = {
|
|
169
|
+
id: call.id ?? generateUuidV7(),
|
|
170
|
+
name: call.tool,
|
|
171
|
+
arguments: call.arguments ?? {},
|
|
172
|
+
success: call.status === 'completed'
|
|
173
|
+
};
|
|
174
|
+
if (call.visibleOutput !== undefined)
|
|
175
|
+
evidence.result = call.visibleOutput;
|
|
176
|
+
toolExecutions.push(evidence);
|
|
177
|
+
}
|
|
178
|
+
// An item of any other kind (reasoning, for instance) is not part of the answer: declared ignored.
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (notification.method !== 'turn/completed')
|
|
182
|
+
return;
|
|
183
|
+
const completed = parseParams(MuseTurnCompletedParamsSchema, notification);
|
|
184
|
+
if (turnId && completed.turnId !== turnId)
|
|
185
|
+
return;
|
|
186
|
+
turnEnded = true;
|
|
187
|
+
if (completed.terminal === 'failed') {
|
|
188
|
+
const error = completed.error;
|
|
189
|
+
if (error?.quota !== undefined) {
|
|
190
|
+
// The quota window is closed until `resetsAtMs`: no attempt before then can succeed.
|
|
191
|
+
const { resetsAtMs } = error.quota;
|
|
192
|
+
const cause = new CapacityExceededError(boundedExcerpt(error.message) || 'Muse quota exhausted', 429, { resetsAtMs });
|
|
193
|
+
failTurn(museFailure('muse-turn-failed', { details: { terminal: 'failed', resetsAtMs, retryable: false }, cause, retryable: false }));
|
|
194
|
+
}
|
|
195
|
+
else if (error !== undefined) {
|
|
196
|
+
failTurn(museFailure('muse-turn-failed', {
|
|
197
|
+
details: { terminal: 'failed', kind: boundedExcerpt(error.kind).slice(0, 64), retryable: error.retryable },
|
|
198
|
+
cause: childTextCause(error.message),
|
|
199
|
+
retryable: error.retryable
|
|
200
|
+
}));
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
failTurn(museFailure('muse-turn-failed', { details: { terminal: 'failed' } }));
|
|
204
|
+
}
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
if (completed.terminal === 'cancelled') {
|
|
208
|
+
failTurn(museFailure('muse-turn-cancelled'));
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (completed.terminal !== 'completed') {
|
|
212
|
+
failTurn(museFailure('muse-turn-failed', { cause: childTextCause(completed.terminal) }));
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const content = completedText || streamedText;
|
|
216
|
+
if (content.length === 0 && toolExecutions.length === 0) {
|
|
217
|
+
failTurn(museFailure('muse-turn-failed', { details: { problem: 'no-final-assistant-message' } }));
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
push({ type: 'result', sessionId, turnId: completed.turnId, content, toolExecutions });
|
|
221
|
+
queue.end();
|
|
222
|
+
};
|
|
223
|
+
/** Applies one notification; a failure of applying it ends the turn typed, never the connection. */
|
|
224
|
+
const deliver = (notification) => {
|
|
225
|
+
const applied = attempt(() => applyNotification(notification));
|
|
226
|
+
if (applied.failed) {
|
|
227
|
+
const caught = CaughtFailureSchema.parse(applied.cause);
|
|
228
|
+
failTurn(isCapabilityError(caught) ? caught : museFailure('muse-listener-failed', { cause: caught }));
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
const assertActive = () => {
|
|
232
|
+
if (options.signal?.aborted)
|
|
233
|
+
abortFromSignal();
|
|
234
|
+
if (cancelled)
|
|
235
|
+
throw cancellationError;
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* One request of the turn. A request that can still be abandoned stops with the
|
|
239
|
+
* caller's cancellation; `turn/start` is never abandoned, because its answer
|
|
240
|
+
* names the turn that a cancellation must then interrupt.
|
|
241
|
+
*/
|
|
242
|
+
const call = async (method, params, schema, abandonable) => {
|
|
243
|
+
const settled = await settle(connection.request(method, params, schema, abandonable ? { signal: turnAbort.signal } : {}));
|
|
244
|
+
if (abandonable)
|
|
245
|
+
assertActive();
|
|
246
|
+
if (settled.failed)
|
|
247
|
+
throw settled.cause;
|
|
248
|
+
return settled.value;
|
|
249
|
+
};
|
|
250
|
+
/** The turn's records; a failure raised here ends the call as an `error` chunk (`failureAsChunk`). */
|
|
251
|
+
const turnChunks = async function* () {
|
|
252
|
+
assertActive();
|
|
253
|
+
disposeSubscription = connection.subscribe({ notification: deliver, closed: (failure) => failTurn(failure) });
|
|
254
|
+
const sessionParams = { commandId: generateUuidV7(), approvalMode: body.approvalMode };
|
|
255
|
+
if (body.workspaceRoot !== undefined)
|
|
256
|
+
sessionParams.workspaceRoot = body.workspaceRoot;
|
|
257
|
+
if (body.model)
|
|
258
|
+
sessionParams.modelId = body.model;
|
|
259
|
+
const started = await call('session/start', sessionParams, MuseSessionStartResultSchema, true);
|
|
260
|
+
sessionId = started.session.sessionId;
|
|
261
|
+
for (const waiting of early.splice(0))
|
|
262
|
+
deliver(waiting);
|
|
263
|
+
assertActive();
|
|
264
|
+
const turnParams = { sessionId, commandId: generateUuidV7(), input: body.input };
|
|
265
|
+
if (body.reasoningEffort)
|
|
266
|
+
turnParams.reasoningEffort = body.reasoningEffort;
|
|
267
|
+
const turn = await call('turn/start', turnParams, MuseTurnStartResultSchema, false);
|
|
268
|
+
turnId = turn.turnId;
|
|
269
|
+
if (cancelled) {
|
|
270
|
+
void interruptTurn().then(() => queue.fail(cancellationError));
|
|
271
|
+
}
|
|
272
|
+
yield {
|
|
273
|
+
kind: 'headers',
|
|
274
|
+
status: 200,
|
|
275
|
+
headers: { 'content-type': 'application/x-ndjson' }
|
|
276
|
+
};
|
|
277
|
+
for await (const record of queue) {
|
|
278
|
+
yield { kind: 'ndjson-record', data: JSON.stringify(record) };
|
|
279
|
+
}
|
|
280
|
+
yield { kind: 'end' };
|
|
281
|
+
};
|
|
282
|
+
try {
|
|
283
|
+
yield* failureAsChunk(turnChunks());
|
|
284
|
+
}
|
|
285
|
+
finally {
|
|
286
|
+
cancelTimeout?.();
|
|
287
|
+
options.signal?.removeEventListener('abort', abortFromSignal);
|
|
288
|
+
// A consumer that stopped early, or a turn that failed on the child's own report, leaves
|
|
289
|
+
// the turn running (and spending the account's allowance) until it is interrupted.
|
|
290
|
+
if (!turnEnded)
|
|
291
|
+
await interruptTurn();
|
|
292
|
+
turnAbort.abort();
|
|
293
|
+
await Promise.all(decisions);
|
|
294
|
+
disposeSubscription?.();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/** `current` with `addition` appended, or a refusal when the text would pass the bound. */
|
|
298
|
+
function boundedText(current, addition) {
|
|
299
|
+
if (current.length + addition.length > MUSE_TURN_LIMITS.maxTextChars) {
|
|
300
|
+
throw museFailure('muse-output-too-large', { details: { bound: 'text' } });
|
|
301
|
+
}
|
|
302
|
+
return current + addition;
|
|
303
|
+
}
|
|
304
|
+
/** The caller's cancellation as a typed failure; the caller's reason, if any, is only its cause. */
|
|
305
|
+
function cancelledFailure(reason) {
|
|
306
|
+
return museFailure('generation-cancelled', reason === undefined ? {} : { cause: reason });
|
|
307
|
+
}
|
|
308
|
+
const APPROVING_DECISION = /^(?:allow|approve)/i;
|
|
309
|
+
const DENYING_DECISION = /^(?:deny|reject|decline)/i;
|
|
310
|
+
/**
|
|
311
|
+
* The `approval/decide` answer for one approval request, by the declared posture.
|
|
312
|
+
* Only `allowAll` approves, and then only a choice whose decision says so (`approved`
|
|
313
|
+
* when the child offers no choices); every other posture denies. A choice is never
|
|
314
|
+
* taken for being first. When the posture permits but the child offers no approving
|
|
315
|
+
* choice, the request is denied and `denied` says so.
|
|
316
|
+
*/
|
|
317
|
+
function approvalAnswer(sessionId, approval, mode) {
|
|
318
|
+
const choices = approval.availableChoices ?? [];
|
|
319
|
+
const permitted = mode === 'allowAll';
|
|
320
|
+
const approving = choices.find((choice) => APPROVING_DECISION.test(choice.decision ?? ''));
|
|
321
|
+
let choiceId;
|
|
322
|
+
let approved = true;
|
|
323
|
+
if (permitted && approving)
|
|
324
|
+
choiceId = approving.choiceId;
|
|
325
|
+
else if (permitted && choices.length === 0)
|
|
326
|
+
choiceId = 'approved';
|
|
327
|
+
else {
|
|
328
|
+
approved = false;
|
|
329
|
+
choiceId = choices.find((choice) => DENYING_DECISION.test(choice.decision ?? ''))?.choiceId ?? 'denied';
|
|
330
|
+
}
|
|
331
|
+
const answer = {
|
|
332
|
+
commandId: generateUuidV7(),
|
|
333
|
+
sessionId,
|
|
334
|
+
approvalId: approval.approvalId,
|
|
335
|
+
choiceId
|
|
336
|
+
};
|
|
337
|
+
if (approval.requirementId !== undefined)
|
|
338
|
+
answer.requirementId = approval.requirementId;
|
|
339
|
+
return { answer, denied: !approved };
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../src/ai/providers/meta/muse-server/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { composeChildEnv, type RuntimeRef } from '@vibesdotdev/kernel';
|
|
2
|
+
import { type RuntimeExecution } from '@vibesdotdev/kernel/execution';
|
|
3
|
+
/** The runtime a Muse child's environment is composed from (`composeChildEnv`). */
|
|
4
|
+
export type MuseChildEnvRuntime = Parameters<typeof composeChildEnv>[0];
|
|
5
|
+
/** The login flow also owns its timers, so it needs the runtime's lifecycle. */
|
|
6
|
+
export type MuseLoginRuntime = MuseChildEnvRuntime & Pick<RuntimeRef, 'lifecycle'>;
|
|
7
|
+
/**
|
|
8
|
+
* Every Muse child runs with `envMode: 'replace'` and the kernel's composed
|
|
9
|
+
* environment (rc02-rc03 C22): the host base set (its session lives under
|
|
10
|
+
* HOME), plus the proxy and CA settings its HTTPS calls honour. `META_API_KEY`
|
|
11
|
+
* and `MODEL_API_KEY` are not among its names and are also stripped
|
|
12
|
+
* (`MUSE_SUBSCRIPTION_UNSET_ENV`).
|
|
13
|
+
*/
|
|
14
|
+
export declare const MUSE_SUBSCRIPTION_INHERIT_ENV: readonly ["HTTPS_PROXY", "HTTP_PROXY", "NO_PROXY", "SSL_CERT_FILE"];
|
|
15
|
+
/** The browser-code sign-in may open a browser: the selected one and the desktop session it opens in. */
|
|
16
|
+
export declare const MUSE_SUBSCRIPTION_LOGIN_INHERIT_ENV: readonly ["HTTPS_PROXY", "HTTP_PROXY", "NO_PROXY", "SSL_CERT_FILE", "BROWSER", "DISPLAY", "WAYLAND_DISPLAY", "XDG_RUNTIME_DIR", "DBUS_SESSION_BUS_ADDRESS"];
|
|
17
|
+
/** A Muse child's environment on `runtime`. */
|
|
18
|
+
export declare function museSubscriptionEnv(runtime: MuseChildEnvRuntime, inheritEnv?: readonly string[]): Record<string, string>;
|
|
19
|
+
/** An API key hides the Meta account login. The subscription child must not inherit one. */
|
|
20
|
+
export declare const MUSE_SUBSCRIPTION_UNSET_ENV: readonly ["META_API_KEY", "MODEL_API_KEY"];
|
|
21
|
+
/** Terminal sign-in. Muse's published command is `muse login` (browser code). */
|
|
22
|
+
export declare const MUSE_SUBSCRIPTION_LOGIN_COMMAND = "vibes dev external muse login";
|
|
23
|
+
/**
|
|
24
|
+
* Official Muse account login.
|
|
25
|
+
*
|
|
26
|
+
* `muse login` prints a browser code and keeps the session. Muse does not
|
|
27
|
+
* publish a read-only status subcommand, so a later health check cannot prove
|
|
28
|
+
* the account without starting this flow again.
|
|
29
|
+
*/
|
|
30
|
+
export declare function runMuseSubscriptionLogin(runtime: MuseLoginRuntime, execution: RuntimeExecution, options?: {
|
|
31
|
+
timeout?: number;
|
|
32
|
+
signal?: AbortSignal;
|
|
33
|
+
onMessage?: (message: string) => void;
|
|
34
|
+
}): Promise<{
|
|
35
|
+
exitCode: number | null;
|
|
36
|
+
timedOut: boolean;
|
|
37
|
+
}>;
|
|
38
|
+
//# sourceMappingURL=muse-subscription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"muse-subscription.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/meta/muse-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAE5F,mFAAmF;AACnF,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAExE,gFAAgF;AAChF,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAEnF;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,qEAAsE,CAAC;AAEjH,yGAAyG;AACzG,eAAO,MAAM,mCAAmC,6JAOtC,CAAC;AAEX,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,mBAAmB,EAC5B,UAAU,GAAE,SAAS,MAAM,EAAkC,GAC3D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B,4CAA6C,CAAC;AAEtF,iFAAiF;AACjF,eAAO,MAAM,+BAA+B,kCAAkC,CAAC;AAI/E;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,gBAAgB,EAC3B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GACzF,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAoCzD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { composeChildEnv } from '@vibesdotdev/kernel';
|
|
2
|
+
import { collectProcessOutput } from '@vibesdotdev/kernel/execution';
|
|
3
|
+
/**
|
|
4
|
+
* Every Muse child runs with `envMode: 'replace'` and the kernel's composed
|
|
5
|
+
* environment (rc02-rc03 C22): the host base set (its session lives under
|
|
6
|
+
* HOME), plus the proxy and CA settings its HTTPS calls honour. `META_API_KEY`
|
|
7
|
+
* and `MODEL_API_KEY` are not among its names and are also stripped
|
|
8
|
+
* (`MUSE_SUBSCRIPTION_UNSET_ENV`).
|
|
9
|
+
*/
|
|
10
|
+
export const MUSE_SUBSCRIPTION_INHERIT_ENV = ['HTTPS_PROXY', 'HTTP_PROXY', 'NO_PROXY', 'SSL_CERT_FILE'];
|
|
11
|
+
/** The browser-code sign-in may open a browser: the selected one and the desktop session it opens in. */
|
|
12
|
+
export const MUSE_SUBSCRIPTION_LOGIN_INHERIT_ENV = [
|
|
13
|
+
...MUSE_SUBSCRIPTION_INHERIT_ENV,
|
|
14
|
+
'BROWSER',
|
|
15
|
+
'DISPLAY',
|
|
16
|
+
'WAYLAND_DISPLAY',
|
|
17
|
+
'XDG_RUNTIME_DIR',
|
|
18
|
+
'DBUS_SESSION_BUS_ADDRESS'
|
|
19
|
+
];
|
|
20
|
+
/** A Muse child's environment on `runtime`. */
|
|
21
|
+
export function museSubscriptionEnv(runtime, inheritEnv = MUSE_SUBSCRIPTION_INHERIT_ENV) {
|
|
22
|
+
return composeChildEnv(runtime, { inheritEnv });
|
|
23
|
+
}
|
|
24
|
+
/** An API key hides the Meta account login. The subscription child must not inherit one. */
|
|
25
|
+
export const MUSE_SUBSCRIPTION_UNSET_ENV = ['META_API_KEY', 'MODEL_API_KEY'];
|
|
26
|
+
/** Terminal sign-in. Muse's published command is `muse login` (browser code). */
|
|
27
|
+
export const MUSE_SUBSCRIPTION_LOGIN_COMMAND = 'vibes dev external muse login';
|
|
28
|
+
const LOGIN_TIMEOUT_MS = 5 * 60_000;
|
|
29
|
+
/**
|
|
30
|
+
* Official Muse account login.
|
|
31
|
+
*
|
|
32
|
+
* `muse login` prints a browser code and keeps the session. Muse does not
|
|
33
|
+
* publish a read-only status subcommand, so a later health check cannot prove
|
|
34
|
+
* the account without starting this flow again.
|
|
35
|
+
*/
|
|
36
|
+
export async function runMuseSubscriptionLogin(runtime, execution, options) {
|
|
37
|
+
if (options?.signal?.aborted)
|
|
38
|
+
return { exitCode: null, timedOut: false };
|
|
39
|
+
const child = await execution.spawn({
|
|
40
|
+
command: 'muse',
|
|
41
|
+
args: ['login'],
|
|
42
|
+
env: museSubscriptionEnv(runtime, MUSE_SUBSCRIPTION_LOGIN_INHERIT_ENV),
|
|
43
|
+
envMode: 'replace',
|
|
44
|
+
unsetEnv: [...MUSE_SUBSCRIPTION_UNSET_ENV],
|
|
45
|
+
stdin: 'ignore',
|
|
46
|
+
stdout: 'pipe',
|
|
47
|
+
stderr: 'pipe'
|
|
48
|
+
});
|
|
49
|
+
let timedOut = false;
|
|
50
|
+
let cancelForceStop;
|
|
51
|
+
const cancel = () => {
|
|
52
|
+
child.kill('SIGTERM');
|
|
53
|
+
cancelForceStop ??= runtime.lifecycle.timeout(() => child.kill('SIGKILL'), 1_000);
|
|
54
|
+
};
|
|
55
|
+
const cancelTimer = runtime.lifecycle.timeout(() => {
|
|
56
|
+
timedOut = true;
|
|
57
|
+
cancel();
|
|
58
|
+
}, options?.timeout ?? LOGIN_TIMEOUT_MS);
|
|
59
|
+
options?.signal?.addEventListener('abort', cancel, { once: true });
|
|
60
|
+
if (options?.signal?.aborted)
|
|
61
|
+
cancel();
|
|
62
|
+
try {
|
|
63
|
+
const output = await collectProcessOutput(child, (_stream, line) => {
|
|
64
|
+
const text = line.trim();
|
|
65
|
+
if (text.length > 0)
|
|
66
|
+
options?.onMessage?.(text);
|
|
67
|
+
});
|
|
68
|
+
return { exitCode: output.code, timedOut };
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
cancelTimer();
|
|
72
|
+
cancelForceStop?.();
|
|
73
|
+
options?.signal?.removeEventListener('abort', cancel);
|
|
74
|
+
child.kill('SIGTERM');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=muse-subscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"muse-subscription.js","sourceRoot":"","sources":["../../../../src/ai/providers/meta/muse-subscription.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ProviderRecommendation, type ModelAdapter } from '@vibesdotdev/ai/recommendations/base';
|
|
2
|
+
import type { ModelRecommendation, RecommendationContext, SetupMethod, SetupStep, UseCase } from '@vibesdotdev/ai/recommendations/schemas';
|
|
3
|
+
export declare class MetaRecommendation extends ProviderRecommendation {
|
|
4
|
+
readonly providerType = "meta";
|
|
5
|
+
readonly displayName = "Meta Model API";
|
|
6
|
+
getUseCaseScore(useCase: UseCase): number;
|
|
7
|
+
getStageScore(stage: RecommendationContext['stage']): number;
|
|
8
|
+
getRequiredEnvironmentVariables(): string[];
|
|
9
|
+
getReason(useCase: UseCase): string;
|
|
10
|
+
getStrengths(): string[];
|
|
11
|
+
getWeaknesses(context: RecommendationContext): string[];
|
|
12
|
+
getSupportedSetupMethods(): SetupMethod[];
|
|
13
|
+
getSetupSteps(method: SetupMethod): Promise<SetupStep[]>;
|
|
14
|
+
recommendModels(_adapter: ModelAdapter | null, context: RecommendationContext): Promise<ModelRecommendation[]>;
|
|
15
|
+
getExecutionContext(): {
|
|
16
|
+
recommendModels: "server";
|
|
17
|
+
getSetupSteps: "both";
|
|
18
|
+
};
|
|
19
|
+
supportsOAuth(): boolean;
|
|
20
|
+
supportsLocal(): boolean;
|
|
21
|
+
requiresGPU(): boolean;
|
|
22
|
+
}
|
|
23
|
+
import type { RuntimeRef } from '@vibesdotdev/kernel';
|
|
24
|
+
/** Compatibility access is explicit about the runtime that owns the capability. */
|
|
25
|
+
export declare function metaRecommendation(runtime: RuntimeRef): Promise<unknown>;
|
|
26
|
+
//# sourceMappingURL=recommendations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendations.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/meta/recommendations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACjG,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAC3I,qBAAa,kBAAmB,SAAQ,sBAAsB;IAC7D,QAAQ,CAAC,YAAY,UAAU;IAAC,QAAQ,CAAC,WAAW,oBAAoB;IACxE,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IACzC,aAAa,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,MAAM;IAC5D,+BAA+B,IAAI,MAAM,EAAE;IAC3C,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IACnC,YAAY,IAAI,MAAM,EAAE;IACxB,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,EAAE;IACvD,wBAAwB,IAAI,WAAW,EAAE;IACnC,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IACxD,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IACpH,mBAAmB;;;;IACnB,aAAa,IAAI,OAAO;IACxB,aAAa,IAAI,OAAO;IAAmB,WAAW,IAAI,OAAO;CACjE;AACD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,oBAErD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ProviderRecommendation } from '@vibesdotdev/ai/recommendations/base';
|
|
2
|
+
export class MetaRecommendation extends ProviderRecommendation {
|
|
3
|
+
providerType = 'meta';
|
|
4
|
+
displayName = 'Meta Model API';
|
|
5
|
+
getUseCaseScore(useCase) { return ({ chat: 47, development: 50, research: 45, images: 18, video: 12, audio: 8, organization: 42 })[useCase]; }
|
|
6
|
+
getStageScore(stage) { return stage === 'production' ? 18 : 0; }
|
|
7
|
+
getRequiredEnvironmentVariables() { return ['MODEL_API_KEY']; }
|
|
8
|
+
getReason(useCase) { return useCase === 'development' ? 'Muse Spark 1.3 targets agentic workflows and long-horizon coding with a 1M-token context' : 'Muse Spark reasoning with multimodal input and tool calling'; }
|
|
9
|
+
getStrengths() { return ['Agentic coding', 'OpenAI-compatible chat', '1M-token context']; }
|
|
10
|
+
getWeaknesses(context) { return context.requiresLocal ? ['This integration targets the hosted Meta Model API'] : []; }
|
|
11
|
+
getSupportedSetupMethods() { return ['oauth', 'api_key', 'env_var']; }
|
|
12
|
+
async getSetupSteps(method) { if (method === 'oauth')
|
|
13
|
+
return [{ step: 'Sign in to Muse', description: 'Run `vibes dev external muse login`. That runs `muse login` and Muse keeps the account. An API key is a separate, billed connection.' }]; return method === 'api_key' ? [{ step: 'Store Meta API key', description: 'Create a key in the Model API dashboard and store it through the Vibes credential boundary.', action: 'https://dev.meta.ai/docs/authentication' }] : [{ step: 'Bind environment credential', description: 'Bind MODEL_API_KEY through the runtime environment.' }]; }
|
|
14
|
+
async recommendModels(_adapter, context) { return [{ modelId: 'muse-spark-1.3', modelName: 'Muse Spark 1.3', score: context.useCase === 'development' ? 98 : 94, reason: 'Current Meta flagship for agentic and coding work', contextWindow: 1_048_576, maxOutputTokens: 131_072, capabilities: ['chat', 'reasoning', 'code', 'tools', 'vision'], isAvailable: true, requiresUpgrade: false, useCaseFit: context.useCase === 'development' ? 98 : 94 }]; }
|
|
15
|
+
getExecutionContext() { return { recommendModels: 'server', getSetupSteps: 'both' }; }
|
|
16
|
+
supportsOAuth() { return true; }
|
|
17
|
+
supportsLocal() { return false; }
|
|
18
|
+
requiresGPU() { return false; }
|
|
19
|
+
}
|
|
20
|
+
/** Compatibility access is explicit about the runtime that owns the capability. */
|
|
21
|
+
export function metaRecommendation(runtime) {
|
|
22
|
+
return runtime.query('ai/provider-recommendation').withId('meta').resolve();
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=recommendations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendations.js","sourceRoot":"","sources":["../../../../src/ai/providers/meta/recommendations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface KnownModel {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
description: string;
|
|
6
|
+
capabilities: string[];
|
|
7
|
+
tokenLimit: number;
|
|
8
|
+
maxOutputTokens?: number;
|
|
9
|
+
isVision?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const META_KNOWN_MODELS: readonly KnownModel[];
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/meta/schemas/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;AAE5L,eAAO,MAAM,iBAAiB,EAAE,SAAS,UAAU,EAMzC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const META_KNOWN_MODELS = [
|
|
2
|
+
{ id: 'muse-spark-1.3', name: 'muse-spark-1.3', displayName: 'Muse Spark 1.3', description: 'Latest Muse Spark, tuned for agentic workflows and coding with a 1M-token context. Recommended for new work.', capabilities: ['chat', 'reasoning', 'code', 'tools', 'vision'], tokenLimit: 1_048_576, maxOutputTokens: 131_072, isVision: true },
|
|
3
|
+
{ id: 'muse-spark-1.3-contributor', name: 'muse-spark-1.3-contributor', displayName: 'Muse Spark 1.3 Contributor', description: 'Discounted Muse Spark 1.3 tier that permits training on prompts and completions.', capabilities: ['chat', 'reasoning', 'code', 'tools', 'vision'], tokenLimit: 1_048_576, maxOutputTokens: 131_072, isVision: true },
|
|
4
|
+
{ id: 'muse-spark-1.2', name: 'muse-spark-1.2', displayName: 'Muse Spark 1.2', description: 'Previous Muse Spark version with full audio understanding support and a 1M-token context.', capabilities: ['chat', 'reasoning', 'code', 'tools', 'vision'], tokenLimit: 1_048_576, maxOutputTokens: 131_072, isVision: true },
|
|
5
|
+
{ id: 'muse-spark-1.2-contributor', name: 'muse-spark-1.2-contributor', displayName: 'Muse Spark 1.2 Contributor', description: 'Discounted Muse Spark 1.2 tier that permits training on prompts and completions.', capabilities: ['chat', 'reasoning', 'code', 'tools', 'vision'], tokenLimit: 1_048_576, maxOutputTokens: 131_072, isVision: true },
|
|
6
|
+
{ id: 'muse-spark-1.1', name: 'muse-spark-1.1', displayName: 'Muse Spark 1.1', description: 'Original Muse Spark version with a 1M-token context.', capabilities: ['chat', 'reasoning', 'code', 'tools', 'vision'], tokenLimit: 1_048_576, maxOutputTokens: 131_072, isVision: true }
|
|
7
|
+
];
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ai/providers/meta/schemas/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAA0B;IACvD,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,8GAA8G,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC7U,EAAE,EAAE,EAAE,4BAA4B,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,kFAAkF,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;IACrV,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,2FAA2F,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC1T,EAAE,EAAE,EAAE,4BAA4B,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,4BAA4B,EAAE,WAAW,EAAE,kFAAkF,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;IACrV,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,sDAAsD,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;CAC5Q,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external.plugin.d.ts","sourceRoot":"","sources":["../../src/external/external.plugin.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,kBAAkB,6CAW7B,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createRuntimePlugin } from '@vibesdotdev/kernel';
|
|
2
|
+
import { createExternalHostLoader, registerExternalHost, registerExternalOperation } from '@vibesdotdev/external';
|
|
3
|
+
import descriptor from "./muse/index.js";
|
|
4
|
+
import { museLoginOperationDescriptor } from "./muse-subscription.operation.descriptors.js";
|
|
5
|
+
export const metaExternalPlugin = createRuntimePlugin({
|
|
6
|
+
id: 'integrations-meta/external',
|
|
7
|
+
name: 'integrations-meta/external',
|
|
8
|
+
description: 'Muse Code external host and account sign-in',
|
|
9
|
+
dependencies: ['external'],
|
|
10
|
+
async onRegister(runtime) {
|
|
11
|
+
await registerExternalHost(runtime, descriptor, createExternalHostLoader(descriptor));
|
|
12
|
+
await registerExternalOperation(runtime, museLoginOperationDescriptor, async () => ({
|
|
13
|
+
impl: (await import("./muse-subscription.operations.js")).museLoginOperation
|
|
14
|
+
}));
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
export default metaExternalPlugin;
|
|
18
|
+
//# sourceMappingURL=external.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external.plugin.js","sourceRoot":"","sources":["../../src/external/external.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAmB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACN,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AAE5F,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;IACrD,EAAE,EAAE,4BAA4B;IAChC,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,6CAA6C;IAC1D,YAAY,EAAE,CAAC,UAAU,CAAC;IAC1B,KAAK,CAAC,UAAU,CAAC,OAAmB;QACnC,MAAM,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC;QACtF,MAAM,yBAAyB,CAAC,OAAO,EAAE,4BAA4B,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACnF,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC,kBAAkB;SAC5E,CAAC,CAAC,CAAC;IACL,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
|