@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.
Files changed (44) hide show
  1. package/dist/agent/AgentRunner.d.ts.map +1 -1
  2. package/dist/agent/AgentRunner.js +18 -6
  3. package/dist/agent/AgentRunner.js.map +1 -1
  4. package/dist/agent/tools/SkillAppTools.d.ts +90 -0
  5. package/dist/agent/tools/SkillAppTools.d.ts.map +1 -0
  6. package/dist/agent/tools/SkillAppTools.js +402 -0
  7. package/dist/agent/tools/SkillAppTools.js.map +1 -0
  8. package/dist/app/AppStore.d.ts.map +1 -1
  9. package/dist/app/AppStore.js +6 -0
  10. package/dist/app/AppStore.js.map +1 -1
  11. package/dist/app/SkillAppCompiler.d.ts.map +1 -1
  12. package/dist/app/SkillAppCompiler.js +59 -3
  13. package/dist/app/SkillAppCompiler.js.map +1 -1
  14. package/dist/app/SkillAppDsl.d.ts +17 -0
  15. package/dist/app/SkillAppDsl.d.ts.map +1 -1
  16. package/dist/app/SkillAppDsl.js +9 -0
  17. package/dist/app/SkillAppDsl.js.map +1 -1
  18. package/dist/app/SkillAppInstanceRegistry.d.ts +22 -2
  19. package/dist/app/SkillAppInstanceRegistry.d.ts.map +1 -1
  20. package/dist/app/SkillAppInstanceRegistry.js +248 -0
  21. package/dist/app/SkillAppInstanceRegistry.js.map +1 -1
  22. package/dist/app/SkillAppSchema.d.ts +37 -2
  23. package/dist/app/SkillAppSchema.d.ts.map +1 -1
  24. package/dist/app/SkillAppSchema.js.map +1 -1
  25. package/dist/index.d.ts +3 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/runtime/MarifoldRuntime.d.ts +3 -3
  30. package/dist/runtime/MarifoldRuntime.d.ts.map +1 -1
  31. package/dist/runtime/MarifoldRuntime.js +90 -15
  32. package/dist/runtime/MarifoldRuntime.js.map +1 -1
  33. package/dist/skill/BuiltInSkillAppBuilder.d.ts +10 -0
  34. package/dist/skill/BuiltInSkillAppBuilder.d.ts.map +1 -0
  35. package/dist/skill/BuiltInSkillAppBuilder.js +34 -0
  36. package/dist/skill/BuiltInSkillAppBuilder.js.map +1 -0
  37. package/dist/skill/BuiltInSkills.d.ts.map +1 -1
  38. package/dist/skill/BuiltInSkills.js +37 -0
  39. package/dist/skill/BuiltInSkills.js.map +1 -1
  40. package/dist/skill/index.d.ts +1 -0
  41. package/dist/skill/index.d.ts.map +1 -1
  42. package/dist/skill/index.js +4 -1
  43. package/dist/skill/index.js.map +1 -1
  44. 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;IAiC7B,OAAO,CAAC,yBAAyB;CA8BlC"}
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"}
@@ -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
  }
@@ -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;AAsC1B;2EAC2E;AAC3E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,SAAgB,GAAG,kBAAkB,CA+E9F"}
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);