aui-agent-builder 0.3.132 → 0.3.134
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -2
- package/README.md +1 -2
- package/dist/api-client/index.d.ts +14 -17
- package/dist/api-client/index.d.ts.map +1 -1
- package/dist/api-client/index.js +16 -16
- package/dist/api-client/index.js.map +1 -1
- package/dist/commands/index.d.ts +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +6 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/sync-session.d.ts +13 -0
- package/dist/commands/sync-session.d.ts.map +1 -0
- package/dist/commands/sync-session.js +56 -0
- package/dist/commands/sync-session.js.map +1 -0
- package/dist/index.js +58 -41
- package/dist/index.js.map +1 -1
- package/dist/services/auth.service.d.ts +23 -0
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +93 -1
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/pull-schema.service.d.ts.map +1 -1
- package/dist/services/pull-schema.service.js +1 -5
- package/dist/services/pull-schema.service.js.map +1 -1
- package/dist/services/sync-session.service.d.ts +38 -0
- package/dist/services/sync-session.service.d.ts.map +1 -0
- package/dist/services/sync-session.service.js +93 -0
- package/dist/services/sync-session.service.js.map +1 -0
- package/dist/ui/views/SyncSessionView.d.ts +7 -0
- package/dist/ui/views/SyncSessionView.d.ts.map +1 -0
- package/dist/ui/views/SyncSessionView.js +10 -0
- package/dist/ui/views/SyncSessionView.js.map +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +20 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/update-notifier.js +1 -1
- package/dist/utils/update-notifier.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/create-agent.d.ts +0 -17
- package/dist/commands/create-agent.d.ts.map +0 -1
- package/dist/commands/create-agent.js +0 -18
- package/dist/commands/create-agent.js.map +0 -1
- package/dist/commands/widget.d.ts +0 -18
- package/dist/commands/widget.d.ts.map +0 -1
- package/dist/commands/widget.js +0 -153
- package/dist/commands/widget.js.map +0 -1
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `aui widget generate <TOOL_CODE> --prompt "..." [--iterate]`
|
|
3
|
-
*
|
|
4
|
-
* Thin client over `POST /card-templates/view:generate` — server runs the
|
|
5
|
-
* same generator the platform UI uses. `--iterate` ships the current widget
|
|
6
|
-
* for surgical edit instead of fresh generation.
|
|
7
|
-
*/
|
|
8
|
-
interface WidgetGenerateOptions {
|
|
9
|
-
prompt: string;
|
|
10
|
-
iterate?: boolean;
|
|
11
|
-
agentVersionId?: string;
|
|
12
|
-
widgetType?: string;
|
|
13
|
-
referenceImage?: string;
|
|
14
|
-
projectRoot?: string;
|
|
15
|
-
}
|
|
16
|
-
export declare function widgetGenerate(toolName: string | undefined, options: WidgetGenerateOptions): Promise<void>;
|
|
17
|
-
export {};
|
|
18
|
-
//# sourceMappingURL=widget.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../src/commands/widget.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAsED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAmGf"}
|
package/dist/commands/widget.js
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `aui widget generate <TOOL_CODE> --prompt "..." [--iterate]`
|
|
3
|
-
*
|
|
4
|
-
* Thin client over `POST /card-templates/view:generate` — server runs the
|
|
5
|
-
* same generator the platform UI uses. `--iterate` ships the current widget
|
|
6
|
-
* for surgical edit instead of fresh generation.
|
|
7
|
-
*/
|
|
8
|
-
import * as fs from "fs";
|
|
9
|
-
import * as path from "path";
|
|
10
|
-
import chalk from "chalk";
|
|
11
|
-
import { glob } from "glob";
|
|
12
|
-
import { AUIClient } from "../api-client/index.js";
|
|
13
|
-
import { getConfig, loadAgentSettingsApiKey, loadSession, findProjectRoot } from "../config/index.js";
|
|
14
|
-
import { isJsonMode, outputJson, outputJsonError, stderrLog } from "../utils/json-output.js";
|
|
15
|
-
import { parseAuiFile } from "../utils/index.js";
|
|
16
|
-
function die(message, code = "WIDGET_ERROR") {
|
|
17
|
-
if (isJsonMode()) {
|
|
18
|
-
outputJsonError({ code, message });
|
|
19
|
-
}
|
|
20
|
-
console.error(chalk.red(`Error: ${message}`));
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
function makeClient() {
|
|
24
|
-
const config = getConfig();
|
|
25
|
-
const session = loadSession();
|
|
26
|
-
const apiKey = loadAgentSettingsApiKey();
|
|
27
|
-
if (!config.authToken && !apiKey) {
|
|
28
|
-
die("Not logged in and no agent-settings API key found. Run `aui login` first.", "NOT_AUTHENTICATED");
|
|
29
|
-
}
|
|
30
|
-
if (!config.accountId || !config.organizationId) {
|
|
31
|
-
die("Missing accountId/organizationId — re-run `aui login`.", "NOT_AUTHENTICATED");
|
|
32
|
-
}
|
|
33
|
-
const client = new AUIClient({
|
|
34
|
-
baseUrl: config.apiUrl,
|
|
35
|
-
authToken: config.authToken || "",
|
|
36
|
-
accountId: config.accountId,
|
|
37
|
-
organizationId: config.organizationId,
|
|
38
|
-
environment: config.environment,
|
|
39
|
-
});
|
|
40
|
-
if (apiKey)
|
|
41
|
-
client.setAgentSettingsApiKey(apiKey);
|
|
42
|
-
const userId = session?.user_id || null;
|
|
43
|
-
// `updated_by` is required when the server auto-creates the empty template shell.
|
|
44
|
-
const params = {
|
|
45
|
-
updated_by: userId || "",
|
|
46
|
-
network_id: config.agentId || "",
|
|
47
|
-
account_id: config.accountId || "",
|
|
48
|
-
organization_id: config.organizationId || "",
|
|
49
|
-
network_category_id: "",
|
|
50
|
-
};
|
|
51
|
-
return { client, params, userId };
|
|
52
|
-
}
|
|
53
|
-
function findToolFile(toolName, projectRoot) {
|
|
54
|
-
const dir = path.join(projectRoot, "tools");
|
|
55
|
-
if (!fs.existsSync(dir))
|
|
56
|
-
return null;
|
|
57
|
-
const exact = path.join(dir, `${toolName}.aui.json`);
|
|
58
|
-
if (fs.existsSync(exact))
|
|
59
|
-
return exact;
|
|
60
|
-
const lower = path.join(dir, `${toolName.toLowerCase()}.aui.json`);
|
|
61
|
-
if (fs.existsSync(lower))
|
|
62
|
-
return lower;
|
|
63
|
-
const files = glob.sync("*.aui.json", { cwd: dir, absolute: true });
|
|
64
|
-
const match = files.find((f) => {
|
|
65
|
-
try {
|
|
66
|
-
const parsed = parseAuiFile(f);
|
|
67
|
-
return parsed?.tool?.code === toolName;
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
return match || null;
|
|
74
|
-
}
|
|
75
|
-
export async function widgetGenerate(toolName, options) {
|
|
76
|
-
if (!toolName) {
|
|
77
|
-
die("Tool code required. Usage: `aui widget generate <TOOL_CODE> --prompt \"...\"`", "MISSING_TOOL");
|
|
78
|
-
}
|
|
79
|
-
if (!options.prompt || !options.prompt.trim()) {
|
|
80
|
-
die("--prompt is required. Describe the widget or the modification.", "MISSING_PROMPT");
|
|
81
|
-
}
|
|
82
|
-
const projectRoot = options.projectRoot || findProjectRoot() || process.cwd();
|
|
83
|
-
const toolFile = findToolFile(toolName, projectRoot);
|
|
84
|
-
if (!toolFile) {
|
|
85
|
-
die(`Can't locate tools/${toolName}.aui.json under ${projectRoot}. Run \`aui pull\` first.`, "TOOL_FILE_NOT_FOUND");
|
|
86
|
-
}
|
|
87
|
-
const parsed = parseAuiFile(toolFile);
|
|
88
|
-
const tool = parsed?.tool;
|
|
89
|
-
if (!tool || !tool.code) {
|
|
90
|
-
die(`${path.basename(toolFile)}: missing or malformed "tool" key.`, "INVALID_TOOL_FILE");
|
|
91
|
-
}
|
|
92
|
-
const { client, params, userId } = makeClient();
|
|
93
|
-
if (options.agentVersionId)
|
|
94
|
-
params.version_id = options.agentVersionId;
|
|
95
|
-
let currentJsx;
|
|
96
|
-
let currentFields;
|
|
97
|
-
if (options.iterate) {
|
|
98
|
-
const w = tool.widget;
|
|
99
|
-
if (!w || !w.jsx_template) {
|
|
100
|
-
die(`--iterate passed but ${path.basename(toolFile)} has no existing widget. ` +
|
|
101
|
-
`Drop --iterate for fresh generation.`, "NO_WIDGET_TO_ITERATE");
|
|
102
|
-
}
|
|
103
|
-
currentJsx = w.jsx_template;
|
|
104
|
-
currentFields = w.fields || [];
|
|
105
|
-
}
|
|
106
|
-
let referenceImageB64;
|
|
107
|
-
if (options.referenceImage) {
|
|
108
|
-
const imgPath = path.resolve(options.referenceImage);
|
|
109
|
-
if (!fs.existsSync(imgPath)) {
|
|
110
|
-
die(`--reference-image not found at ${imgPath}`, "IMAGE_NOT_FOUND");
|
|
111
|
-
}
|
|
112
|
-
referenceImageB64 = fs.readFileSync(imgPath).toString("base64");
|
|
113
|
-
}
|
|
114
|
-
if (!isJsonMode()) {
|
|
115
|
-
stderrLog(chalk.gray(`${options.iterate ? "Iterating" : "Generating"} widget for ${tool.code}... ` +
|
|
116
|
-
`(server-side LLM call, typically 30-90s)`));
|
|
117
|
-
}
|
|
118
|
-
const result = await client.generateWidget(params, {
|
|
119
|
-
tool_name: tool.code,
|
|
120
|
-
prompt: options.prompt.trim(),
|
|
121
|
-
widget_type: options.widgetType,
|
|
122
|
-
created_by: userId || undefined,
|
|
123
|
-
current_jsx: currentJsx,
|
|
124
|
-
current_fields: currentFields,
|
|
125
|
-
reference_image: referenceImageB64,
|
|
126
|
-
});
|
|
127
|
-
// --json mode emits the widget only and lets the agent merge via edit_file —
|
|
128
|
-
// surviving validation errors must fail loud, not ship as success metadata.
|
|
129
|
-
if (isJsonMode()) {
|
|
130
|
-
if (result.validation_errors && result.validation_errors.length > 0) {
|
|
131
|
-
die(`Widget generation produced JSX that failed validation after retries: ${result.validation_errors.join("; ")}`, "WIDGET_VALIDATION_FAILED");
|
|
132
|
-
}
|
|
133
|
-
outputJson({
|
|
134
|
-
jsx_template: result.jsx_template,
|
|
135
|
-
fields: result.fields || [],
|
|
136
|
-
});
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
tool.widget = {
|
|
140
|
-
jsx_template: result.jsx_template,
|
|
141
|
-
fields: result.fields || [],
|
|
142
|
-
};
|
|
143
|
-
fs.writeFileSync(toolFile, JSON.stringify(parsed, null, 2) + "\n");
|
|
144
|
-
console.log(chalk.green(`\n✓ ${options.iterate ? "Updated" : "Generated"} widget for ${tool.code} ` +
|
|
145
|
-
`(${result.jsx_template.length} chars JSX, ${(result.fields || []).length} fields, ` +
|
|
146
|
-
`${result.attempts} attempt${result.attempts === 1 ? "" : "s"}).`));
|
|
147
|
-
if (result.description) {
|
|
148
|
-
console.log(chalk.gray(` ${result.description}`));
|
|
149
|
-
}
|
|
150
|
-
console.log(chalk.gray(` Written to: ${path.relative(projectRoot, toolFile)}`));
|
|
151
|
-
console.log(chalk.gray(` Run \`aui push\` to deploy.`));
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=widget.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../../src/commands/widget.ts"],"names":[],"mappings":"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"}
|