@marifold/core 0.66.0 → 0.67.0
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/agent/AgentRunner.d.ts.map +1 -1
- package/dist/agent/AgentRunner.js +18 -6
- package/dist/agent/AgentRunner.js.map +1 -1
- package/dist/agent/tools/SkillAppTools.d.ts +90 -0
- package/dist/agent/tools/SkillAppTools.d.ts.map +1 -0
- package/dist/agent/tools/SkillAppTools.js +402 -0
- package/dist/agent/tools/SkillAppTools.js.map +1 -0
- package/dist/app/AppStore.d.ts.map +1 -1
- package/dist/app/AppStore.js +6 -0
- package/dist/app/AppStore.js.map +1 -1
- package/dist/app/SkillAppCompiler.d.ts.map +1 -1
- package/dist/app/SkillAppCompiler.js +59 -3
- package/dist/app/SkillAppCompiler.js.map +1 -1
- package/dist/app/SkillAppDsl.d.ts +17 -0
- package/dist/app/SkillAppDsl.d.ts.map +1 -1
- package/dist/app/SkillAppDsl.js +9 -0
- package/dist/app/SkillAppDsl.js.map +1 -1
- package/dist/app/SkillAppInstanceRegistry.d.ts +22 -2
- package/dist/app/SkillAppInstanceRegistry.d.ts.map +1 -1
- package/dist/app/SkillAppInstanceRegistry.js +248 -0
- package/dist/app/SkillAppInstanceRegistry.js.map +1 -1
- package/dist/app/SkillAppSchema.d.ts +37 -2
- package/dist/app/SkillAppSchema.d.ts.map +1 -1
- package/dist/app/SkillAppSchema.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/runtime/MarifoldRuntime.d.ts +3 -3
- package/dist/runtime/MarifoldRuntime.d.ts.map +1 -1
- package/dist/runtime/MarifoldRuntime.js +90 -15
- package/dist/runtime/MarifoldRuntime.js.map +1 -1
- package/dist/skill/BuiltInSkillAppBuilder.d.ts +10 -0
- package/dist/skill/BuiltInSkillAppBuilder.d.ts.map +1 -0
- package/dist/skill/BuiltInSkillAppBuilder.js +34 -0
- package/dist/skill/BuiltInSkillAppBuilder.js.map +1 -0
- package/dist/skill/BuiltInSkills.d.ts.map +1 -1
- package/dist/skill/BuiltInSkills.js +37 -0
- package/dist/skill/BuiltInSkills.js.map +1 -1
- package/dist/skill/index.d.ts +1 -0
- package/dist/skill/index.d.ts.map +1 -1
- package/dist/skill/index.js +4 -1
- package/dist/skill/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.SkillAppManagementTool = exports.SkillAppContextTool = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const crypto_1 = require("crypto");
|
|
40
|
+
const MarifoldError_1 = require("../../errors/MarifoldError");
|
|
41
|
+
const ToolRegistry_1 = require("../ToolRegistry");
|
|
42
|
+
const SAFE_APP_NAME = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
43
|
+
const MAX_FILES = 32;
|
|
44
|
+
const MAX_TOTAL_BYTES = 512 * 1024;
|
|
45
|
+
const V1_TEMPLATE = `import {
|
|
46
|
+
App, Button, Column, Download, Markdown, State, Textarea, TextResult,
|
|
47
|
+
defineSkillApp, registerModel, registerSkill, useSkill,
|
|
48
|
+
} from '@marifold/core';
|
|
49
|
+
|
|
50
|
+
const input = State('');
|
|
51
|
+
const result = State('');
|
|
52
|
+
const model = registerModel('provider/model', { think: false });
|
|
53
|
+
const skill = registerSkill('skill-name', { result: TextResult({ trim: true }) });
|
|
54
|
+
const run = useSkill(model, skill, {
|
|
55
|
+
parameters: { request: input },
|
|
56
|
+
output: result,
|
|
57
|
+
memory: false,
|
|
58
|
+
history: false,
|
|
59
|
+
profileContext: false,
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
export default defineSkillApp({
|
|
63
|
+
app: { name: 'app-name', title: 'App title', version: '1.0.0', description: 'Focused purpose.' },
|
|
64
|
+
ui: App([Column([
|
|
65
|
+
Textarea('Input', input),
|
|
66
|
+
Button('Run', { trigger: run, emphasis: 'primary' }),
|
|
67
|
+
Markdown('Result', result),
|
|
68
|
+
Download('Download result', result, { filename: 'result.md', mediaType: 'text/markdown;charset=utf-8' }),
|
|
69
|
+
])]),
|
|
70
|
+
});`;
|
|
71
|
+
const V2_TEMPLATE = `import {
|
|
72
|
+
App, Button, Column, State, Textarea, TextResult,
|
|
73
|
+
defineSkillApp, registerProfile, useProfileSkill,
|
|
74
|
+
} from '@marifold/core';
|
|
75
|
+
|
|
76
|
+
const input = State('');
|
|
77
|
+
const result = State('');
|
|
78
|
+
const profile = registerProfile('profile-name', { memory: false, history: false });
|
|
79
|
+
const run = useProfileSkill(profile, 'skill-name', {
|
|
80
|
+
input,
|
|
81
|
+
output: result,
|
|
82
|
+
result: TextResult({ trim: true }),
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
export default defineSkillApp({
|
|
86
|
+
app: { name: 'app-name', title: 'App title', version: '1.0.0', description: 'Focused purpose.' },
|
|
87
|
+
ui: App([Column([
|
|
88
|
+
Textarea('Input', input),
|
|
89
|
+
Button('Run', { trigger: run, emphasis: 'primary' }),
|
|
90
|
+
Textarea('Result', result, { editable: false, copyable: true }),
|
|
91
|
+
])]),
|
|
92
|
+
});`;
|
|
93
|
+
/** Version-matched authoring context for the protected SkillApp builder. */
|
|
94
|
+
class SkillAppContextTool {
|
|
95
|
+
options;
|
|
96
|
+
kind = 'read';
|
|
97
|
+
definition = {
|
|
98
|
+
name: 'inspect_skill_apps',
|
|
99
|
+
description: [
|
|
100
|
+
'Inspect the current Marifold SkillApp authoring environment.',
|
|
101
|
+
'Returns the active profile, existing Apps, available profiles and their effective Skills, and the supported static component contract.',
|
|
102
|
+
'When to use: before designing or generating a SkillApp.',
|
|
103
|
+
'When NOT to use: ordinary Skill execution or unrelated project inspection. It never changes files.',
|
|
104
|
+
].join(' '),
|
|
105
|
+
parameters: { type: 'object', properties: {} },
|
|
106
|
+
};
|
|
107
|
+
constructor(options) {
|
|
108
|
+
this.options = options;
|
|
109
|
+
}
|
|
110
|
+
summarizeCall() {
|
|
111
|
+
return 'inspect SkillApp components, profiles, Skills, and Apps';
|
|
112
|
+
}
|
|
113
|
+
async execute() {
|
|
114
|
+
const profiles = this.options.listProfiles().map(profile => ({
|
|
115
|
+
name: profile.name,
|
|
116
|
+
...(profile.displayName ? { displayName: profile.displayName } : {}),
|
|
117
|
+
skills: this.options.listSkills(profile.name).map(skill => ({
|
|
118
|
+
name: skill.name,
|
|
119
|
+
description: skill.description,
|
|
120
|
+
mode: skill.mode ?? 'profile-default',
|
|
121
|
+
variables: skill.variables.map(variable => ({
|
|
122
|
+
name: variable.name,
|
|
123
|
+
required: variable.required,
|
|
124
|
+
...(variable.description ? { description: variable.description } : {}),
|
|
125
|
+
...(variable.default !== undefined ? { default: variable.default } : {}),
|
|
126
|
+
})),
|
|
127
|
+
})),
|
|
128
|
+
}));
|
|
129
|
+
return {
|
|
130
|
+
content: JSON.stringify({
|
|
131
|
+
activeProfile: this.options.activeProfile,
|
|
132
|
+
appsDirectory: this.options.appsDir,
|
|
133
|
+
apps: this.options.listApps(),
|
|
134
|
+
profiles,
|
|
135
|
+
contract: {
|
|
136
|
+
schemas: ['marifold.skillapp.v1', 'marifold.skillapp.v2'],
|
|
137
|
+
declarations: [
|
|
138
|
+
'State(initialText)',
|
|
139
|
+
'AttachmentState()',
|
|
140
|
+
"registerModel('provider/model', { think? })",
|
|
141
|
+
"registerProfile('profile-name', { model?, think?, memory?, history? })",
|
|
142
|
+
"registerSkill('skill-name', { result: TextResult({ trim? }) })",
|
|
143
|
+
'TextResult({ trim? })',
|
|
144
|
+
],
|
|
145
|
+
layout: ['App', 'Row', 'Column', 'Spacer'],
|
|
146
|
+
form: ['Textarea', 'Select'],
|
|
147
|
+
resources: ['Attachments'],
|
|
148
|
+
outputs: [
|
|
149
|
+
'Markdown(label, state, { showLabel?, grow?, copyable?, sourceToggle?, placeholder? })',
|
|
150
|
+
'Download(label, state, { filename, mediaType?, description?, showLabel?, grow? })',
|
|
151
|
+
],
|
|
152
|
+
actions: ['Button'],
|
|
153
|
+
operations: [
|
|
154
|
+
'useSkill(model, skill, { parameters, output, memory: false, history: false, profileContext: false })',
|
|
155
|
+
'useProfileSkill(profile, skillNameOrState, { skills?, input?, attachments?, stripSkillName?, parameters?, output, result, interactive? })',
|
|
156
|
+
'trigger(operation, { onChange, debounce?, concurrency?: "latest" })',
|
|
157
|
+
],
|
|
158
|
+
interactive: 'Set useProfileSkill(..., { interactive: true }) for an Agent Skill that may ask questions or request approval.',
|
|
159
|
+
bundle: {
|
|
160
|
+
common: [
|
|
161
|
+
'skillapp.ts is required; app.name and the bundle name must be the same kebab-case value',
|
|
162
|
+
'replace the example app, profile, model, Skill, labels, parameter names, and filenames with the requested design',
|
|
163
|
+
],
|
|
164
|
+
v1: [
|
|
165
|
+
'use registerModel + registerSkill + useSkill',
|
|
166
|
+
'include skills/<skill-name>/SKILL.md whose frontmatter name matches registerSkill',
|
|
167
|
+
'map every required SKILL.md variable to a State in useSkill.parameters',
|
|
168
|
+
],
|
|
169
|
+
v2: [
|
|
170
|
+
'use registerProfile + useProfileSkill and one Skill from that profile effective catalog',
|
|
171
|
+
'do not copy the profile Skill into the App bundle',
|
|
172
|
+
],
|
|
173
|
+
},
|
|
174
|
+
templates: {
|
|
175
|
+
v1: V1_TEMPLATE,
|
|
176
|
+
v1Skill: '---\\nname: skill-name\\nvariables:\\n - name: request\\n required: true\\n---\\nPerform the focused task and return only the requested result.\\n\\n{{request}}',
|
|
177
|
+
v2: V2_TEMPLATE,
|
|
178
|
+
},
|
|
179
|
+
constraints: [
|
|
180
|
+
'skillapp.ts is statically compiled and never executed',
|
|
181
|
+
'no functions, callbacks, conditions, loops, arbitrary imports, HTML, CSS, network calls, or direct filesystem writes',
|
|
182
|
+
'one interactive operation runs exclusively per App instance',
|
|
183
|
+
'interactive operations cannot use automatic triggers',
|
|
184
|
+
'Markdown and Download may bind the same text output State; Download creates the file in the renderer without filesystem access',
|
|
185
|
+
'each Download is one text file with a static filename; multiple components make multiple static downloads, while binary files, per-run filenames, and dynamic file collections are unsupported',
|
|
186
|
+
'v1 uses an app-local chat Skill and registered model; v2 registers an existing profile and its effective Skill',
|
|
187
|
+
'inspect_skill_apps is authoritative; do not probe App directories or arbitrary host paths for examples',
|
|
188
|
+
],
|
|
189
|
+
},
|
|
190
|
+
}, null, 2),
|
|
191
|
+
summary: `inspected ${profiles.length} profiles and ${this.options.listApps().length} Apps`,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.SkillAppContextTool = SkillAppContextTool;
|
|
196
|
+
/** Confined, validated, atomic mutation boundary for generated App bundles. */
|
|
197
|
+
class SkillAppManagementTool {
|
|
198
|
+
options;
|
|
199
|
+
kind = 'write';
|
|
200
|
+
definition = {
|
|
201
|
+
name: 'manage_skill_app',
|
|
202
|
+
description: [
|
|
203
|
+
'Create or update exactly one global Marifold SkillApp bundle from generated text files.',
|
|
204
|
+
'The complete staged bundle is statically compiled and validated before an atomic install.',
|
|
205
|
+
'When to use: after inspecting the SkillApp environment and resolving essential design decisions.',
|
|
206
|
+
'When NOT to use: arbitrary file writes, unvalidated application code, or implicit replacement after a name collision.',
|
|
207
|
+
].join(' '),
|
|
208
|
+
parameters: {
|
|
209
|
+
type: 'object',
|
|
210
|
+
properties: {
|
|
211
|
+
action: { type: 'string', enum: ['create', 'update'] },
|
|
212
|
+
name: { type: 'string', description: 'Kebab-case App and bundle name.' },
|
|
213
|
+
files: {
|
|
214
|
+
type: 'array',
|
|
215
|
+
description: 'Complete generated text files relative to the App bundle, including skillapp.ts.',
|
|
216
|
+
items: {
|
|
217
|
+
type: 'object',
|
|
218
|
+
properties: {
|
|
219
|
+
path: { type: 'string' },
|
|
220
|
+
content: { type: 'string' },
|
|
221
|
+
},
|
|
222
|
+
required: ['path', 'content'],
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
required: ['action', 'name', 'files'],
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
failedAttempts = 0;
|
|
230
|
+
lastFailure;
|
|
231
|
+
constructor(options) {
|
|
232
|
+
this.options = options;
|
|
233
|
+
}
|
|
234
|
+
summarizeCall(input) {
|
|
235
|
+
const action = input.action === 'update' ? 'update' : 'create';
|
|
236
|
+
const name = typeof input.name === 'string' ? input.name : '<missing App>';
|
|
237
|
+
return `${action} SkillApp ${name}`;
|
|
238
|
+
}
|
|
239
|
+
assessRisk(input) {
|
|
240
|
+
const name = typeof input.name === 'string' && SAFE_APP_NAME.test(input.name)
|
|
241
|
+
? input.name
|
|
242
|
+
: '<invalid-app>';
|
|
243
|
+
if (this.failedAttempts >= 3) {
|
|
244
|
+
return {
|
|
245
|
+
blocked: true,
|
|
246
|
+
escalate: false,
|
|
247
|
+
persistable: false,
|
|
248
|
+
reason: `three SkillApp validation attempts failed; stop and report the last error${this.lastFailure ? `: ${this.lastFailure}` : ''}`,
|
|
249
|
+
targetPath: path.join(this.options.appsDir, name),
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
escalate: true,
|
|
254
|
+
persistable: false,
|
|
255
|
+
reason: 'installing a persistent Marifold App bundle',
|
|
256
|
+
targetPath: path.join(this.options.appsDir, name),
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
async execute(input, _ctx) {
|
|
260
|
+
let stageRoot;
|
|
261
|
+
try {
|
|
262
|
+
const action = (0, ToolRegistry_1.requireStringInput)(input, 'action', 'manage_skill_app');
|
|
263
|
+
if (action !== 'create' && action !== 'update') {
|
|
264
|
+
throw MarifoldError_1.MarifoldError.agentToolInvalid(`Unsupported SkillApp action '${action}'.`, 'manage_skill_app');
|
|
265
|
+
}
|
|
266
|
+
const name = (0, ToolRegistry_1.requireStringInput)(input, 'name', 'manage_skill_app');
|
|
267
|
+
if (!SAFE_APP_NAME.test(name)) {
|
|
268
|
+
throw MarifoldError_1.MarifoldError.appInvalid(`Invalid App name '${name}'. Use kebab-case.`);
|
|
269
|
+
}
|
|
270
|
+
const files = bundleFiles(input.files);
|
|
271
|
+
if (!files.some(file => file.path === 'skillapp.ts')) {
|
|
272
|
+
throw MarifoldError_1.MarifoldError.appInvalid("A generated App bundle must include 'skillapp.ts'.");
|
|
273
|
+
}
|
|
274
|
+
fs.mkdirSync(this.options.appsDir, { recursive: true });
|
|
275
|
+
const target = path.join(this.options.appsDir, name);
|
|
276
|
+
const exists = fs.existsSync(target);
|
|
277
|
+
if (action === 'create' && exists) {
|
|
278
|
+
throw MarifoldError_1.MarifoldError.appInvalid(`App '${name}' already exists. Use update only after the user explicitly requests replacing it.`);
|
|
279
|
+
}
|
|
280
|
+
if (action === 'update' && !exists) {
|
|
281
|
+
throw MarifoldError_1.MarifoldError.appNotFound(name);
|
|
282
|
+
}
|
|
283
|
+
if (exists && (!fs.lstatSync(target).isDirectory() || fs.lstatSync(target).isSymbolicLink())) {
|
|
284
|
+
throw MarifoldError_1.MarifoldError.appInvalid(`App target '${name}' is not a regular bundle directory.`);
|
|
285
|
+
}
|
|
286
|
+
stageRoot = fs.mkdtempSync(path.join(this.options.appsDir, '.skillapp-stage-'));
|
|
287
|
+
const stagedBundle = path.join(stageRoot, name);
|
|
288
|
+
fs.mkdirSync(stagedBundle, { recursive: true });
|
|
289
|
+
for (const file of files) {
|
|
290
|
+
const destination = path.join(stagedBundle, file.path);
|
|
291
|
+
fs.mkdirSync(path.dirname(destination), { recursive: true });
|
|
292
|
+
fs.writeFileSync(destination, file.content, 'utf8');
|
|
293
|
+
}
|
|
294
|
+
const definition = this.options.createStore(stageRoot).require(name);
|
|
295
|
+
const installedFiles = listRegularFiles(stagedBundle);
|
|
296
|
+
installAtomically(stagedBundle, target, action);
|
|
297
|
+
const effect = {
|
|
298
|
+
kind: 'app_installed',
|
|
299
|
+
appName: name,
|
|
300
|
+
title: definition.app.title,
|
|
301
|
+
action: action === 'create' ? 'created' : 'updated',
|
|
302
|
+
files: installedFiles,
|
|
303
|
+
};
|
|
304
|
+
this.options.onInstalled?.(effect);
|
|
305
|
+
this.failedAttempts = 0;
|
|
306
|
+
this.lastFailure = undefined;
|
|
307
|
+
return {
|
|
308
|
+
content: `${action === 'create' ? 'Created' : 'Updated'} SkillApp '${definition.app.title}' (${name}) with ${installedFiles.length} validated ${installedFiles.length === 1 ? 'file' : 'files'}. The service does not need a restart.`,
|
|
309
|
+
summary: `${effect.action} SkillApp ${name}`,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
314
|
+
this.failedAttempts += 1;
|
|
315
|
+
this.lastFailure = message;
|
|
316
|
+
return {
|
|
317
|
+
content: `SkillApp management failed: ${message}${this.failedAttempts >= 3 ? ' No further installation attempts are allowed in this run; report this error to the user.' : ''}`,
|
|
318
|
+
summary: `SkillApp validation failed: ${message.length > 300 ? `${message.slice(0, 297)}...` : message}`,
|
|
319
|
+
isError: true,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
finally {
|
|
323
|
+
if (stageRoot)
|
|
324
|
+
fs.rmSync(stageRoot, { recursive: true, force: true });
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
exports.SkillAppManagementTool = SkillAppManagementTool;
|
|
329
|
+
function bundleFiles(value) {
|
|
330
|
+
if (!Array.isArray(value) || value.length < 1 || value.length > MAX_FILES) {
|
|
331
|
+
throw MarifoldError_1.MarifoldError.agentToolInvalid(`manage_skill_app.files must contain 1-${MAX_FILES} text files.`, 'manage_skill_app');
|
|
332
|
+
}
|
|
333
|
+
const seen = new Set();
|
|
334
|
+
let total = 0;
|
|
335
|
+
return value.map((entry, index) => {
|
|
336
|
+
if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {
|
|
337
|
+
throw MarifoldError_1.MarifoldError.agentToolInvalid(`manage_skill_app.files[${index}] must be an object.`, 'manage_skill_app');
|
|
338
|
+
}
|
|
339
|
+
const file = entry;
|
|
340
|
+
const relative = safeBundlePath((0, ToolRegistry_1.requireStringInput)(file, 'path', 'manage_skill_app'));
|
|
341
|
+
if (seen.has(relative))
|
|
342
|
+
throw MarifoldError_1.MarifoldError.appInvalid(`Duplicate App file '${relative}'.`);
|
|
343
|
+
seen.add(relative);
|
|
344
|
+
if (typeof file.content !== 'string') {
|
|
345
|
+
throw MarifoldError_1.MarifoldError.agentToolInvalid(`manage_skill_app.files[${index}].content must be text.`, 'manage_skill_app');
|
|
346
|
+
}
|
|
347
|
+
total += Buffer.byteLength(file.content, 'utf8');
|
|
348
|
+
if (total > MAX_TOTAL_BYTES) {
|
|
349
|
+
throw MarifoldError_1.MarifoldError.appInvalid(`Generated App bundle exceeds ${MAX_TOTAL_BYTES / 1024} KiB.`);
|
|
350
|
+
}
|
|
351
|
+
return { path: relative, content: file.content };
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
function safeBundlePath(value) {
|
|
355
|
+
if (value.includes('\0'))
|
|
356
|
+
throw MarifoldError_1.MarifoldError.appInvalid('App file paths cannot contain null bytes.');
|
|
357
|
+
const portable = value.replace(/\\/g, '/');
|
|
358
|
+
const parts = portable.split('/');
|
|
359
|
+
if (portable.startsWith('/') || /^[a-z]:\//i.test(portable)
|
|
360
|
+
|| parts.some(part => part === '' || part === '.' || part === '..')) {
|
|
361
|
+
throw MarifoldError_1.MarifoldError.appInvalid(`Unsafe App file path '${value}'.`);
|
|
362
|
+
}
|
|
363
|
+
return parts.join(path.sep);
|
|
364
|
+
}
|
|
365
|
+
function listRegularFiles(root) {
|
|
366
|
+
const files = [];
|
|
367
|
+
const visit = (directory) => {
|
|
368
|
+
for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
|
|
369
|
+
const source = path.join(directory, entry.name);
|
|
370
|
+
if (entry.isDirectory())
|
|
371
|
+
visit(source);
|
|
372
|
+
else if (entry.isFile())
|
|
373
|
+
files.push(path.relative(root, source).split(path.sep).join('/'));
|
|
374
|
+
}
|
|
375
|
+
};
|
|
376
|
+
visit(root);
|
|
377
|
+
return files.sort();
|
|
378
|
+
}
|
|
379
|
+
function installAtomically(stagedBundle, target, action) {
|
|
380
|
+
if (action === 'create') {
|
|
381
|
+
fs.renameSync(stagedBundle, target);
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
const backup = path.join(path.dirname(target), `.skillapp-backup-${path.basename(target)}-${(0, crypto_1.randomUUID)()}`);
|
|
385
|
+
fs.renameSync(target, backup);
|
|
386
|
+
try {
|
|
387
|
+
fs.renameSync(stagedBundle, target);
|
|
388
|
+
}
|
|
389
|
+
catch (error) {
|
|
390
|
+
if (!fs.existsSync(target) && fs.existsSync(backup))
|
|
391
|
+
fs.renameSync(backup, target);
|
|
392
|
+
throw error;
|
|
393
|
+
}
|
|
394
|
+
try {
|
|
395
|
+
fs.rmSync(backup, { recursive: true, force: true });
|
|
396
|
+
}
|
|
397
|
+
catch {
|
|
398
|
+
// The validated target is already installed; a stale hidden backup is safer
|
|
399
|
+
// than reporting a false installation failure or disturbing the new bundle.
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=SkillAppTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillAppTools.js","sourceRoot":"","sources":["../../../src/agent/tools/SkillAppTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppStore.d.ts","sourceRoot":"","sources":["../../src/app/AppStore.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,kBAAkB,EAA+B,MAAM,kBAAkB,CAAC;AAKxF,MAAM,WAAW,eAAe;IAC9B;sFACkF;IAClF,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;CACzF;AAED;0EAC0E;AAC1E,qBAAa,QAAQ;IAEjB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAF1B,YACmB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,EAC5C;IAEJ,IAAI,IAAI,kBAAkB,EAAE,CAa3B;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAiBhD;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAIxC;IAED,sEAAsE;IACtE,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CASlE;IAED,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAIrE;IAED,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"AppStore.d.ts","sourceRoot":"","sources":["../../src/app/AppStore.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,kBAAkB,EAA+B,MAAM,kBAAkB,CAAC;AAKxF,MAAM,WAAW,eAAe;IAC9B;sFACkF;IAClF,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;CACzF;AAED;0EAC0E;AAC1E,qBAAa,QAAQ;IAEjB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAF1B,YACmB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,EAC5C;IAEJ,IAAI,IAAI,kBAAkB,EAAE,CAa3B;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAiBhD;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAIxC;IAED,sEAAsE;IACtE,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CASlE;IAED,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAIrE;IAED,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,qBAAqB;IA6C7B,OAAO,CAAC,yBAAyB;CA8BlC"}
|
package/dist/app/AppStore.js
CHANGED
|
@@ -143,6 +143,12 @@ class AppStore {
|
|
|
143
143
|
]);
|
|
144
144
|
for (const skillName of skillNames) {
|
|
145
145
|
const skill = this.requireProfileSkill(profile.profile, skillName);
|
|
146
|
+
if (operation.interactive && skill.mode === 'chat') {
|
|
147
|
+
throw MarifoldError_1.MarifoldError.appInvalid(`Interactive SkillApp operation '${operation.name}' cannot invoke chat-mode Skill '${skillName}'.`, skill.source);
|
|
148
|
+
}
|
|
149
|
+
if (skillName === 'skillapp-builder' && !operation.interactive) {
|
|
150
|
+
throw MarifoldError_1.MarifoldError.appInvalid(`SkillApp operation '${operation.name}' must invoke the built-in skillapp-builder interactively.`, skill.source);
|
|
151
|
+
}
|
|
146
152
|
for (const input of this.validateOperationBindings(skill, operation, skill.source)) {
|
|
147
153
|
requiredInputs.add(input);
|
|
148
154
|
}
|
package/dist/app/AppStore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppStore.js","sourceRoot":"","sources":["../../src/app/AppStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AppStore.js","sourceRoot":"","sources":["../../src/app/AppStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkillAppCompiler.d.ts","sourceRoot":"","sources":["../../src/app/SkillAppCompiler.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,kBAAkB,EAWnB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"SkillAppCompiler.d.ts","sourceRoot":"","sources":["../../src/app/SkillAppCompiler.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,kBAAkB,EAWnB,MAAM,kBAAkB,CAAC;AAwC1B;2EAC2E;AAC3E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,SAAgB,GAAG,kBAAkB,CA+E9F"}
|
|
@@ -43,9 +43,11 @@ const SAFE_LOCAL_NAME = /^[a-zA-Z][a-zA-Z0-9_]*$/;
|
|
|
43
43
|
const SAFE_SKILL_NAME = /^[a-z0-9][a-z0-9_-]*$/;
|
|
44
44
|
const SAFE_PROVIDER_NAME = /^[a-z0-9][a-z0-9_-]*$/;
|
|
45
45
|
const SAFE_PROFILE_NAME = /^[A-Za-z0-9_-]+$/;
|
|
46
|
+
const SAFE_DOWNLOAD_FILENAME = /^[^/\\\u0000-\u001f\u007f]{1,255}$/;
|
|
47
|
+
const SAFE_DOWNLOAD_MEDIA_TYPE = /^[a-z0-9][a-z0-9!#$&^_.+-]*\/[a-z0-9][a-z0-9!#$&^_.+-]*(?:\s*;\s*charset=[a-z0-9._-]+)?$/i;
|
|
46
48
|
const ALLOWED_BUILDERS = new Set([
|
|
47
|
-
'App', 'AttachmentState', 'Attachments', 'Button', 'Column', 'FileAccess',
|
|
48
|
-
'FolderAccess', 'Row', 'Select', 'Spacer', 'State', 'Textarea',
|
|
49
|
+
'App', 'AttachmentState', 'Attachments', 'Button', 'Column', 'Download', 'FileAccess',
|
|
50
|
+
'FolderAccess', 'Markdown', 'Row', 'Select', 'Spacer', 'State', 'Textarea',
|
|
49
51
|
'TextResult', 'defineSkillApp', 'registerModel', 'registerProfile', 'registerSkill',
|
|
50
52
|
'trigger', 'useProfileSkill', 'useSkill',
|
|
51
53
|
]);
|
|
@@ -252,6 +254,9 @@ function registerDeclaration(name, value, node, state, sourcePath) {
|
|
|
252
254
|
kind: 'text',
|
|
253
255
|
trim: requireBoolean(result.trim, 'result trim', node, state, sourcePath),
|
|
254
256
|
},
|
|
257
|
+
...(value.interactive !== undefined
|
|
258
|
+
? { interactive: requireBoolean(value.interactive, 'interactive', node, state, sourcePath) }
|
|
259
|
+
: {}),
|
|
255
260
|
execution: {
|
|
256
261
|
memory: requireBoolean(profile.memory, 'profile memory', node, state, sourcePath),
|
|
257
262
|
history: requireBoolean(profile.history, 'profile history', node, state, sourcePath),
|
|
@@ -430,13 +435,19 @@ function evaluateCall(node, state, sourcePath, _declarationName) {
|
|
|
430
435
|
throw invalidAt(state.sourceFile, node.pos, `Invalid profile skill name '${skillName}'.`, sourcePath);
|
|
431
436
|
}
|
|
432
437
|
const options = requireObject(args[2], 'useProfileSkill options', node, state, sourcePath);
|
|
433
|
-
rejectUnknown(options, ['skills', 'input', 'attachments', 'stripSkillName', 'parameters', 'output', 'result'], name, node, state, sourcePath);
|
|
438
|
+
rejectUnknown(options, ['skills', 'input', 'attachments', 'stripSkillName', 'parameters', 'output', 'result', 'interactive'], name, node, state, sourcePath);
|
|
434
439
|
if (skillName !== undefined && options.skills !== undefined) {
|
|
435
440
|
throw invalidAt(state.sourceFile, node.pos, 'useProfileSkill.skills is only valid when the Skill is selected by State.', sourcePath);
|
|
436
441
|
}
|
|
437
442
|
if (skillState !== undefined && options.skills === undefined) {
|
|
438
443
|
throw invalidAt(state.sourceFile, node.pos, 'A state-selected profile Skill requires a non-empty useProfileSkill.skills allowlist.', sourcePath);
|
|
439
444
|
}
|
|
445
|
+
const interactive = options.interactive === undefined
|
|
446
|
+
? undefined
|
|
447
|
+
: requireBoolean(options.interactive, 'interactive', node, state, sourcePath);
|
|
448
|
+
if (interactive && skillState !== undefined) {
|
|
449
|
+
throw invalidAt(state.sourceFile, node.pos, 'An interactive profile operation must use one fixed Agent Skill.', sourcePath);
|
|
450
|
+
}
|
|
440
451
|
return {
|
|
441
452
|
__kind: 'operation',
|
|
442
453
|
profile,
|
|
@@ -456,6 +467,7 @@ function evaluateCall(node, state, sourcePath, _declarationName) {
|
|
|
456
467
|
: requireObject(options.parameters, 'useProfileSkill parameters', node, state, sourcePath),
|
|
457
468
|
output: requireTagged(options.output, 'state', node, state, sourcePath),
|
|
458
469
|
result: requireTagged(options.result, 'text_result', node, state, sourcePath),
|
|
470
|
+
...(interactive !== undefined ? { interactive } : {}),
|
|
459
471
|
};
|
|
460
472
|
}
|
|
461
473
|
case 'trigger': {
|
|
@@ -519,6 +531,40 @@ function evaluateCall(node, state, sourcePath, _declarationName) {
|
|
|
519
531
|
bind: requireTagged(args[1], 'state', node, state, sourcePath), options,
|
|
520
532
|
};
|
|
521
533
|
}
|
|
534
|
+
case 'Markdown': {
|
|
535
|
+
argsRange(name, args, 2, 3, node, state, sourcePath);
|
|
536
|
+
const options = args[2] === undefined ? {} : requireObject(args[2], 'Markdown options', node, state, sourcePath);
|
|
537
|
+
rejectUnknown(options, ['showLabel', 'grow', 'copyable', 'sourceToggle', 'placeholder'], name, node, state, sourcePath);
|
|
538
|
+
return {
|
|
539
|
+
__kind: 'component', component: 'markdown', label: requireNonEmptyString(args[0], 'Markdown label', node, state, sourcePath),
|
|
540
|
+
bind: requireTagged(args[1], 'state', node, state, sourcePath),
|
|
541
|
+
options: {
|
|
542
|
+
...options,
|
|
543
|
+
copyable: options.copyable === undefined ? true : requireBoolean(options.copyable, 'copyable', node, state, sourcePath),
|
|
544
|
+
sourceToggle: options.sourceToggle === undefined ? true : requireBoolean(options.sourceToggle, 'sourceToggle', node, state, sourcePath),
|
|
545
|
+
},
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
case 'Download': {
|
|
549
|
+
exactArgs(name, args, 3, node, state, sourcePath);
|
|
550
|
+
const options = requireObject(args[2], 'Download options', node, state, sourcePath);
|
|
551
|
+
rejectUnknown(options, ['filename', 'mediaType', 'description', 'showLabel', 'grow'], name, node, state, sourcePath);
|
|
552
|
+
const filename = requireNonEmptyString(options.filename, 'Download filename', node, state, sourcePath);
|
|
553
|
+
if (!SAFE_DOWNLOAD_FILENAME.test(filename) || filename === '.' || filename === '..') {
|
|
554
|
+
throw invalidAt(state.sourceFile, node.pos, 'Download filename must be one safe file name without a path.', sourcePath);
|
|
555
|
+
}
|
|
556
|
+
const mediaType = options.mediaType === undefined
|
|
557
|
+
? 'text/plain;charset=utf-8'
|
|
558
|
+
: requireNonEmptyString(options.mediaType, 'Download mediaType', node, state, sourcePath);
|
|
559
|
+
if (!SAFE_DOWNLOAD_MEDIA_TYPE.test(mediaType)) {
|
|
560
|
+
throw invalidAt(state.sourceFile, node.pos, `Invalid Download mediaType '${mediaType}'.`, sourcePath);
|
|
561
|
+
}
|
|
562
|
+
return {
|
|
563
|
+
__kind: 'component', component: 'download', label: requireNonEmptyString(args[0], 'Download label', node, state, sourcePath),
|
|
564
|
+
bind: requireTagged(args[1], 'state', node, state, sourcePath),
|
|
565
|
+
options: { ...options, filename, mediaType },
|
|
566
|
+
};
|
|
567
|
+
}
|
|
522
568
|
case 'Select': {
|
|
523
569
|
exactArgs(name, args, 3, node, state, sourcePath);
|
|
524
570
|
const options = requireObject(args[2], 'Select options', node, state, sourcePath);
|
|
@@ -575,6 +621,7 @@ function normalizeComponent(value, state, sourcePath, depth = 0) {
|
|
|
575
621
|
copyBoolean(options, 'editable', item, state, sourcePath);
|
|
576
622
|
copyBoolean(options, 'copyable', item, state, sourcePath);
|
|
577
623
|
copyBoolean(options, 'autoGrow', item, state, sourcePath);
|
|
624
|
+
copyBoolean(options, 'sourceToggle', item, state, sourcePath);
|
|
578
625
|
copyBoolean(options, 'alignToField', item, state, sourcePath);
|
|
579
626
|
if (options.rows !== undefined) {
|
|
580
627
|
item.rows = requireNonNegativeInteger(options.rows, 'rows', state.sourceFile, state, sourcePath);
|
|
@@ -583,6 +630,9 @@ function normalizeComponent(value, state, sourcePath, depth = 0) {
|
|
|
583
630
|
}
|
|
584
631
|
}
|
|
585
632
|
copyString(options, 'placeholder', item, state, sourcePath);
|
|
633
|
+
copyString(options, 'filename', item, state, sourcePath);
|
|
634
|
+
copyString(options, 'mediaType', item, state, sourcePath);
|
|
635
|
+
copyString(options, 'description', item, state, sourcePath);
|
|
586
636
|
copyString(options, 'gap', item, state, sourcePath);
|
|
587
637
|
copyString(options, 'responsive', item, state, sourcePath);
|
|
588
638
|
copyString(options, 'emphasis', item, state, sourcePath);
|
|
@@ -625,6 +675,9 @@ function validateReferences(state, layout, sourcePath) {
|
|
|
625
675
|
if (state.operations.length === 0)
|
|
626
676
|
throw MarifoldError_1.MarifoldError.appInvalid('SkillApp must declare at least one useSkill or useProfileSkill operation.', sourcePath);
|
|
627
677
|
for (const operation of state.operations) {
|
|
678
|
+
if (operation.interactive && (!operation.profile || !operation.skill || operation.skillState)) {
|
|
679
|
+
throw MarifoldError_1.MarifoldError.appInvalid(`Interactive operation '${operation.name}' must reference one fixed profile Agent Skill.`, sourcePath);
|
|
680
|
+
}
|
|
628
681
|
if (operation.profile) {
|
|
629
682
|
if (!profileNames.has(operation.profile))
|
|
630
683
|
throw MarifoldError_1.MarifoldError.appInvalid(`Operation '${operation.name}' references missing profile '${operation.profile}'.`, sourcePath);
|
|
@@ -699,6 +752,9 @@ function validateReferences(state, layout, sourcePath) {
|
|
|
699
752
|
for (const triggerDefinition of state.triggers) {
|
|
700
753
|
if (!operationNames.has(triggerDefinition.operation))
|
|
701
754
|
throw MarifoldError_1.MarifoldError.appInvalid(`Trigger references missing operation '${triggerDefinition.operation}'.`, sourcePath);
|
|
755
|
+
if (state.operations.find(operation => operation.name === triggerDefinition.operation)?.interactive) {
|
|
756
|
+
throw MarifoldError_1.MarifoldError.appInvalid(`Interactive operation '${triggerDefinition.operation}' cannot use an automatic trigger.`, sourcePath);
|
|
757
|
+
}
|
|
702
758
|
for (const name of triggerDefinition.onChange) {
|
|
703
759
|
if (!stateNames.has(name))
|
|
704
760
|
throw MarifoldError_1.MarifoldError.appInvalid(`Trigger references missing state '${name}'.`, sourcePath);
|