@agentled/cli 0.4.3 → 0.5.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.
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Builtin tools catalog for `aiActionWithTools` steps.
3
+ *
4
+ * Canonical source: the `Tool.builtinType` union in
5
+ * `shared/types/pipeline/PipelineTypes.ts`. This file is the
6
+ * CLI-distributable mirror — drift is guarded by
7
+ * `agentled-mcp-server/__tests__/builtin-tools-catalog.test.ts`.
8
+ *
9
+ * When a new builtin is added to the runtime:
10
+ * 1. Extend the `Tool.builtinType` union in PipelineTypes.ts
11
+ * 2. Append the same value to this catalog with a description + config
12
+ * 3. The drift test enforces (1) ⊆ (2) and vice versa
13
+ */
14
+ export interface BuiltinToolDoc {
15
+ /** Wire value — goes into `tools[].builtinType`. */
16
+ value: string;
17
+ /** One-line description of what the tool does at runtime. */
18
+ description: string;
19
+ /** Extra config keys the tool reads beyond `builtinType`. */
20
+ extraKeys?: string[];
21
+ /**
22
+ * Providers that surface this tool. `all` means any AI provider we support
23
+ * (via a shim if needed). `anthropic` / `openai` means the tool is a native
24
+ * tool for that provider and may be a no-op elsewhere.
25
+ */
26
+ providers: Array<'all' | 'anthropic' | 'openai' | 'moonshot'>;
27
+ /** Typical credit cost per invocation (best-effort; see live registry for exact). */
28
+ typicalCreditsPerCall?: number;
29
+ /** Minimal JSON fragment for the `tools[]` array. */
30
+ example: Record<string, unknown>;
31
+ }
32
+ export declare const BUILTIN_TOOLS_CATALOG: BuiltinToolDoc[];
33
+ export declare const VALID_BUILTIN_TOOL_VALUES: Set<string>;
34
+ /**
35
+ * Heuristic "did you mean" for the most common invented / typo'd builtinType values.
36
+ */
37
+ export declare function suggestBuiltinToolFix(invalid: string): string | undefined;
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Builtin tools catalog for `aiActionWithTools` steps.
3
+ *
4
+ * Canonical source: the `Tool.builtinType` union in
5
+ * `shared/types/pipeline/PipelineTypes.ts`. This file is the
6
+ * CLI-distributable mirror — drift is guarded by
7
+ * `agentled-mcp-server/__tests__/builtin-tools-catalog.test.ts`.
8
+ *
9
+ * When a new builtin is added to the runtime:
10
+ * 1. Extend the `Tool.builtinType` union in PipelineTypes.ts
11
+ * 2. Append the same value to this catalog with a description + config
12
+ * 3. The drift test enforces (1) ⊆ (2) and vice versa
13
+ */
14
+ export const BUILTIN_TOOLS_CATALOG = [
15
+ {
16
+ value: 'web_search',
17
+ description: 'Search the web for fresh information. Returns ranked snippets with URLs.',
18
+ providers: ['all'],
19
+ typicalCreditsPerCall: 2,
20
+ example: { type: 'builtin', name: 'web_search', builtinType: 'web_search' },
21
+ },
22
+ {
23
+ value: 'fetch_website_content',
24
+ description: 'Fetch and extract readable content from a specific URL (companion to web_search).',
25
+ providers: ['all'],
26
+ typicalCreditsPerCall: 1,
27
+ example: { type: 'builtin', name: 'fetch_website_content', builtinType: 'fetch_website_content' },
28
+ },
29
+ {
30
+ value: 'file_search',
31
+ description: 'Search across files attached to the workspace / conversation.',
32
+ providers: ['openai'],
33
+ example: { type: 'builtin', name: 'file_search', builtinType: 'file_search' },
34
+ },
35
+ {
36
+ value: 'code_interpreter',
37
+ description: 'Run Python code in a sandbox. Useful for ad-hoc data crunching inside an AI step.',
38
+ providers: ['openai', 'anthropic'],
39
+ typicalCreditsPerCall: 3,
40
+ example: { type: 'builtin', name: 'code_interpreter', builtinType: 'code_interpreter' },
41
+ },
42
+ {
43
+ value: 'workspace_memory',
44
+ description: 'Recall/search/store persistent memories scoped to workspace or workflow. Memories ≥70 confidence auto-sync to the KG.',
45
+ providers: ['all'],
46
+ extraKeys: ['memoryConfig'],
47
+ example: { type: 'builtin', name: 'workspace_memory', builtinType: 'workspace_memory' },
48
+ },
49
+ {
50
+ value: 'kg_search',
51
+ description: 'Vector search over Knowledge Graph text entries. Returns ranked rows with snippets.',
52
+ providers: ['all'],
53
+ example: { type: 'builtin', name: 'kg_search', builtinType: 'kg_search' },
54
+ },
55
+ {
56
+ value: 'kg_traverse',
57
+ description: 'Traverse KG edges from a node. Returns related entities and relationship types.',
58
+ providers: ['all'],
59
+ example: { type: 'builtin', name: 'kg_traverse', builtinType: 'kg_traverse' },
60
+ },
61
+ {
62
+ value: 'kg_nodes',
63
+ description: 'Fetch specific KG nodes by ID or by list key (structured row lookup).',
64
+ providers: ['all'],
65
+ example: { type: 'builtin', name: 'kg_nodes', builtinType: 'kg_nodes' },
66
+ },
67
+ {
68
+ value: 'kg_write',
69
+ description: 'Write rows, edges, or insights to the Knowledge Graph (bounded, not for large bulk — use `knowledgeSync` step for that).',
70
+ providers: ['all'],
71
+ example: { type: 'builtin', name: 'kg_write', builtinType: 'kg_write' },
72
+ },
73
+ ];
74
+ export const VALID_BUILTIN_TOOL_VALUES = new Set(BUILTIN_TOOLS_CATALOG.map(t => t.value));
75
+ /**
76
+ * Heuristic "did you mean" for the most common invented / typo'd builtinType values.
77
+ */
78
+ export function suggestBuiltinToolFix(invalid) {
79
+ const v = invalid.toLowerCase();
80
+ const map = {
81
+ 'web-search': 'Use `web_search` (underscore).',
82
+ 'websearch': 'Use `web_search` (with underscore).',
83
+ 'search': 'Use `web_search` for the web or `kg_search` for the Knowledge Graph — `search` alone is not a builtin.',
84
+ 'google_search': 'Use `web_search` — we abstract the provider so it works across Anthropic/OpenAI/Moonshot.',
85
+ 'memory': 'Use `workspace_memory` — the canonical name.',
86
+ 'workspace-memory': 'Use `workspace_memory` (underscore).',
87
+ 'knowledge_graph': 'Pick one of `kg_search` / `kg_traverse` / `kg_nodes` / `kg_write` — `knowledge_graph` is not itself a builtin.',
88
+ 'kg': 'Pick one of `kg_search` / `kg_traverse` / `kg_nodes` / `kg_write`.',
89
+ 'code': 'Use `code_interpreter` (the canonical builtin) or switch to a `code` step for JS/Python without an LLM.',
90
+ 'scrape': 'Use `fetch_website_content` — `scrape` is a `web-scraping` app action, not a builtin.',
91
+ 'fetch': 'Use `fetch_website_content`.',
92
+ 'fetch_url': 'Use `fetch_website_content`.',
93
+ };
94
+ return map[v];
95
+ }
96
+ //# sourceMappingURL=builtin-tools-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-tools-catalog.js","sourceRoot":"","sources":["../src/builtin-tools-catalog.ts"],"names":[],"mappings":"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"}
@@ -54,9 +54,9 @@ function printSavedWorkspaceSummary() {
54
54
  * login. Silently no-op'd by --skip-skills. Never blocks login on failure —
55
55
  * skills are a convenience, not a hard requirement.
56
56
  *
57
- * This is what closes Nick-from-Inovexus-class bugs: without the skill
58
- * auto-loaded, agents invent step types (`type: "ai"`, `knowledge_graph_query`)
59
- * that the API silently strips.
57
+ * This is what closes silent-strip-class bugs: without the skill auto-loaded,
58
+ * agents invent step types (`type: "ai"`, `knowledge_graph_query`) that the
59
+ * API silently strips.
60
60
  */
61
61
  function installSkillsAfterLogin(skipSkills) {
62
62
  if (skipSkills)
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable no-console */
2
2
  import { AgentledClient } from '../client.js';
3
3
  import { printOutput, printError } from '../utils/output.js';
4
+ import { BASE_FIELD_KEYS, CONTEXT_FIELD_TYPES, CONTEXT_FIELD_TYPE_ALIASES, } from '../context-schema.js';
4
5
  function filterByStepType(schema, stepType) {
5
6
  const groups = schema.groups
6
7
  .map(g => ({
@@ -31,18 +32,66 @@ function renderTable(schema) {
31
32
  }
32
33
  return lines.join('\n');
33
34
  }
35
+ function buildContextSchema() {
36
+ return {
37
+ description: 'Valid field types for pipeline.context input pages (`executionInputConfig.fields[]`, ' +
38
+ '`inputPages[].configuration.fields[]`). Unknown `type` values fall back to a plain text ' +
39
+ 'input at render time but lose type-aware validation and pickers.',
40
+ scope: 'context',
41
+ baseKeys: [...BASE_FIELD_KEYS],
42
+ fieldTypes: CONTEXT_FIELD_TYPES,
43
+ aliases: { ...CONTEXT_FIELD_TYPE_ALIASES },
44
+ };
45
+ }
46
+ function renderContextTable(schema) {
47
+ const lines = [];
48
+ lines.push(schema.description);
49
+ lines.push(`(${schema.fieldTypes.length} valid field types)`);
50
+ lines.push('');
51
+ lines.push(`Base keys (every field): ${schema.baseKeys.join(', ')}`);
52
+ lines.push('');
53
+ lines.push('Field types:');
54
+ for (const t of schema.fieldTypes) {
55
+ const extras = t.extraKeys?.length ? ` [+ ${t.extraKeys.join(', ')}]` : '';
56
+ lines.push(` - ${t.value}${extras}`);
57
+ lines.push(` ${t.description}`);
58
+ if (t.example) {
59
+ lines.push(` example: ${JSON.stringify(t.example)}`);
60
+ }
61
+ }
62
+ const aliasEntries = Object.entries(schema.aliases);
63
+ if (aliasEntries.length > 0) {
64
+ lines.push('');
65
+ lines.push('Legacy aliases (accepted but prefer the canonical name):');
66
+ for (const [alias, canonical] of aliasEntries) {
67
+ lines.push(` - ${alias} → ${canonical}`);
68
+ }
69
+ }
70
+ return lines.join('\n');
71
+ }
34
72
  export function registerSchemaCommand(program) {
35
73
  program
36
74
  .command('schema')
37
- .description('Show the canonical PipelineStep field schema (what fields are valid on a step).')
75
+ .description('Show the canonical PipelineStep field schema, or the context/input-page field schema with --context.')
38
76
  .option('--step-type <type>', 'Filter fields applicable to this step type (trigger, appAction, aiAction, code, …)')
77
+ .option('--context', 'Show the context / input-page field schema (pipeline.context.*.fields[].type) instead of the step schema')
39
78
  .option('--format <format>', 'Output format: json (default), table, minimal', 'json')
40
79
  .action(async (opts) => {
41
80
  try {
81
+ const format = opts.format;
82
+ if (opts.context) {
83
+ const ctx = buildContextSchema();
84
+ if (format === 'table' || format === 'minimal') {
85
+ console.log(renderContextTable(ctx));
86
+ }
87
+ else {
88
+ printOutput(ctx, format);
89
+ }
90
+ return;
91
+ }
42
92
  const client = new AgentledClient();
43
93
  const schema = await client.getStepSchema();
44
94
  const filtered = opts.stepType ? filterByStepType(schema, opts.stepType) : schema;
45
- const format = opts.format;
46
95
  if (format === 'table' || format === 'minimal') {
47
96
  console.log(renderTable(filtered));
48
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `agentled tools builtins` — list the builtin tools accepted by
3
+ * `aiActionWithTools` steps (`tools[].builtinType` values).
4
+ *
5
+ * The canonical source is the `Tool.builtinType` union in
6
+ * `shared/types/pipeline/PipelineTypes.ts`; the CLI ships a mirror at
7
+ * `src/builtin-tools-catalog.ts` (drift-tested).
8
+ */
9
+ import { Command } from 'commander';
10
+ export declare function registerToolsCommands(program: Command): void;
@@ -0,0 +1,53 @@
1
+ /* eslint-disable no-console */
2
+ import { BUILTIN_TOOLS_CATALOG } from '../builtin-tools-catalog.js';
3
+ import { printOutput } from '../utils/output.js';
4
+ function renderTable() {
5
+ const lines = [];
6
+ lines.push(`Builtin tools for \`aiActionWithTools\` steps (${BUILTIN_TOOLS_CATALOG.length} total):`);
7
+ lines.push('');
8
+ for (const t of BUILTIN_TOOLS_CATALOG) {
9
+ const providers = t.providers.join(', ');
10
+ const credits = t.typicalCreditsPerCall ? ` (~${t.typicalCreditsPerCall} credits/call)` : '';
11
+ lines.push(` - ${t.value} [providers: ${providers}]${credits}`);
12
+ lines.push(` ${t.description}`);
13
+ if (t.extraKeys?.length) {
14
+ lines.push(` extra keys: ${t.extraKeys.join(', ')}`);
15
+ }
16
+ lines.push(` example: ${JSON.stringify(t.example)}`);
17
+ }
18
+ lines.push('');
19
+ lines.push('Usage on a step:');
20
+ lines.push(' {');
21
+ lines.push(' "id": "analyze",');
22
+ lines.push(' "type": "aiActionWithTools",');
23
+ lines.push(' "name": "Analyze with tools",');
24
+ lines.push(' "tools": [');
25
+ lines.push(' { "type": "builtin", "name": "web_search", "builtinType": "web_search" },');
26
+ lines.push(' { "type": "builtin", "name": "workspace_memory", "builtinType": "workspace_memory" }');
27
+ lines.push(' ],');
28
+ lines.push(' "pipelineStepPrompt": { "template": "…", "responseStructure": { … } },');
29
+ lines.push(' "creditCost": 10,');
30
+ lines.push(' "next": { "stepId": "…" }');
31
+ lines.push(' }');
32
+ lines.push('');
33
+ lines.push('Scaffold: `agentled workflows scaffold ai-with-tools`');
34
+ return lines.join('\n');
35
+ }
36
+ export function registerToolsCommands(program) {
37
+ const tools = program
38
+ .command('tools')
39
+ .description('Discover runtime tools (e.g. builtin tools for aiActionWithTools).');
40
+ tools
41
+ .command('builtins')
42
+ .description('List builtin tools (`tools[].builtinType`) accepted by aiActionWithTools steps.')
43
+ .option('--format <format>', 'Output format: table (default), json', 'table')
44
+ .action((opts) => {
45
+ const format = opts.format;
46
+ if (format === 'json' || format === 'minimal') {
47
+ printOutput({ builtinTools: BUILTIN_TOOLS_CATALOG }, format);
48
+ return;
49
+ }
50
+ console.log(renderTable());
51
+ });
52
+ }
53
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Context / input-page field schema catalog.
3
+ *
4
+ * Canonical source: `ExecutionInputFieldType` enum + `ExecutionInputField`
5
+ * interface in `shared/types/pipeline/PipelineTypes.ts`. This file is the
6
+ * CLI-distributable mirror — drift is guarded by
7
+ * `agentled-mcp-server/__tests__/context-field-types.test.ts`.
8
+ *
9
+ * Why a mirror and not an import: the CLI is published to npm and can't
10
+ * pull in the whole frontend build graph at install time. The drift test
11
+ * fails CI if this file disagrees with the enum, so it cannot rot silently.
12
+ */
13
+ export interface ContextFieldTypeDoc {
14
+ /** Wire value — what an agent writes into `field.type`. */
15
+ value: string;
16
+ /** One-line description of what the UI renders. */
17
+ description: string;
18
+ /** Extra config keys the type reads beyond the base set. */
19
+ extraKeys?: string[];
20
+ /** Tiny example fragment for the quick-start. */
21
+ example?: Record<string, unknown>;
22
+ }
23
+ /**
24
+ * Base keys every field supports regardless of `type`.
25
+ */
26
+ export declare const BASE_FIELD_KEYS: readonly ["name", "label", "type", "description", "placeholder", "required", "defaultValue", "suggestions", "addSeparatorAfter"];
27
+ export declare const CONTEXT_FIELD_TYPES: ContextFieldTypeDoc[];
28
+ export declare const VALID_CONTEXT_FIELD_TYPE_VALUES: Set<string>;
29
+ /**
30
+ * Aliases the runtime accepts but the canonical name should be used going forward.
31
+ * Keyed by the alias, value is the canonical name.
32
+ */
33
+ export declare const CONTEXT_FIELD_TYPE_ALIASES: Record<string, string>;
34
+ /**
35
+ * Heuristic "did you mean" for the most common invented / typo'd field types.
36
+ */
37
+ export declare function suggestContextFieldTypeFix(invalid: string): string | undefined;
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Context / input-page field schema catalog.
3
+ *
4
+ * Canonical source: `ExecutionInputFieldType` enum + `ExecutionInputField`
5
+ * interface in `shared/types/pipeline/PipelineTypes.ts`. This file is the
6
+ * CLI-distributable mirror — drift is guarded by
7
+ * `agentled-mcp-server/__tests__/context-field-types.test.ts`.
8
+ *
9
+ * Why a mirror and not an import: the CLI is published to npm and can't
10
+ * pull in the whole frontend build graph at install time. The drift test
11
+ * fails CI if this file disagrees with the enum, so it cannot rot silently.
12
+ */
13
+ /**
14
+ * Base keys every field supports regardless of `type`.
15
+ */
16
+ export const BASE_FIELD_KEYS = [
17
+ 'name',
18
+ 'label',
19
+ 'type',
20
+ 'description',
21
+ 'placeholder',
22
+ 'required',
23
+ 'defaultValue',
24
+ 'suggestions',
25
+ 'addSeparatorAfter',
26
+ ];
27
+ export const CONTEXT_FIELD_TYPES = [
28
+ { value: 'text', description: 'Single-line text input.' },
29
+ { value: 'textarea', description: 'Multi-line plain-text input.' },
30
+ { value: 'html', description: 'Rich-text / HTML editor.' },
31
+ { value: 'email', description: 'Email-formatted text input (validation on blur).' },
32
+ { value: 'url', description: 'URL-formatted text input.' },
33
+ { value: 'Numeric', description: 'Numeric field — text input that coerces to number on blur.' },
34
+ { value: 'boolean', description: 'Checkbox / toggle.' },
35
+ { value: 'date', description: 'Date picker.' },
36
+ { value: 'datetime', description: 'Date + time picker.' },
37
+ { value: 'time', description: 'Time-of-day picker.' },
38
+ { value: 'color_picker', description: 'Color picker (hex/rgb).' },
39
+ {
40
+ value: 'select',
41
+ description: 'Single-choice dropdown.',
42
+ extraKeys: ['options', 'allowCustomValues'],
43
+ example: { options: [{ label: 'Hot', value: 'hot' }, { label: 'Cold', value: 'cold' }] },
44
+ },
45
+ {
46
+ value: 'multiselect',
47
+ description: 'Multi-choice dropdown.',
48
+ extraKeys: ['options', 'allowCustomValues'],
49
+ example: { options: [{ label: 'US', value: 'us' }, { label: 'EU', value: 'eu' }] },
50
+ },
51
+ { value: 'company_offering_select', description: 'Picker populated from the workspace\'s configured offerings.' },
52
+ { value: 'country_select', description: 'Country picker (ISO codes).' },
53
+ { value: 'single_file_upload', description: 'Single file upload. Legacy `file` is also accepted as an alias.' },
54
+ { value: 'multiple_file_upload', description: 'Multi-file upload.' },
55
+ {
56
+ value: 'list',
57
+ description: 'Repeatable sub-form — user adds/removes rows of sub-fields.',
58
+ extraKeys: ['itemFields'],
59
+ example: { itemFields: [{ name: 'email', label: 'Email', type: 'email' }] },
60
+ },
61
+ {
62
+ value: 'connected_emails_selector_single',
63
+ description: 'Picker of one email account the user has connected (Gmail / Outlook / …).',
64
+ },
65
+ {
66
+ value: 'connected_emails_selector_multiple',
67
+ description: 'Picker of multiple connected email accounts — used in `outreachProfile` input pages.',
68
+ },
69
+ { value: 'json', description: 'JSON data (object/array or JSON string). Use instead of legacy `object` type.' },
70
+ ];
71
+ export const VALID_CONTEXT_FIELD_TYPE_VALUES = new Set(CONTEXT_FIELD_TYPES.map(t => t.value));
72
+ /**
73
+ * Aliases the runtime accepts but the canonical name should be used going forward.
74
+ * Keyed by the alias, value is the canonical name.
75
+ */
76
+ export const CONTEXT_FIELD_TYPE_ALIASES = {
77
+ file: 'single_file_upload',
78
+ };
79
+ /**
80
+ * Heuristic "did you mean" for the most common invented / typo'd field types.
81
+ */
82
+ export function suggestContextFieldTypeFix(invalid) {
83
+ const v = invalid.toLowerCase();
84
+ const exactAlias = CONTEXT_FIELD_TYPE_ALIASES[v];
85
+ if (exactAlias)
86
+ return `Use \`${exactAlias}\` (the canonical name — \`${invalid}\` is a legacy alias and won't receive new features).`;
87
+ const heuristics = {
88
+ 'multi-select': 'Use `multiselect` (no hyphen).',
89
+ 'multi_select': 'Use `multiselect` (no underscore).',
90
+ 'dropdown': 'Use `select` (single choice) or `multiselect` (multiple choices).',
91
+ 'number': 'Use `Numeric` — capital N, legacy quirk.',
92
+ 'numeric': 'Use `Numeric` — the type value is capitalised.',
93
+ 'emails': 'Use `connected_emails_selector_multiple` (if picking from connected accounts) or `list` with `itemFields: [{ type: "email" }]`.',
94
+ 'email_list': 'Use `connected_emails_selector_multiple` or `list` with `itemFields: [{ type: "email" }]`.',
95
+ 'checkbox': 'Use `boolean`.',
96
+ 'toggle': 'Use `boolean`.',
97
+ 'rich_text': 'Use `html`.',
98
+ 'rich-text': 'Use `html`.',
99
+ 'long_text': 'Use `textarea`.',
100
+ 'long-text': 'Use `textarea`.',
101
+ 'country': 'Use `country_select`.',
102
+ 'color': 'Use `color_picker`.',
103
+ 'files': 'Use `multiple_file_upload`.',
104
+ 'object': 'Use `json` (preferred) — legacy `object` type is being phased out.',
105
+ };
106
+ return heuristics[v];
107
+ }
108
+ //# sourceMappingURL=context-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-schema.js","sourceRoot":"","sources":["../src/context-schema.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -27,6 +27,7 @@ import { registerOnboardingCommands } from './commands/onboarding.js';
27
27
  import { registerSkillsCommands } from './commands/skills.js';
28
28
  import { registerSchemaCommand } from './commands/schema.js';
29
29
  import { registerExamplesCommand } from './commands/examples.js';
30
+ import { registerToolsCommands } from './commands/tools.js';
30
31
  const require = createRequire(import.meta.url);
31
32
  const { version } = require('../package.json');
32
33
  const program = new Command();
@@ -55,5 +56,6 @@ registerOnboardingCommands(program);
55
56
  registerSkillsCommands(program);
56
57
  registerSchemaCommand(program);
57
58
  registerExamplesCommand(program);
59
+ registerToolsCommands(program);
58
60
  program.parse();
59
61
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,gFAAgF,CAAC;KAC7F,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,yBAAyB,EAAE,8DAA8D,CAAC,CAAC;AAEvG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE;IACtD,MAAM,SAAS,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC;IAC5D,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAC/C,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8BAA8B;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,gFAAgF,CAAC;KAC7F,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,yBAAyB,EAAE,8DAA8D,CAAC,CAAC;AAEvG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE;IACtD,MAAM,SAAS,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC;IAC5D,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAC/C,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8BAA8B;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Client-side preflight checks for a pipeline JSON before it's sent to the
3
- * server. Catches the "Nick-class" failure mode (invalid step types, missing
3
+ * server. Catches the silent-strip failure mode (invalid step types, missing
4
4
  * required fields, unreachable steps, silently-stripped root fields) without
5
5
  * spending a create + validate + delete round trip.
6
6
  *
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Client-side preflight checks for a pipeline JSON before it's sent to the
3
- * server. Catches the "Nick-class" failure mode (invalid step types, missing
3
+ * server. Catches the silent-strip failure mode (invalid step types, missing
4
4
  * required fields, unreachable steps, silently-stripped root fields) without
5
5
  * spending a create + validate + delete round trip.
6
6
  *
@@ -8,6 +8,8 @@
8
8
  * VALID_STEP_TYPES via the drift test in
9
9
  * agentled-mcp-server/__tests__/skill-step-types.test.ts.
10
10
  */
11
+ import { VALID_CONTEXT_FIELD_TYPE_VALUES, CONTEXT_FIELD_TYPE_ALIASES, suggestContextFieldTypeFix, } from '../context-schema.js';
12
+ import { VALID_BUILTIN_TOOL_VALUES, suggestBuiltinToolFix, } from '../builtin-tools-catalog.js';
11
13
  /**
12
14
  * Canonical valid step types. Must stay in sync with:
13
15
  * shared/services/chat/orchestrator/validators/index.ts (runtime)
@@ -23,7 +25,7 @@ const VALID_STEP_TYPES = new Set([
23
25
  /**
24
26
  * Root-level fields that the API silently strips. Detecting these at the
25
27
  * step root is the single highest-leverage check — it's the exact class of
26
- * bug that produced Nick's 201-created-but-broken workflows.
28
+ * bug that produced the 201-created-but-broken workflows.
27
29
  */
28
30
  const STRIPPED_ROOT_FIELDS = {
29
31
  prompt: 'Move to `pipelineStepPrompt.template`',
@@ -68,7 +70,7 @@ export function preflightPipeline(pipeline) {
68
70
  else {
69
71
  stepIds.add(step.id);
70
72
  }
71
- // type check — the Nick-class bug
73
+ // type check — the silent-strip bug
72
74
  if (typeof step.type !== 'string') {
73
75
  errors.push({ severity: 'error', stepId: step.id, code: 'missing-type', message: 'Step is missing `type`' });
74
76
  }
@@ -105,6 +107,27 @@ export function preflightPipeline(pipeline) {
105
107
  });
106
108
  }
107
109
  }
110
+ // aiActionWithTools — each tool's builtinType must be a known value.
111
+ // Typos are silently ignored at runtime, so the AI step runs but the
112
+ // tool is never registered (same silent-failure class as step types).
113
+ if (step.type === 'aiActionWithTools') {
114
+ const tools = Array.isArray(step.tools) ? step.tools : [];
115
+ for (let i = 0; i < tools.length; i += 1) {
116
+ const tool = tools[i];
117
+ if (!tool || typeof tool !== 'object')
118
+ continue;
119
+ const bt = tool.builtinType;
120
+ if (typeof bt !== 'string')
121
+ continue; // non-builtin (app action, webhook) — not our concern
122
+ if (!VALID_BUILTIN_TOOL_VALUES.has(bt)) {
123
+ errors.push({
124
+ severity: 'error', stepId: step.id, code: 'invalid-builtin-type',
125
+ message: `tools[${i}].builtinType "${bt}" is not a known builtin. Run \`agentled tools builtins\` to list valid values.`,
126
+ suggestedFix: suggestBuiltinToolFix(bt),
127
+ });
128
+ }
129
+ }
130
+ }
108
131
  // appAction must have app.id + app.actionId
109
132
  if (step.type === 'appAction') {
110
133
  if (!step.app || typeof step.app !== 'object') {
@@ -157,10 +180,95 @@ export function preflightPipeline(pipeline) {
157
180
  });
158
181
  }
159
182
  }
183
+ // Context input-page field types — the other half of the silent-strip
184
+ // failure mode. An invalid `type` on an input-page field falls
185
+ // back to a plain text input at render time and type-aware pickers
186
+ // (connected emails, country, multiselect) silently disappear.
187
+ checkContextInputFields(pipeline, errors, warnings);
160
188
  return { valid: errors.length === 0, errors, warnings, stepCount: steps.length };
161
189
  }
190
+ function checkContextInputFields(pipeline, errors, warnings) {
191
+ const ctx = pipeline?.context;
192
+ if (!ctx || typeof ctx !== 'object')
193
+ return;
194
+ const sources = [];
195
+ if (ctx.executionInputConfig?.fields) {
196
+ sources.push({ scope: 'context.executionInputConfig', fields: ctx.executionInputConfig.fields });
197
+ }
198
+ if (Array.isArray(ctx.inputPages)) {
199
+ for (const page of ctx.inputPages) {
200
+ const fields = page?.configuration?.fields;
201
+ if (fields)
202
+ sources.push({ scope: `context.inputPages["${page.pathname ?? page.title ?? '?'}"]`, fields });
203
+ }
204
+ }
205
+ for (const { scope, fields } of sources) {
206
+ if (!Array.isArray(fields))
207
+ continue;
208
+ checkFieldArray(fields, scope, errors, warnings);
209
+ }
210
+ }
211
+ function checkFieldArray(fields, scope, errors, warnings) {
212
+ for (let i = 0; i < fields.length; i += 1) {
213
+ const f = fields[i];
214
+ if (!f || typeof f !== 'object')
215
+ continue;
216
+ const path = `${scope}.fields[${i}]${typeof f.name === 'string' ? ` "${f.name}"` : ''}`;
217
+ // Missing required meta
218
+ if (typeof f.name !== 'string' || f.name.trim() === '') {
219
+ errors.push({
220
+ severity: 'error', code: 'input-field-missing-name',
221
+ message: `${path} is missing \`name\``,
222
+ });
223
+ }
224
+ if (typeof f.type !== 'string' || f.type.trim() === '') {
225
+ errors.push({
226
+ severity: 'error', code: 'input-field-missing-type',
227
+ message: `${path} is missing \`type\`. Run \`agentled schema --context\` to see valid values.`,
228
+ });
229
+ continue;
230
+ }
231
+ // Legacy alias — warn with the canonical name
232
+ if (Object.prototype.hasOwnProperty.call(CONTEXT_FIELD_TYPE_ALIASES, f.type)) {
233
+ warnings.push({
234
+ severity: 'warning', code: 'input-field-legacy-alias',
235
+ message: `${path} uses legacy alias type "${f.type}"`,
236
+ suggestedFix: `Rename to \`${CONTEXT_FIELD_TYPE_ALIASES[f.type]}\` (canonical name).`,
237
+ });
238
+ }
239
+ else if (!VALID_CONTEXT_FIELD_TYPE_VALUES.has(f.type)) {
240
+ errors.push({
241
+ severity: 'error', code: 'invalid-input-field-type',
242
+ message: `${path} has unknown \`type\` "${f.type}". Run \`agentled schema --context\` to list valid values.`,
243
+ suggestedFix: suggestContextFieldTypeFix(f.type) ?? 'Pick one of: text, textarea, select, multiselect, boolean, Numeric, email, url, date, datetime, list, connected_emails_selector_multiple, …',
244
+ });
245
+ }
246
+ // Type-specific extra-key checks
247
+ if (f.type === 'select' || f.type === 'multiselect') {
248
+ if (!Array.isArray(f.options) || f.options.length === 0) {
249
+ warnings.push({
250
+ severity: 'warning', code: 'input-field-missing-options',
251
+ message: `${path} is a \`${f.type}\` but has no \`options\` array`,
252
+ suggestedFix: 'Add `options: [{ label, value }, …]` (or set `allowCustomValues: true` if values are user-entered).',
253
+ });
254
+ }
255
+ }
256
+ if (f.type === 'list') {
257
+ if (!Array.isArray(f.itemFields) || f.itemFields.length === 0) {
258
+ warnings.push({
259
+ severity: 'warning', code: 'input-field-missing-item-fields',
260
+ message: `${path} is a \`list\` but has no \`itemFields\``,
261
+ suggestedFix: 'Add `itemFields: [{ name, label, type }, …]` defining the shape of each row.',
262
+ });
263
+ }
264
+ else {
265
+ checkFieldArray(f.itemFields, `${path}.itemFields`, errors, warnings);
266
+ }
267
+ }
268
+ }
269
+ }
162
270
  /**
163
- * Heuristic fix suggestions for the exact invented types Nick-class agents produce.
271
+ * Heuristic fix suggestions for the exact invented types agents commonly produce.
164
272
  */
165
273
  function suggestTypeFix(invalid) {
166
274
  const map = {
@@ -1 +1 @@
1
- {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACH,+BAA+B,EAC/B,0BAA0B,EAC1B,0BAA0B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACH,yBAAyB,EACzB,qBAAqB,GACxB,MAAM,6BAA6B,CAAC;AAiBrC;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC7B,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY;IACrE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM;IAC/D,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB;IAC3D,cAAc,EAAE,cAAc;CACjC,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,oBAAoB,GAA2B;IACjD,MAAM,EAAE,uCAAuC;IAC/C,iBAAiB,EAAE,gDAAgD;IACnE,KAAK,EAAE,qDAAqD;IAC5D,QAAQ,EAAE,qDAAqD;IAC/D,OAAO,EAAE,qFAAqF;IAC9F,OAAO,EAAE,oCAAoC;IAC7C,UAAU,EAAE,uCAAuC;IACnD,SAAS,EAAE,qEAAqE;IAChF,WAAW,EAAE,0GAA0G;CAC1H,CAAC;AAEF,mFAAmF;AACnF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElE,MAAM,UAAU,iBAAiB,CAAC,QAAa;IAC3C,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAqB,EAAE,CAAC;IAEtC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC;QACjG,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC,CAAC;QAClH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAC1E,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC;YACvF,SAAS;QACb,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;QAC5F,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACxH,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;QAED,oCAAoC;QACpC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;QACjH,CAAC;aAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC;gBACR,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,sBAAsB,IAAI,CAAC,IAAI,aAAa,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC9F,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1C,CAAC,CAAC;QACP,CAAC;QAED,gCAAgC;QAChC,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC9D,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACpD,QAAQ,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,SAAS;oBACnB,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EAAE,WAAW,KAAK,mDAAmD;oBAC5E,YAAY,EAAE,GAAG;iBACpB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,qEAAqE;QACrE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,EAAE,CAAC;YAClE,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC;YAC9C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC;oBACR,QAAQ,EAAE,OAAO;oBACjB,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,IAAI,EAAE,yBAAyB;oBAC/B,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,gDAAgD;iBACxE,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,qEAAqE;QACrE,qEAAqE;QACrE,sEAAsE;QACtE,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,SAAS;gBAChD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC5B,IAAI,OAAO,EAAE,KAAK,QAAQ;oBAAE,SAAS,CAAC,sDAAsD;gBAC5F,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC;wBACR,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,sBAAsB;wBAChE,OAAO,EAAE,SAAS,CAAC,kBAAkB,EAAE,iFAAiF;wBACxH,YAAY,EAAE,qBAAqB,CAAC,EAAE,CAAC;qBAC1C,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC;oBACR,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa;oBACvD,OAAO,EAAE,yDAAyD;iBACrE,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAC;gBACpI,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC,CAAC;gBAC7I,CAAC;YACL,CAAC;QACL,CAAC;QAED,8DAA8D;QAC9D,oEAAoE;QACpE,gDAAgD;QAChD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,2BAA2B,EAAE,OAAO,EAAE,IAAI,CAAC;YAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC;oBACR,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,sBAAsB;oBAChE,OAAO,EAAE,4HAA4H;oBACrI,YAAY,EAAE,uIAAuI;iBACxJ,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;YACjC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9E,QAAQ,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc;oBAC1D,OAAO,EAAE,sBAAsB,IAAI,CAAC,EAAE,sDAAsD;iBAC/F,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,6CAA6C;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM;YAAE,SAAS;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;gBACR,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe;gBACzD,OAAO,EAAE,SAAS,IAAI,CAAC,EAAE,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,+BAA+B;aAC7F,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,sEAAsE;IACtE,+DAA+D;IAC/D,mEAAmE;IACnE,+DAA+D;IAC/D,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,uBAAuB,CAC5B,QAAa,EACb,MAAwB,EACxB,QAA0B;IAE1B,MAAM,GAAG,GAAG,QAAQ,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO;IAE5C,MAAM,OAAO,GAA0C,EAAE,CAAC;IAC1D,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC;YAC3C,IAAI,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/G,CAAC;IACL,CAAC;IAED,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,SAAS;QACrC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CACpB,MAAa,EACb,KAAa,EACb,MAAwB,EACxB,QAA0B;IAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAS;QAC1C,MAAM,IAAI,GAAG,GAAG,KAAK,WAAW,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAExF,wBAAwB;QACxB,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC;gBACR,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,0BAA0B;gBACnD,OAAO,EAAE,GAAG,IAAI,sBAAsB;aACzC,CAAC,CAAC;QACP,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC;gBACR,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,0BAA0B;gBACnD,OAAO,EAAE,GAAG,IAAI,8EAA8E;aACjG,CAAC,CAAC;YACH,SAAS;QACb,CAAC;QAED,8CAA8C;QAC9C,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3E,QAAQ,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,0BAA0B;gBACrD,OAAO,EAAE,GAAG,IAAI,4BAA4B,CAAC,CAAC,IAAI,GAAG;gBACrD,YAAY,EAAE,eAAe,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB;aACxF,CAAC,CAAC;QACP,CAAC;aAAM,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC;gBACR,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,0BAA0B;gBACnD,OAAO,EAAE,GAAG,IAAI,0BAA0B,CAAC,CAAC,IAAI,4DAA4D;gBAC5G,YAAY,EAAE,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,6IAA6I;aACpM,CAAC,CAAC;QACP,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtD,QAAQ,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,6BAA6B;oBACxD,OAAO,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,IAAI,iCAAiC;oBAClE,YAAY,EAAE,qGAAqG;iBACtH,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5D,QAAQ,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,iCAAiC;oBAC5D,OAAO,EAAE,GAAG,IAAI,0CAA0C;oBAC1D,YAAY,EAAE,8EAA8E;iBAC/F,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,IAAI,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACnC,MAAM,GAAG,GAA2B;QAChC,EAAE,EAAE,iFAAiF;QACrF,WAAW,EAAE,yEAAyE;QACtF,uBAAuB,EAAE,0DAA0D;QACnF,qBAAqB,EAAE,0HAA0H;QACjJ,sBAAsB,EAAE,+FAA+F;QACvH,eAAe,EAAE,+EAA+E;QAChG,KAAK,EAAE,kHAAkH;QACzH,KAAK,EAAE,iDAAiD;QACxD,OAAO,EAAE,2IAA2I;QACpJ,QAAQ,EAAE,qEAAqE;KAClF,CAAC;IACF,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAqB;IACtD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,OAAO,SAAS,KAAK,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;AAClE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentled/cli",
3
- "version": "0.4.3",
3
+ "version": "0.5.0",
4
4
  "description": "CLI for Agentled — manage workflows, apps, and knowledge from the command line. Zero context-window cost for AI agents.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -29,6 +29,7 @@ Every bundled scaffold:
29
29
  | `lead-scoring-kg` | 04 + 09 | trigger → kg.read-list → AI scoring loop → knowledgeSync → report |
30
30
  | `list-match-email` | 08 | trigger → kg.read-list → AI match top candidates → composed email (approval gate) → knowledgeSync |
31
31
  | `extract-threshold-alert` | 06 + 09 | trigger → AI extract → threshold check (code) → external update → conditional Slack alert → knowledgeSync |
32
+ | `ai-with-tools` | — | trigger → `aiActionWithTools` (web_search + workspace_memory) → milestone |
32
33
 
33
34
  ## Bring your own scaffolds
34
35
 
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "AI with Runtime Tools",
3
+ "goal": "AI step that can call web_search + workspace_memory at runtime (aiActionWithTools shape).",
4
+ "description": "Starting shape for an AI step that needs to pull fresh web context and recall/store workspace memory. Replace the prompt and response structure for your task.",
5
+ "status": "draft",
6
+ "context": {
7
+ "executionInputConfig": {
8
+ "title": "Research + Recall",
9
+ "description": "Provide a topic or entity to research.",
10
+ "runCTALabel": "Run",
11
+ "fields": [
12
+ { "name": "topic", "label": "Topic or entity", "type": "text", "required": true }
13
+ ]
14
+ }
15
+ },
16
+ "steps": [
17
+ {
18
+ "id": "start",
19
+ "type": "trigger",
20
+ "name": "Manual Start",
21
+ "pipelineStepStartConditions": { "trigger": { "type": "manual" } },
22
+ "next": { "stepId": "analyze" }
23
+ },
24
+ {
25
+ "id": "analyze",
26
+ "type": "aiActionWithTools",
27
+ "name": "Analyze with Tools",
28
+ "tools": [
29
+ { "type": "builtin", "name": "web_search", "builtinType": "web_search" },
30
+ { "type": "builtin", "name": "workspace_memory", "builtinType": "workspace_memory" }
31
+ ],
32
+ "pipelineStepPrompt": {
33
+ "template": "Research the topic: {{input.topic}}.\n\nUse `web_search` for fresh external context. Use `workspace_memory` to recall what we already know about {{input.topic}} (call action \"search\" with a relevant query) and to `store` any durable fact you learn (category=fact, confidence 70-100).\n\nReturn a concise structured summary.",
34
+ "responseStructure": {
35
+ "summary": "string — 3-5 sentences synthesising research + prior memory",
36
+ "sources": "array of strings — URLs cited from web_search",
37
+ "stored_memories": "array of strings — keys of new memories written (if any)"
38
+ }
39
+ },
40
+ "creditCost": 10,
41
+ "next": { "stepId": "done" }
42
+ },
43
+ {
44
+ "id": "done",
45
+ "type": "milestone",
46
+ "name": "Done"
47
+ }
48
+ ]
49
+ }
@@ -33,9 +33,9 @@
33
33
  "configuration": {
34
34
  "contextKey": "thresholds",
35
35
  "fields": [
36
- { "name": "metric_a_min", "label": "Metric A floor", "type": "number" },
37
- { "name": "metric_b_max", "label": "Metric B ceiling", "type": "number" },
38
- { "name": "metric_c_min", "label": "Metric C minimum", "type": "number" }
36
+ { "name": "metric_a_min", "label": "Metric A floor", "type": "Numeric" },
37
+ { "name": "metric_b_max", "label": "Metric B ceiling", "type": "Numeric" },
38
+ { "name": "metric_c_min", "label": "Metric C minimum", "type": "Numeric" }
39
39
  ]
40
40
  }
41
41
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: agentled
3
- version: 0.4.1
3
+ version: 0.5.0
4
4
  description: Build, manage, and execute Agentled AI workflows via MCP tools. Use when the user asks to create workflows, automate tasks, enrich leads, scrape websites, find emails, manage executions, or interact with any Agentled workspace capability.
5
5
  user-invocable: false
6
6
  ---
@@ -49,15 +49,20 @@ Before writing pipeline JSON, pull the canonical field schema and the matching b
49
49
  **Via CLI (shell access):**
50
50
  ```
51
51
  agentled schema --step-type aiAction # fields valid on an aiAction step
52
+ agentled schema --context # valid input-page / context field types (MCP-029)
53
+ agentled tools builtins # valid aiActionWithTools builtinType values (MCP-030)
52
54
  agentled examples # list all patterns
53
55
  agentled examples trigger-design # print the full pattern
54
56
  agentled workflows scaffold --list # list working pipeline skeletons
55
57
  agentled workflows scaffold lead-scoring-kg --out pipeline.json
58
+ agentled workflows scaffold ai-with-tools --out pipeline.json # aiActionWithTools starter
56
59
  agentled workflows validate --file pipeline.json # fast client-side preflight (no API)
57
60
  agentled workflows create --file pipeline.json # full server validation on save
58
61
  agentled best-practices # summary + link to agentic-ops repo
59
62
  ```
60
63
 
64
+ > **Silent-strip failures caught by preflight:** invalid `type` on a context / input-page field (e.g. `"multi-select"`, `"checkbox"`, `"number"`) and invalid `builtinType` on an `aiActionWithTools` tool (e.g. `"web-search"`, `"memory"`) both get silently stripped by the runtime — `workflows validate` now flags them with a "did you mean" fix.
65
+
61
66
  **Which pattern to read, by task:**
62
67
 
63
68
  | You're building… | Read pattern | Scaffold |