@multiplayer-app/sandbox 0.0.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/dist/agents/filingramp-fetch.agent.d.ts +4 -0
- package/dist/agents/filingramp-fetch.agent.d.ts.map +1 -0
- package/dist/agents/filingramp-fetch.agent.js +195 -0
- package/dist/agents/filingramp-fetch.agent.js.map +1 -0
- package/dist/agents/html-generator.agent.d.ts +4 -0
- package/dist/agents/html-generator.agent.d.ts.map +1 -0
- package/dist/agents/html-generator.agent.js +93 -0
- package/dist/agents/html-generator.agent.js.map +1 -0
- package/dist/agents/knowledge/filingramp-endpoints.d.ts +23 -0
- package/dist/agents/knowledge/filingramp-endpoints.d.ts.map +1 -0
- package/dist/agents/knowledge/filingramp-endpoints.js +116 -0
- package/dist/agents/knowledge/filingramp-endpoints.js.map +1 -0
- package/dist/agents/markdown-generator.agent.d.ts +4 -0
- package/dist/agents/markdown-generator.agent.d.ts.map +1 -0
- package/dist/agents/markdown-generator.agent.js +101 -0
- package/dist/agents/markdown-generator.agent.js.map +1 -0
- package/dist/agents/shared/publish-session-artifacts.tool.d.ts +21 -0
- package/dist/agents/shared/publish-session-artifacts.tool.d.ts.map +1 -0
- package/dist/agents/shared/publish-session-artifacts.tool.js +106 -0
- package/dist/agents/shared/publish-session-artifacts.tool.js.map +1 -0
- package/dist/agents.d.ts +5 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +14 -0
- package/dist/agents.js.map +1 -0
- package/dist/ai-agent.service.d.ts +10 -0
- package/dist/ai-agent.service.d.ts.map +1 -0
- package/dist/ai-agent.service.js +29 -0
- package/dist/ai-agent.service.js.map +1 -0
- package/dist/builder-api-config.d.ts +31 -0
- package/dist/builder-api-config.d.ts.map +1 -0
- package/dist/builder-api-config.js +60 -0
- package/dist/builder-api-config.js.map +1 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +18 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +23 -0
- package/dist/context.js.map +1 -0
- package/dist/create-builder-api.d.ts +30 -0
- package/dist/create-builder-api.d.ts.map +1 -0
- package/dist/create-builder-api.js +63 -0
- package/dist/create-builder-api.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/session-pages/default-session-styles.d.ts +6 -0
- package/dist/lib/session-pages/default-session-styles.d.ts.map +1 -0
- package/dist/lib/session-pages/default-session-styles.js +503 -0
- package/dist/lib/session-pages/default-session-styles.js.map +1 -0
- package/dist/lib/session-pages/index.d.ts +7 -0
- package/dist/lib/session-pages/index.d.ts.map +1 -0
- package/dist/lib/session-pages/index.js +20 -0
- package/dist/lib/session-pages/index.js.map +1 -0
- package/dist/lib/session-pages/list-session-artifacts.d.ts +6 -0
- package/dist/lib/session-pages/list-session-artifacts.d.ts.map +1 -0
- package/dist/lib/session-pages/list-session-artifacts.js +40 -0
- package/dist/lib/session-pages/list-session-artifacts.js.map +1 -0
- package/dist/lib/session-pages/paths.d.ts +7 -0
- package/dist/lib/session-pages/paths.d.ts.map +1 -0
- package/dist/lib/session-pages/paths.js +49 -0
- package/dist/lib/session-pages/paths.js.map +1 -0
- package/dist/lib/session-pages/resolve-artifact-notify-user-ids.d.ts +3 -0
- package/dist/lib/session-pages/resolve-artifact-notify-user-ids.d.ts.map +1 -0
- package/dist/lib/session-pages/resolve-artifact-notify-user-ids.js +28 -0
- package/dist/lib/session-pages/resolve-artifact-notify-user-ids.js.map +1 -0
- package/dist/lib/session-pages/resolve-chat-id.d.ts +21 -0
- package/dist/lib/session-pages/resolve-chat-id.d.ts.map +1 -0
- package/dist/lib/session-pages/resolve-chat-id.js +64 -0
- package/dist/lib/session-pages/resolve-chat-id.js.map +1 -0
- package/dist/lib/session-pages/write-session-artifacts.d.ts +27 -0
- package/dist/lib/session-pages/write-session-artifacts.d.ts.map +1 -0
- package/dist/lib/session-pages/write-session-artifacts.js +72 -0
- package/dist/lib/session-pages/write-session-artifacts.js.map +1 -0
- package/dist/lib/socket/artifact-events.d.ts +14 -0
- package/dist/lib/socket/artifact-events.d.ts.map +1 -0
- package/dist/lib/socket/artifact-events.js +31 -0
- package/dist/lib/socket/artifact-events.js.map +1 -0
- package/dist/lib/socketIdFromRequest.d.ts +4 -0
- package/dist/lib/socketIdFromRequest.d.ts.map +1 -0
- package/dist/lib/socketIdFromRequest.js +13 -0
- package/dist/lib/socketIdFromRequest.js.map +1 -0
- package/dist/logger.d.ts +7 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +20 -0
- package/dist/logger.js.map +1 -0
- package/dist/middleware/attachDemoUser.d.ts +11 -0
- package/dist/middleware/attachDemoUser.d.ts.map +1 -0
- package/dist/middleware/attachDemoUser.js +23 -0
- package/dist/middleware/attachDemoUser.js.map +1 -0
- package/dist/realtime/init-realtime.d.ts +11 -0
- package/dist/realtime/init-realtime.d.ts.map +1 -0
- package/dist/realtime/init-realtime.js +48 -0
- package/dist/realtime/init-realtime.js.map +1 -0
- package/dist/realtime/reset-session-artifact-y-docs.d.ts +2 -0
- package/dist/realtime/reset-session-artifact-y-docs.d.ts.map +1 -0
- package/dist/realtime/reset-session-artifact-y-docs.js +9 -0
- package/dist/realtime/reset-session-artifact-y-docs.js.map +1 -0
- package/dist/realtime/session-artifact-document-id.d.ts +6 -0
- package/dist/realtime/session-artifact-document-id.d.ts.map +1 -0
- package/dist/realtime/session-artifact-document-id.js +34 -0
- package/dist/realtime/session-artifact-document-id.js.map +1 -0
- package/dist/realtime/session-artifact-y-socket-io.d.ts +18 -0
- package/dist/realtime/session-artifact-y-socket-io.d.ts.map +1 -0
- package/dist/realtime/session-artifact-y-socket-io.js +106 -0
- package/dist/realtime/session-artifact-y-socket-io.js.map +1 -0
- package/dist/realtime/session-artifact-yjs-store.d.ts +18 -0
- package/dist/realtime/session-artifact-yjs-store.d.ts.map +1 -0
- package/dist/realtime/session-artifact-yjs-store.js +147 -0
- package/dist/realtime/session-artifact-yjs-store.js.map +1 -0
- package/dist/routes/chats/abort.d.ts +3 -0
- package/dist/routes/chats/abort.d.ts.map +1 -0
- package/dist/routes/chats/abort.js +18 -0
- package/dist/routes/chats/abort.js.map +1 -0
- package/dist/routes/chats/actions.d.ts +3 -0
- package/dist/routes/chats/actions.d.ts.map +1 -0
- package/dist/routes/chats/actions.js +36 -0
- package/dist/routes/chats/actions.js.map +1 -0
- package/dist/routes/chats/artifacts.d.ts +3 -0
- package/dist/routes/chats/artifacts.d.ts.map +1 -0
- package/dist/routes/chats/artifacts.js +12 -0
- package/dist/routes/chats/artifacts.js.map +1 -0
- package/dist/routes/chats/delete.d.ts +3 -0
- package/dist/routes/chats/delete.d.ts.map +1 -0
- package/dist/routes/chats/delete.js +17 -0
- package/dist/routes/chats/delete.js.map +1 -0
- package/dist/routes/chats/get.d.ts +3 -0
- package/dist/routes/chats/get.d.ts.map +1 -0
- package/dist/routes/chats/get.js +17 -0
- package/dist/routes/chats/get.js.map +1 -0
- package/dist/routes/chats/getStream.d.ts +3 -0
- package/dist/routes/chats/getStream.d.ts.map +1 -0
- package/dist/routes/chats/getStream.js +57 -0
- package/dist/routes/chats/getStream.js.map +1 -0
- package/dist/routes/chats/index.d.ts +2 -0
- package/dist/routes/chats/index.d.ts.map +1 -0
- package/dist/routes/chats/index.js +31 -0
- package/dist/routes/chats/index.js.map +1 -0
- package/dist/routes/chats/list.d.ts +3 -0
- package/dist/routes/chats/list.d.ts.map +1 -0
- package/dist/routes/chats/list.js +40 -0
- package/dist/routes/chats/list.js.map +1 -0
- package/dist/routes/chats/messages.d.ts +3 -0
- package/dist/routes/chats/messages.d.ts.map +1 -0
- package/dist/routes/chats/messages.js +27 -0
- package/dist/routes/chats/messages.js.map +1 -0
- package/dist/routes/chats/multiUserMessages.d.ts +3 -0
- package/dist/routes/chats/multiUserMessages.d.ts.map +1 -0
- package/dist/routes/chats/multiUserMessages.js +43 -0
- package/dist/routes/chats/multiUserMessages.js.map +1 -0
- package/dist/routes/chats/stream.d.ts +3 -0
- package/dist/routes/chats/stream.d.ts.map +1 -0
- package/dist/routes/chats/stream.js +78 -0
- package/dist/routes/chats/stream.js.map +1 -0
- package/dist/routes/chats/title.d.ts +3 -0
- package/dist/routes/chats/title.d.ts.map +1 -0
- package/dist/routes/chats/title.js +22 -0
- package/dist/routes/chats/title.js.map +1 -0
- package/dist/routes/chats/updateToolCall.d.ts +3 -0
- package/dist/routes/chats/updateToolCall.d.ts.map +1 -0
- package/dist/routes/chats/updateToolCall.js +49 -0
- package/dist/routes/chats/updateToolCall.js.map +1 -0
- package/dist/routes/files/index.d.ts +2 -0
- package/dist/routes/files/index.d.ts.map +1 -0
- package/dist/routes/files/index.js +8 -0
- package/dist/routes/files/index.js.map +1 -0
- package/dist/routes/files/upload.d.ts +3 -0
- package/dist/routes/files/upload.d.ts.map +1 -0
- package/dist/routes/files/upload.js +69 -0
- package/dist/routes/files/upload.js.map +1 -0
- package/dist/routes/health/get.d.ts +3 -0
- package/dist/routes/health/get.d.ts.map +1 -0
- package/dist/routes/health/get.js +13 -0
- package/dist/routes/health/get.js.map +1 -0
- package/dist/routes/health/index.d.ts +2 -0
- package/dist/routes/health/index.d.ts.map +1 -0
- package/dist/routes/health/index.js +8 -0
- package/dist/routes/health/index.js.map +1 -0
- package/dist/routes/models/get.d.ts +3 -0
- package/dist/routes/models/get.d.ts.map +1 -0
- package/dist/routes/models/get.js +11 -0
- package/dist/routes/models/get.js.map +1 -0
- package/dist/routes/models/index.d.ts +2 -0
- package/dist/routes/models/index.d.ts.map +1 -0
- package/dist/routes/models/index.js +8 -0
- package/dist/routes/models/index.js.map +1 -0
- package/dist/routes/schemas.d.ts +725 -0
- package/dist/routes/schemas.d.ts.map +1 -0
- package/dist/routes/schemas.js +92 -0
- package/dist/routes/schemas.js.map +1 -0
- package/dist/routes/sessions.d.ts +2 -0
- package/dist/routes/sessions.d.ts.map +1 -0
- package/dist/routes/sessions.js +51 -0
- package/dist/routes/sessions.js.map +1 -0
- package/dist/server.d.ts +13 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +36 -0
- package/dist/server.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AgentConfig } from '@multiplayer-app/ai-agent-types';
|
|
2
|
+
import type { BuilderApiAgentDeps } from '../builder-api-config';
|
|
3
|
+
export declare function createFilingRampFetchAgent(deps: BuilderApiAgentDeps): AgentConfig;
|
|
4
|
+
//# sourceMappingURL=filingramp-fetch.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filingramp-fetch.agent.d.ts","sourceRoot":"","sources":["../../src/agents/filingramp-fetch.agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAGlE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AA0EhE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,mBAAmB,GAAG,WAAW,CA+HjF"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createFilingRampFetchAgent = createFilingRampFetchAgent;
|
|
4
|
+
const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const filingramp_endpoints_1 = require("./knowledge/filingramp-endpoints");
|
|
7
|
+
const publish_session_artifacts_tool_1 = require("./shared/publish-session-artifacts.tool");
|
|
8
|
+
const searchEndpointsInputSchema = zod_1.z.object({
|
|
9
|
+
query: zod_1.z
|
|
10
|
+
.string()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe('Search path, summary, tags, or parameter names (e.g. filings, dashboard, productId)'),
|
|
13
|
+
service: zod_1.z
|
|
14
|
+
.string()
|
|
15
|
+
.optional()
|
|
16
|
+
.describe('Filter by service section (e.g. ramp-web-api, ramp-library-service)'),
|
|
17
|
+
tag: zod_1.z.string().optional().describe('Filter by OpenAPI tag (e.g. filings, products)'),
|
|
18
|
+
limit: zod_1.z.number().int().min(1).max(50).optional().describe('Max endpoints to return (default 25)'),
|
|
19
|
+
});
|
|
20
|
+
function buildFetchScaffold(baseUrl) {
|
|
21
|
+
return `/**
|
|
22
|
+
* FilingRamp read-only fetch helpers (GET catalog only).
|
|
23
|
+
* Set before running: window.__FILINGRAMP_API_KEY__ = '<api-key>';
|
|
24
|
+
*/
|
|
25
|
+
const FILINGRAMP_BASE_URL = ${JSON.stringify(baseUrl.replace(/\/$/, ''))};
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @param {string} path - Absolute path from catalog, e.g. "/v1/products"
|
|
29
|
+
* @param {Record<string, string | number | boolean | undefined>} [query]
|
|
30
|
+
*/
|
|
31
|
+
async function filingRampGet(path, query = {}) {
|
|
32
|
+
const url = new URL(path.startsWith('/') ? path : \`/\${path}\`, FILINGRAMP_BASE_URL);
|
|
33
|
+
for (const [key, value] of Object.entries(query)) {
|
|
34
|
+
if (value === undefined || value === null) continue;
|
|
35
|
+
if (Array.isArray(value)) {
|
|
36
|
+
for (const item of value) url.searchParams.append(key, String(item));
|
|
37
|
+
} else {
|
|
38
|
+
url.searchParams.set(key, String(value));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const token = globalThis.__FILINGRAMP_API_KEY__ ?? '';
|
|
43
|
+
const headers = { Accept: 'application/json' };
|
|
44
|
+
if (token) headers.Authorization = \`Bearer \${token}\`;
|
|
45
|
+
|
|
46
|
+
const response = await fetch(url.toString(), { headers, method: 'GET' });
|
|
47
|
+
if (!response.ok) {
|
|
48
|
+
const detail = await response.text().catch(() => '');
|
|
49
|
+
throw new Error(\`FilingRamp \${response.status} \${response.statusText}: \${detail}\`.trim());
|
|
50
|
+
}
|
|
51
|
+
const contentType = response.headers.get('content-type') ?? '';
|
|
52
|
+
if (contentType.includes('application/json')) return response.json();
|
|
53
|
+
return response.text();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Paginate list endpoints that support limit/offset. */
|
|
57
|
+
async function filingRampList(path, query = {}, { pageSize = 50, maxPages = 20 } = {}) {
|
|
58
|
+
const items = [];
|
|
59
|
+
let offset = Number(query.offset ?? 0);
|
|
60
|
+
for (let page = 0; page < maxPages; page += 1) {
|
|
61
|
+
const batch = await filingRampGet(path, { ...query, limit: pageSize, offset });
|
|
62
|
+
const rows = Array.isArray(batch) ? batch : batch?.data ?? batch?.items ?? [];
|
|
63
|
+
if (!Array.isArray(rows) || rows.length === 0) break;
|
|
64
|
+
items.push(...rows);
|
|
65
|
+
if (rows.length < pageSize) break;
|
|
66
|
+
offset += rows.length;
|
|
67
|
+
}
|
|
68
|
+
return items;
|
|
69
|
+
}
|
|
70
|
+
`;
|
|
71
|
+
}
|
|
72
|
+
function createFilingRampFetchAgent(deps) {
|
|
73
|
+
const { baseUrl, apiKey } = deps.filingramp;
|
|
74
|
+
return {
|
|
75
|
+
name: 'filingramp-fetch',
|
|
76
|
+
description: 'Generates JavaScript to fetch read-only data from the FilingRamp API',
|
|
77
|
+
defaultModel: deps.defaultModel,
|
|
78
|
+
systemPrompt: `You write browser-ready JavaScript that loads data from the FilingRamp platform using GET endpoints only.
|
|
79
|
+
|
|
80
|
+
Workflow:
|
|
81
|
+
1. Call getFilingRampConfig for base URL and auth notes.
|
|
82
|
+
2. Call getFilingRampEndpoints to find real paths, required query params, and tags — never invent URLs.
|
|
83
|
+
3. Call getFilingRampFetchScaffold for the standard fetch helper, then extend it with domain functions (e.g. loadProducts, loadFiling).
|
|
84
|
+
4. Publish script.js (and optional lib/filingramp-client.js, data/*.json) via publishSessionArtifacts.
|
|
85
|
+
5. Dashboard HTML may be published separately or by the html-generator agent; focus on correct API access here.
|
|
86
|
+
|
|
87
|
+
Rules:
|
|
88
|
+
- Only use endpoints from the catalog (GET / list). No POST, PUT, PATCH, or DELETE.
|
|
89
|
+
- Path params use {id} notation in the catalog — substitute real ids at runtime.
|
|
90
|
+
- Array query params (fields[], productIds[]) must be appended repeatedly in URLSearchParams.
|
|
91
|
+
- Use filingRampGet for single resources and filingRampList when paginating list endpoints.
|
|
92
|
+
- Handle errors with clear messages; do not swallow HTTP failures.
|
|
93
|
+
- Prefer small, composable functions that return JSON ready for charts/tables.`,
|
|
94
|
+
stopWhen: () => false,
|
|
95
|
+
tools: [
|
|
96
|
+
{
|
|
97
|
+
type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
|
|
98
|
+
userConfigurable: true,
|
|
99
|
+
data: {
|
|
100
|
+
title: 'getFilingRampConfig',
|
|
101
|
+
needsApproval: false,
|
|
102
|
+
description: 'Runtime FilingRamp API base URL and auth setup for generated scripts',
|
|
103
|
+
inputSchema: zod_1.z.object({}),
|
|
104
|
+
outputSchema: zod_1.z.object({
|
|
105
|
+
baseUrl: zod_1.z.string(),
|
|
106
|
+
apiKeyConfigured: zod_1.z.boolean(),
|
|
107
|
+
authNotes: zod_1.z.string(),
|
|
108
|
+
}),
|
|
109
|
+
execute: () => ({
|
|
110
|
+
baseUrl,
|
|
111
|
+
apiKeyConfigured: Boolean(apiKey),
|
|
112
|
+
authNotes: 'Browser scripts read window.__FILINGRAMP_API_KEY__. The API server may use FILINGRAMP_API_KEY from env when proxying; set the token in the preview host or inject before running script.js.',
|
|
113
|
+
}),
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
|
|
118
|
+
userConfigurable: true,
|
|
119
|
+
data: {
|
|
120
|
+
title: 'getFilingRampEndpoints',
|
|
121
|
+
needsApproval: false,
|
|
122
|
+
description: 'Search the FilingRamp GET endpoint catalog (from knowledge/filingramp-endpoints.md)',
|
|
123
|
+
inputSchema: searchEndpointsInputSchema,
|
|
124
|
+
outputSchema: zod_1.z.object({
|
|
125
|
+
total: zod_1.z.number(),
|
|
126
|
+
endpoints: zod_1.z.array(zod_1.z.object({
|
|
127
|
+
service: zod_1.z.string(),
|
|
128
|
+
method: zod_1.z.literal('GET'),
|
|
129
|
+
path: zod_1.z.string(),
|
|
130
|
+
type: zod_1.z.string(),
|
|
131
|
+
summary: zod_1.z.string().optional(),
|
|
132
|
+
tags: zod_1.z.array(zod_1.z.string()),
|
|
133
|
+
parameters: zod_1.z.array(zod_1.z.string()),
|
|
134
|
+
})),
|
|
135
|
+
catalogSize: zod_1.z.number(),
|
|
136
|
+
}),
|
|
137
|
+
execute: (input) => {
|
|
138
|
+
const result = (0, filingramp_endpoints_1.searchFilingRampEndpoints)(input);
|
|
139
|
+
return {
|
|
140
|
+
...result,
|
|
141
|
+
catalogSize: (0, filingramp_endpoints_1.getFilingRampEndpointCatalog)().length,
|
|
142
|
+
};
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
|
|
148
|
+
userConfigurable: true,
|
|
149
|
+
data: {
|
|
150
|
+
title: 'getFilingRampEndpointsReference',
|
|
151
|
+
needsApproval: false,
|
|
152
|
+
description: 'Return the full markdown endpoint catalog (large; use search tool first)',
|
|
153
|
+
inputSchema: zod_1.z.object({
|
|
154
|
+
confirm: zod_1.z
|
|
155
|
+
.boolean()
|
|
156
|
+
.describe('Must be true — catalog is large (~90 endpoints)'),
|
|
157
|
+
}),
|
|
158
|
+
outputSchema: zod_1.z.object({
|
|
159
|
+
markdown: zod_1.z.string(),
|
|
160
|
+
catalogSize: zod_1.z.number(),
|
|
161
|
+
}),
|
|
162
|
+
execute: (input) => {
|
|
163
|
+
if (!input.confirm) {
|
|
164
|
+
throw new Error('Set confirm: true to load the full catalog');
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
markdown: (0, filingramp_endpoints_1.loadFilingRampEndpointsMarkdown)(),
|
|
168
|
+
catalogSize: (0, filingramp_endpoints_1.getFilingRampEndpointCatalog)().length,
|
|
169
|
+
};
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
|
|
175
|
+
userConfigurable: true,
|
|
176
|
+
data: {
|
|
177
|
+
title: 'getFilingRampFetchScaffold',
|
|
178
|
+
needsApproval: false,
|
|
179
|
+
description: 'Starter script.js with filingRampGet and filingRampList helpers',
|
|
180
|
+
inputSchema: zod_1.z.object({}),
|
|
181
|
+
outputSchema: zod_1.z.object({
|
|
182
|
+
baseUrl: zod_1.z.string(),
|
|
183
|
+
script: zod_1.z.string(),
|
|
184
|
+
}),
|
|
185
|
+
execute: () => ({
|
|
186
|
+
baseUrl,
|
|
187
|
+
script: buildFetchScaffold(baseUrl),
|
|
188
|
+
}),
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
(0, publish_session_artifacts_tool_1.createPublishSessionArtifactsTool)({ needsApproval: true, validateIndexHtml: false }),
|
|
192
|
+
],
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=filingramp-fetch.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filingramp-fetch.agent.js","sourceRoot":"","sources":["../../src/agents/filingramp-fetch.agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AgentConfig } from '@multiplayer-app/ai-agent-types';
|
|
2
|
+
import type { BuilderApiAgentDeps } from '../builder-api-config';
|
|
3
|
+
export declare function createHtmlGeneratorAgent(deps: BuilderApiAgentDeps): AgentConfig;
|
|
4
|
+
//# sourceMappingURL=html-generator.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-generator.agent.d.ts","sourceRoot":"","sources":["../../src/agents/html-generator.agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAGlE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AA0DhE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,GAAG,WAAW,CAwC/E"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createHtmlGeneratorAgent = createHtmlGeneratorAgent;
|
|
4
|
+
const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const publish_session_artifacts_tool_1 = require("./shared/publish-session-artifacts.tool");
|
|
7
|
+
const validateHtmlInputSchema = zod_1.z.object({
|
|
8
|
+
html: zod_1.z.string().min(1).describe('HTML to validate'),
|
|
9
|
+
});
|
|
10
|
+
function basicHtmlValidation(html) {
|
|
11
|
+
const errors = [];
|
|
12
|
+
const warnings = [];
|
|
13
|
+
if (!html.trim()) {
|
|
14
|
+
errors.push('HTML is empty');
|
|
15
|
+
}
|
|
16
|
+
const openTags = [...html.matchAll(/<([a-z][a-z0-9]*)\b[^>]*(?<!\/)>/gi)];
|
|
17
|
+
const closeTags = [...html.matchAll(/<\/([a-z][a-z0-9]*)\s*>/gi)];
|
|
18
|
+
const stack = [];
|
|
19
|
+
for (const match of openTags) {
|
|
20
|
+
const tag = match[1].toLowerCase();
|
|
21
|
+
if (![
|
|
22
|
+
'area',
|
|
23
|
+
'base',
|
|
24
|
+
'br',
|
|
25
|
+
'col',
|
|
26
|
+
'embed',
|
|
27
|
+
'hr',
|
|
28
|
+
'img',
|
|
29
|
+
'input',
|
|
30
|
+
'link',
|
|
31
|
+
'meta',
|
|
32
|
+
'param',
|
|
33
|
+
'source',
|
|
34
|
+
'track',
|
|
35
|
+
'wbr',
|
|
36
|
+
].includes(tag)) {
|
|
37
|
+
stack.push(tag);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
for (const match of closeTags) {
|
|
41
|
+
const tag = match[1].toLowerCase();
|
|
42
|
+
const last = stack.pop();
|
|
43
|
+
if (last !== tag) {
|
|
44
|
+
warnings.push(`Possible mismatched closing tag </${tag}>`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (stack.length > 0) {
|
|
48
|
+
warnings.push(`Unclosed elements: ${stack.join(', ')}`);
|
|
49
|
+
}
|
|
50
|
+
return { valid: errors.length === 0, warnings, errors };
|
|
51
|
+
}
|
|
52
|
+
function createHtmlGeneratorAgent(deps) {
|
|
53
|
+
return {
|
|
54
|
+
name: 'html-generator',
|
|
55
|
+
description: 'Builds session previews: HTML dashboards, CSS, JavaScript, and data files',
|
|
56
|
+
defaultModel: deps.defaultModel,
|
|
57
|
+
systemPrompt: `You build data dashboards and previews for user data. Every response that produces or updates UI MUST end with publishSessionArtifacts — nothing is saved until you publish.
|
|
58
|
+
|
|
59
|
+
Workflow:
|
|
60
|
+
1. Generate artifacts — typically index.html, styles.css, script.js, and optional JSON under data/.
|
|
61
|
+
2. Keep paths relative (no leading slash). Link assets from HTML with relative URLs (./styles.css, ./script.js, ./data/metrics.json).
|
|
62
|
+
3. Put layout/styling in styles.css and data fetching or rendering in script.js.
|
|
63
|
+
4. For dashboards: use a shell with sidebar + main, KPI cards (.metrics article), and tables (.data-table).
|
|
64
|
+
5. Call validateHtml on index.html when markup is non-trivial.
|
|
65
|
+
6. Always call publishSessionArtifacts in the same turn. Include only files you created or modified in this turn — omit unchanged files; they remain on disk.
|
|
66
|
+
7. Tell the user the previewUrl from the publish result so they can open App Preview.
|
|
67
|
+
|
|
68
|
+
Base styles are merged into styles.css automatically unless includeBaseStyles is false.`,
|
|
69
|
+
stopWhen: () => false,
|
|
70
|
+
tools: [
|
|
71
|
+
{ type: ai_agent_types_1.AgentToolType.WEB_SEARCH, userConfigurable: true },
|
|
72
|
+
{ type: ai_agent_types_1.AgentToolType.REQUEST_CLARIFICATION, userConfigurable: true },
|
|
73
|
+
{
|
|
74
|
+
type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
|
|
75
|
+
userConfigurable: true,
|
|
76
|
+
data: {
|
|
77
|
+
title: 'validateHtml',
|
|
78
|
+
needsApproval: false,
|
|
79
|
+
description: 'Run basic structural checks on HTML before publishing',
|
|
80
|
+
inputSchema: validateHtmlInputSchema,
|
|
81
|
+
outputSchema: zod_1.z.object({
|
|
82
|
+
valid: zod_1.z.boolean(),
|
|
83
|
+
warnings: zod_1.z.array(zod_1.z.string()),
|
|
84
|
+
errors: zod_1.z.array(zod_1.z.string()),
|
|
85
|
+
}),
|
|
86
|
+
execute: (input) => basicHtmlValidation(input.html),
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
(0, publish_session_artifacts_tool_1.createPublishSessionArtifactsTool)({ needsApproval: false, validateIndexHtml: true }),
|
|
90
|
+
],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=html-generator.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-generator.agent.js","sourceRoot":"","sources":["../../src/agents/html-generator.agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface FilingRampEndpoint {
|
|
2
|
+
service: string;
|
|
3
|
+
method: 'GET';
|
|
4
|
+
path: string;
|
|
5
|
+
type: 'list' | 'get' | string;
|
|
6
|
+
summary?: string;
|
|
7
|
+
tags: string[];
|
|
8
|
+
parameters: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function loadFilingRampEndpointsMarkdown(): string;
|
|
11
|
+
export declare function parseFilingRampEndpoints(markdown: string): FilingRampEndpoint[];
|
|
12
|
+
export declare function getFilingRampEndpointCatalog(): FilingRampEndpoint[];
|
|
13
|
+
export interface SearchFilingRampEndpointsInput {
|
|
14
|
+
query?: string;
|
|
15
|
+
service?: string;
|
|
16
|
+
tag?: string;
|
|
17
|
+
limit?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function searchFilingRampEndpoints(input?: SearchFilingRampEndpointsInput): {
|
|
20
|
+
total: number;
|
|
21
|
+
endpoints: FilingRampEndpoint[];
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=filingramp-endpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filingramp-endpoints.d.ts","sourceRoot":"","sources":["../../../src/agents/knowledge/filingramp-endpoints.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,KAAK,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAqBD,wBAAgB,+BAA+B,IAAI,MAAM,CAIxD;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA2D/E;AAED,wBAAgB,4BAA4B,IAAI,kBAAkB,EAAE,CAKnE;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,yBAAyB,CAAC,KAAK,GAAE,8BAAmC,GAAG;IACrF,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,kBAAkB,EAAE,CAAA;CAChC,CA6BA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.loadFilingRampEndpointsMarkdown = loadFilingRampEndpointsMarkdown;
|
|
7
|
+
exports.parseFilingRampEndpoints = parseFilingRampEndpoints;
|
|
8
|
+
exports.getFilingRampEndpointCatalog = getFilingRampEndpointCatalog;
|
|
9
|
+
exports.searchFilingRampEndpoints = searchFilingRampEndpoints;
|
|
10
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
11
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
12
|
+
let cachedCatalog = null;
|
|
13
|
+
let cachedRawMarkdown = null;
|
|
14
|
+
function resolveEndpointsFilePath() {
|
|
15
|
+
const candidates = [
|
|
16
|
+
node_path_1.default.join(process.cwd(), 'knowledge', 'filingramp-endpoints.md'),
|
|
17
|
+
node_path_1.default.join(__dirname, '../../../knowledge/filingramp-endpoints.md'),
|
|
18
|
+
node_path_1.default.join(__dirname, '../../../../knowledge/filingramp-endpoints.md'),
|
|
19
|
+
];
|
|
20
|
+
for (const candidate of candidates) {
|
|
21
|
+
if (node_fs_1.default.existsSync(candidate))
|
|
22
|
+
return candidate;
|
|
23
|
+
}
|
|
24
|
+
throw new Error('FilingRamp endpoints catalog not found. Expected knowledge/filingramp-endpoints.md next to the app or @multiplayer-builder/builder-api package.');
|
|
25
|
+
}
|
|
26
|
+
function loadFilingRampEndpointsMarkdown() {
|
|
27
|
+
if (cachedRawMarkdown)
|
|
28
|
+
return cachedRawMarkdown;
|
|
29
|
+
cachedRawMarkdown = node_fs_1.default.readFileSync(resolveEndpointsFilePath(), 'utf8');
|
|
30
|
+
return cachedRawMarkdown;
|
|
31
|
+
}
|
|
32
|
+
function parseFilingRampEndpoints(markdown) {
|
|
33
|
+
const endpoints = [];
|
|
34
|
+
let currentService = 'unknown';
|
|
35
|
+
const lines = markdown.split('\n');
|
|
36
|
+
for (let i = 0; i < lines.length; i++) {
|
|
37
|
+
const line = lines[i];
|
|
38
|
+
const serviceHeading = line.match(/^## (.+)$/);
|
|
39
|
+
if (serviceHeading) {
|
|
40
|
+
currentService = serviceHeading[1].trim();
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const endpointHeading = line.match(/^### `GET (.+)`$/);
|
|
44
|
+
if (!endpointHeading)
|
|
45
|
+
continue;
|
|
46
|
+
const endpointPath = endpointHeading[1].trim();
|
|
47
|
+
let type = 'list';
|
|
48
|
+
let summary;
|
|
49
|
+
const tags = [];
|
|
50
|
+
const parameters = [];
|
|
51
|
+
for (let j = i + 1; j < lines.length && !lines[j].startsWith('###'); j++) {
|
|
52
|
+
const detail = lines[j].trim();
|
|
53
|
+
const typeMatch = detail.match(/^- \*\*Type:\*\* (.+)$/);
|
|
54
|
+
if (typeMatch)
|
|
55
|
+
type = typeMatch[1].trim();
|
|
56
|
+
const summaryMatch = detail.match(/^- \*\*Summary:\*\* (.+)$/);
|
|
57
|
+
if (summaryMatch)
|
|
58
|
+
summary = summaryMatch[1].trim();
|
|
59
|
+
const tagsMatch = detail.match(/^- \*\*Tags:\*\* (.+)$/);
|
|
60
|
+
if (tagsMatch) {
|
|
61
|
+
tags.push(...tagsMatch[1].split(',').map((t) => t.trim()).filter(Boolean));
|
|
62
|
+
}
|
|
63
|
+
const paramsMatch = detail.match(/^- \*\*Parameters:\*\* (.+)$/);
|
|
64
|
+
if (paramsMatch) {
|
|
65
|
+
parameters.push(...paramsMatch[1]
|
|
66
|
+
.split(',')
|
|
67
|
+
.map((p) => p.trim())
|
|
68
|
+
.filter(Boolean));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
endpoints.push({
|
|
72
|
+
service: currentService,
|
|
73
|
+
method: 'GET',
|
|
74
|
+
path: endpointPath,
|
|
75
|
+
type,
|
|
76
|
+
summary,
|
|
77
|
+
tags,
|
|
78
|
+
parameters,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return endpoints;
|
|
82
|
+
}
|
|
83
|
+
function getFilingRampEndpointCatalog() {
|
|
84
|
+
if (!cachedCatalog) {
|
|
85
|
+
cachedCatalog = parseFilingRampEndpoints(loadFilingRampEndpointsMarkdown());
|
|
86
|
+
}
|
|
87
|
+
return cachedCatalog;
|
|
88
|
+
}
|
|
89
|
+
function searchFilingRampEndpoints(input = {}) {
|
|
90
|
+
var _a, _b, _c, _d;
|
|
91
|
+
const limit = (_a = input.limit) !== null && _a !== void 0 ? _a : 25;
|
|
92
|
+
const q = (_b = input.query) === null || _b === void 0 ? void 0 : _b.toLowerCase().trim();
|
|
93
|
+
const service = (_c = input.service) === null || _c === void 0 ? void 0 : _c.toLowerCase().trim();
|
|
94
|
+
const tag = (_d = input.tag) === null || _d === void 0 ? void 0 : _d.toLowerCase().trim();
|
|
95
|
+
let results = getFilingRampEndpointCatalog();
|
|
96
|
+
if (service) {
|
|
97
|
+
results = results.filter((e) => e.service.toLowerCase().includes(service));
|
|
98
|
+
}
|
|
99
|
+
if (tag) {
|
|
100
|
+
results = results.filter((e) => e.tags.some((t) => t.toLowerCase().includes(tag)));
|
|
101
|
+
}
|
|
102
|
+
if (q) {
|
|
103
|
+
results = results.filter((e) => {
|
|
104
|
+
var _a;
|
|
105
|
+
const haystack = [e.path, (_a = e.summary) !== null && _a !== void 0 ? _a : '', e.service, ...e.tags, ...e.parameters]
|
|
106
|
+
.join(' ')
|
|
107
|
+
.toLowerCase();
|
|
108
|
+
return haystack.includes(q);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
total: results.length,
|
|
113
|
+
endpoints: results.slice(0, limit),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=filingramp-endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filingramp-endpoints.js","sourceRoot":"","sources":["../../../src/agents/knowledge/filingramp-endpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AgentConfig } from '@multiplayer-app/ai-agent-types';
|
|
2
|
+
import type { BuilderApiAgentDeps } from '../builder-api-config';
|
|
3
|
+
export declare function createMarkdownGeneratorAgent(deps: BuilderApiAgentDeps): AgentConfig;
|
|
4
|
+
//# sourceMappingURL=markdown-generator.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-generator.agent.d.ts","sourceRoot":"","sources":["../../src/agents/markdown-generator.agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAGlE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AA8DhE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,mBAAmB,GAAG,WAAW,CA8CnF"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMarkdownGeneratorAgent = createMarkdownGeneratorAgent;
|
|
4
|
+
const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const publish_session_artifacts_tool_1 = require("./shared/publish-session-artifacts.tool");
|
|
7
|
+
const validateMarkdownInputSchema = zod_1.z.object({
|
|
8
|
+
markdown: zod_1.z.string().min(1).describe('Markdown source to validate'),
|
|
9
|
+
path: zod_1.z
|
|
10
|
+
.string()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe('Intended file path (e.g. README.md) for path-specific hints'),
|
|
13
|
+
});
|
|
14
|
+
function basicMarkdownValidation(markdown, path) {
|
|
15
|
+
const errors = [];
|
|
16
|
+
const warnings = [];
|
|
17
|
+
if (!markdown.trim()) {
|
|
18
|
+
errors.push('Markdown is empty');
|
|
19
|
+
return { valid: false, warnings, errors };
|
|
20
|
+
}
|
|
21
|
+
const fenceMatches = markdown.match(/```/g);
|
|
22
|
+
if (fenceMatches && fenceMatches.length % 2 !== 0) {
|
|
23
|
+
errors.push('Unclosed fenced code block (odd number of ``` markers)');
|
|
24
|
+
}
|
|
25
|
+
const lines = markdown.split('\n');
|
|
26
|
+
let inFence = false;
|
|
27
|
+
for (let i = 0; i < lines.length; i++) {
|
|
28
|
+
const line = lines[i];
|
|
29
|
+
if (line.trim().startsWith('```')) {
|
|
30
|
+
inFence = !inFence;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (inFence)
|
|
34
|
+
continue;
|
|
35
|
+
const heading = line.match(/^(#{1,6})\s+(.+)$/);
|
|
36
|
+
if (heading && !heading[2].trim()) {
|
|
37
|
+
warnings.push(`Line ${i + 1}: empty heading`);
|
|
38
|
+
}
|
|
39
|
+
if (/^#{7,}/.test(line)) {
|
|
40
|
+
warnings.push(`Line ${i + 1}: heading level > 6 is not standard Markdown`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (!inFence && (path === null || path === void 0 ? void 0 : path.toLowerCase().endsWith('.md'))) {
|
|
44
|
+
const hasHeading = /^#\s+\S/m.test(markdown);
|
|
45
|
+
if (!hasHeading && markdown.length > 400) {
|
|
46
|
+
warnings.push('Long document without a top-level # heading — consider adding one');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const tabLines = lines.filter((l) => l.startsWith('\t') && !l.startsWith('\t\t'));
|
|
50
|
+
if (tabLines.length > 0) {
|
|
51
|
+
warnings.push('Lines use tab indentation; prefer spaces for GFM compatibility');
|
|
52
|
+
}
|
|
53
|
+
return { valid: errors.length === 0, warnings, errors };
|
|
54
|
+
}
|
|
55
|
+
function createMarkdownGeneratorAgent(deps) {
|
|
56
|
+
return {
|
|
57
|
+
name: 'markdown-generator',
|
|
58
|
+
description: 'Writes and updates Markdown documentation in the session artifact store',
|
|
59
|
+
defaultModel: deps.defaultModel,
|
|
60
|
+
systemPrompt: `You create and refine Markdown (.md) documents for the active session. Every response that produces or updates docs MUST end with publishSessionArtifacts — nothing is saved until you publish.
|
|
61
|
+
|
|
62
|
+
Workflow:
|
|
63
|
+
1. Clarify purpose (README, design doc, runbook, release notes, API summary, etc.).
|
|
64
|
+
2. Write valid GitHub-Flavored Markdown (GFM): headings, lists, tables, fenced code blocks with language tags, links, blockquotes.
|
|
65
|
+
3. Use session-relative paths without a leading slash, e.g. README.md, docs/architecture.md, notes/todo.md.
|
|
66
|
+
4. Call validateMarkdown on substantial content before publishing.
|
|
67
|
+
5. Call publishSessionArtifacts in the same turn. Include only files you created or modified — omit unchanged files; they remain on disk.
|
|
68
|
+
6. Set previewPath to your primary doc (e.g. README.md) when publishing markdown-only artifacts.
|
|
69
|
+
7. Summarize what was published and where the user can read it (Code tab / file explorer).
|
|
70
|
+
|
|
71
|
+
Style:
|
|
72
|
+
- Prefer one H1 per document; use ## / ### for structure.
|
|
73
|
+
- Use concise prose; bullet lists for steps and options.
|
|
74
|
+
- Code samples in fenced blocks with a language identifier.
|
|
75
|
+
- Tables for field/API comparisons when helpful.
|
|
76
|
+
- Do not generate HTML dashboards unless the user explicitly asks — defer UI to the html-generator agent.`,
|
|
77
|
+
stopWhen: () => false,
|
|
78
|
+
tools: [
|
|
79
|
+
{ type: ai_agent_types_1.AgentToolType.WEB_SEARCH, userConfigurable: true },
|
|
80
|
+
{ type: ai_agent_types_1.AgentToolType.REQUEST_CLARIFICATION, userConfigurable: true },
|
|
81
|
+
{
|
|
82
|
+
type: ai_agent_types_1.AgentToolType.LOCAL_FUNCTION,
|
|
83
|
+
userConfigurable: true,
|
|
84
|
+
data: {
|
|
85
|
+
title: 'validateMarkdown',
|
|
86
|
+
needsApproval: false,
|
|
87
|
+
description: 'Run basic structural checks on Markdown before publishing',
|
|
88
|
+
inputSchema: validateMarkdownInputSchema,
|
|
89
|
+
outputSchema: zod_1.z.object({
|
|
90
|
+
valid: zod_1.z.boolean(),
|
|
91
|
+
warnings: zod_1.z.array(zod_1.z.string()),
|
|
92
|
+
errors: zod_1.z.array(zod_1.z.string()),
|
|
93
|
+
}),
|
|
94
|
+
execute: (input) => basicMarkdownValidation(input.markdown, input.path),
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
(0, publish_session_artifacts_tool_1.createPublishSessionArtifactsTool)({ needsApproval: false, validateIndexHtml: false }),
|
|
98
|
+
],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=markdown-generator.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-generator.agent.js","sourceRoot":"","sources":["../../src/agents/markdown-generator.agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { AgentTool } from '@multiplayer-app/ai-agent-types';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export declare const publishArtifactsInputSchema: z.ZodObject<{
|
|
4
|
+
label: z.ZodOptional<z.ZodString>;
|
|
5
|
+
files: z.ZodArray<z.ZodObject<{
|
|
6
|
+
path: z.ZodString;
|
|
7
|
+
content: z.ZodString;
|
|
8
|
+
}, z.core.$strip>>;
|
|
9
|
+
previewPath: z.ZodOptional<z.ZodString>;
|
|
10
|
+
includeBaseStyles: z.ZodOptional<z.ZodBoolean>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
export declare function basicHtmlValidation(html: string): {
|
|
13
|
+
valid: boolean;
|
|
14
|
+
warnings: string[];
|
|
15
|
+
errors: string[];
|
|
16
|
+
};
|
|
17
|
+
export declare function createPublishSessionArtifactsTool(options?: {
|
|
18
|
+
needsApproval?: boolean;
|
|
19
|
+
validateIndexHtml?: boolean;
|
|
20
|
+
}): AgentTool;
|
|
21
|
+
//# sourceMappingURL=publish-session-artifacts.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-session-artifacts.tool.d.ts","sourceRoot":"","sources":["../../../src/agents/shared/publish-session-artifacts.tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAGnF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAsBvB,eAAO,MAAM,2BAA2B;;;;;;;;iBAWtC,CAAA;AAEF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAS1G;AAED,wBAAgB,iCAAiC,CAAC,OAAO,CAAC,EAAE;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,GAAG,SAAS,CAiFZ"}
|