@swmansion/argent 0.5.3 → 0.6.0-next.2

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 (52) hide show
  1. package/README.md +11 -14
  2. package/bin/ax-service +0 -0
  3. package/bin/simulator-server +0 -0
  4. package/dist/bundled-paths.d.ts +2 -0
  5. package/dist/bundled-paths.js +9 -0
  6. package/dist/bundled-paths.js.map +1 -0
  7. package/dist/cli-cmds.mjs +729 -0
  8. package/dist/cli.d.ts +15 -6
  9. package/dist/cli.js +59 -12
  10. package/dist/cli.js.map +1 -1
  11. package/dist/installer.mjs +14730 -0
  12. package/dist/mcp-server.mjs +14352 -0
  13. package/dist/preview-ui/index.html +799 -0
  14. package/dist/tool-server.cjs +4223 -1169
  15. package/dylibs/libArgentInjectionBootstrap.dylib +0 -0
  16. package/dylibs/libKeyboardPatch.dylib +0 -0
  17. package/dylibs/libNativeDevtoolsIos.dylib +0 -0
  18. package/package.json +15 -12
  19. package/skills/argent-react-native-profiler/SKILL.md +16 -12
  20. package/dist/auto-screenshot.d.ts +0 -22
  21. package/dist/auto-screenshot.js +0 -79
  22. package/dist/auto-screenshot.js.map +0 -1
  23. package/dist/cli/constants.d.ts +0 -6
  24. package/dist/cli/constants.js +0 -12
  25. package/dist/cli/constants.js.map +0 -1
  26. package/dist/cli/init.d.ts +0 -2
  27. package/dist/cli/init.js +0 -529
  28. package/dist/cli/init.js.map +0 -1
  29. package/dist/cli/mcp-configs.d.ts +0 -38
  30. package/dist/cli/mcp-configs.js +0 -779
  31. package/dist/cli/mcp-configs.js.map +0 -1
  32. package/dist/cli/skills.d.ts +0 -14
  33. package/dist/cli/skills.js +0 -95
  34. package/dist/cli/skills.js.map +0 -1
  35. package/dist/cli/uninstall.d.ts +0 -13
  36. package/dist/cli/uninstall.js +0 -389
  37. package/dist/cli/uninstall.js.map +0 -1
  38. package/dist/cli/update.d.ts +0 -1
  39. package/dist/cli/update.js +0 -115
  40. package/dist/cli/update.js.map +0 -1
  41. package/dist/cli/utils.d.ts +0 -38
  42. package/dist/cli/utils.js +0 -272
  43. package/dist/cli/utils.js.map +0 -1
  44. package/dist/content.d.ts +0 -31
  45. package/dist/content.js +0 -59
  46. package/dist/content.js.map +0 -1
  47. package/dist/launcher.d.ts +0 -8
  48. package/dist/launcher.js +0 -183
  49. package/dist/launcher.js.map +0 -1
  50. package/dist/mcp-server.d.ts +0 -1
  51. package/dist/mcp-server.js +0 -228
  52. package/dist/mcp-server.js.map +0 -1
@@ -1,115 +0,0 @@
1
- import * as p from "@clack/prompts";
2
- import pc from "picocolors";
3
- import { execFileSync } from "node:child_process";
4
- import { detectAdapters, getMcpEntry, copyRulesAndAgents } from "./mcp-configs.js";
5
- import { getInstalledVersion, getLatestVersion, isNewerVersion, detectPackageManager, globalInstallCommand, formatShellCommand, resolveProjectRoot, RULES_DIR, AGENTS_DIR, } from "./utils.js";
6
- import { refreshArgentSkills, formatSkillRefreshSummary } from "./skills.js";
7
- import { PACKAGE_NAME } from "./constants.js";
8
- import { killToolServer } from "../launcher.js";
9
- export async function update(args) {
10
- const nonInteractive = args.includes("--yes") || args.includes("-y");
11
- p.intro(pc.bgCyan(pc.black(" argent update ")));
12
- const installed = getInstalledVersion();
13
- if (!installed) {
14
- p.log.error("Could not determine installed version.");
15
- process.exit(1);
16
- }
17
- const spinner = p.spinner();
18
- spinner.start("Checking for updates...");
19
- let latest;
20
- try {
21
- latest = getLatestVersion();
22
- }
23
- catch (err) {
24
- spinner.stop(pc.red("Could not reach registry."));
25
- p.log.error(`Failed to check registry: ${err}`);
26
- process.exit(1);
27
- }
28
- spinner.stop("Version check complete.");
29
- p.log.info(`Installed: ${pc.cyan(`v${installed}`)}`);
30
- p.log.info(`Latest: ${pc.cyan(`v${latest}`)}`);
31
- if (isNewerVersion(latest, installed)) {
32
- p.log.warn(`Update available: ${pc.yellow(`v${installed}`)} -> ${pc.green(`v${latest}`)}`);
33
- const pm = detectPackageManager();
34
- const cmd = globalInstallCommand(pm, `${PACKAGE_NAME}@${latest}`);
35
- const cmdStr = formatShellCommand(cmd);
36
- if (!nonInteractive) {
37
- p.log.message(pc.dim(" Press y for yes, n for no, enter to confirm."));
38
- const proceed = await p.confirm({
39
- message: `Update to v${latest}?`,
40
- initialValue: true,
41
- });
42
- if (p.isCancel(proceed) || !proceed) {
43
- p.cancel("Update cancelled.");
44
- process.exit(0);
45
- }
46
- }
47
- p.log.info(`Running: ${pc.dim(cmdStr)}`);
48
- await killToolServer();
49
- try {
50
- execFileSync(cmd.bin, cmd.args, {
51
- stdio: "inherit",
52
- env: { ...process.env, ARGENT_SKIP_POSTINSTALL: "1" },
53
- });
54
- }
55
- catch (err) {
56
- p.log.error(`Update failed: ${err}`);
57
- process.exit(1);
58
- }
59
- }
60
- else {
61
- p.log.success("Already on the latest version.");
62
- }
63
- // Refresh configuration
64
- spinner.start("Refreshing workspace configuration...");
65
- const projectRoot = resolveProjectRoot(process.cwd());
66
- const detected = detectAdapters();
67
- const mcpEntry = getMcpEntry();
68
- const results = [];
69
- for (const adapter of detected) {
70
- // Refresh both local and global configs where they exist
71
- for (const pathFn of [() => adapter.projectPath(projectRoot), () => adapter.globalPath()]) {
72
- const configPath = pathFn();
73
- if (!configPath)
74
- continue;
75
- try {
76
- adapter.write(configPath, mcpEntry);
77
- results.push(`${pc.green("+")} ${adapter.name} ${pc.dim(configPath)}`);
78
- }
79
- catch {
80
- // Skip paths that don't exist or can't be written
81
- }
82
- }
83
- }
84
- // Refresh allowlists
85
- for (const adapter of detected) {
86
- if (!adapter.addAllowlist)
87
- continue;
88
- for (const s of ["global", "local"]) {
89
- try {
90
- adapter.addAllowlist(projectRoot, s);
91
- }
92
- catch {
93
- // non-fatal
94
- }
95
- }
96
- }
97
- // Refresh rules and agents
98
- const ruleResults = [
99
- ...copyRulesAndAgents(detected, projectRoot, "global", RULES_DIR, AGENTS_DIR),
100
- ...copyRulesAndAgents(detected, projectRoot, "local", RULES_DIR, AGENTS_DIR),
101
- ];
102
- spinner.stop("Configuration refreshed.");
103
- if (results.length > 0) {
104
- p.note(results.join("\n"), "MCP Configs Updated");
105
- }
106
- if (ruleResults.length > 0) {
107
- p.note(ruleResults.join("\n"), "Rules & Agents Updated");
108
- }
109
- const skillSummary = formatSkillRefreshSummary(refreshArgentSkills(projectRoot));
110
- if (skillSummary) {
111
- p.note(skillSummary, "Skills Updated");
112
- }
113
- p.outro(pc.green("Update complete."));
114
- }
115
- //# sourceMappingURL=update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- import { Document } from "yaml";
2
- /**
3
- * Given the __dirname of a file inside dist/cli/, return the package root.
4
- * Exported so it can be tested against simulated directory structures.
5
- */
6
- export declare function resolvePackageRoot(dirname: string): string;
7
- export declare const PACKAGE_ROOT: string;
8
- export declare const SKILLS_DIR: string;
9
- export declare const RULES_DIR: string;
10
- export declare const AGENTS_DIR: string;
11
- export declare function listBundledSkills(skillsDir?: string): string[];
12
- export declare function getProjectSkillLockPath(cwd?: string): string;
13
- export declare function getGlobalSkillLockPath(): string;
14
- export declare const ARGENT_SKILL_PREFIX = "argent-";
15
- export declare function listArgentSkillsInLock(lockPath: string): string[];
16
- export declare function resolveProjectRoot(startDir: string): string;
17
- export declare function readToml(filePath: string): Record<string, unknown>;
18
- export declare function writeToml(filePath: string, data: Record<string, unknown>): void;
19
- export declare function readYaml(filePath: string): Document;
20
- export declare function writeYaml(filePath: string, doc: Document): void;
21
- export declare function readJson(filePath: string): Record<string, unknown>;
22
- export declare function writeJson(filePath: string, data: unknown): void;
23
- export declare function copyDir(src: string, dest: string): boolean;
24
- export declare function dirExists(p: string): boolean;
25
- export declare function getInstalledVersion(): string | null;
26
- export declare function getLatestVersion(): string;
27
- export declare function isNewerVersion(candidate: string, current: string): boolean;
28
- export declare function isSkillsCliAvailable(): boolean;
29
- export declare function isOnline(timeoutMs?: number): Promise<boolean>;
30
- export type PackageManager = "npm" | "yarn" | "pnpm" | "bun";
31
- export interface ShellCommand {
32
- bin: string;
33
- args: string[];
34
- }
35
- export declare function formatShellCommand(cmd: ShellCommand): string;
36
- export declare function detectPackageManager(): PackageManager;
37
- export declare function globalInstallCommand(pm: PackageManager, pkg: string): ShellCommand;
38
- export declare function globalUninstallCommand(pm: PackageManager, pkg: string): ShellCommand;
package/dist/cli/utils.js DELETED
@@ -1,272 +0,0 @@
1
- import * as fs from "node:fs";
2
- import * as path from "node:path";
3
- import * as dns from "node:dns";
4
- import * as os from "node:os";
5
- import { execSync } from "node:child_process";
6
- import semver from "semver";
7
- import { PACKAGE_NAME, NPM_REGISTRY } from "./constants.js";
8
- import { parse as parseToml, stringify as stringifyToml } from "smol-toml";
9
- import { Document, parseDocument } from "yaml";
10
- // ── Package root resolution ───────────────────────────────────────────────────
11
- // tsc compiles src/cli/utils.ts -> dist/cli/utils.js.
12
- // The package root (containing skills/, rules/, agents/) is two levels up.
13
- // This is deterministic — tsc preserves directory structure, and npm packages
14
- // keep their internal layout regardless of hoisting or monorepo setup.
15
- /**
16
- * Given the __dirname of a file inside dist/cli/, return the package root.
17
- * Exported so it can be tested against simulated directory structures.
18
- */
19
- export function resolvePackageRoot(dirname) {
20
- return path.resolve(dirname, "..", "..");
21
- }
22
- export const PACKAGE_ROOT = resolvePackageRoot(import.meta.dirname);
23
- function resolveBundledDir(dirName) {
24
- const packagedDir = path.join(PACKAGE_ROOT, dirName);
25
- if (fs.existsSync(packagedDir))
26
- return packagedDir;
27
- // In the monorepo source tree, these assets live under packages/skills/.
28
- return path.resolve(PACKAGE_ROOT, "..", "skills", dirName);
29
- }
30
- export const SKILLS_DIR = resolveBundledDir("skills");
31
- export const RULES_DIR = resolveBundledDir("rules");
32
- export const AGENTS_DIR = resolveBundledDir("agents");
33
- // Returns the names of the skills that ship with this argent install — each
34
- // subdirectory of SKILLS_DIR that contains a SKILL.md. Used to detect which
35
- // skills on the user's machine are argent-owned so we don't touch anything
36
- // else during update.
37
- export function listBundledSkills(skillsDir = SKILLS_DIR) {
38
- try {
39
- return fs
40
- .readdirSync(skillsDir, { withFileTypes: true })
41
- .filter((entry) => entry.isDirectory())
42
- .map((entry) => entry.name)
43
- .filter((name) => fs.existsSync(path.join(skillsDir, name, "SKILL.md")))
44
- .sort();
45
- }
46
- catch {
47
- return [];
48
- }
49
- }
50
- // Locations of the skills-CLI lock files. These paths mirror the skills CLI
51
- // (v1.5.x) so we can detect which scopes already track argent skills and only
52
- // re-sync those. Project lock lives next to the user's working tree, global
53
- // lock under XDG_STATE_HOME or ~/.agents/.
54
- export function getProjectSkillLockPath(cwd = process.cwd()) {
55
- return path.join(cwd, "skills-lock.json");
56
- }
57
- export function getGlobalSkillLockPath() {
58
- const xdgStateHome = process.env.XDG_STATE_HOME;
59
- if (xdgStateHome)
60
- return path.join(xdgStateHome, "skills", ".skill-lock.json");
61
- return path.join(os.homedir(), ".agents", ".skill-lock.json");
62
- }
63
- // Prefix that identifies every skill argent ships. Used to locate argent-
64
- // owned entries in the skills CLI lock files (including ones that were
65
- // removed from the bundled set and need to be pruned).
66
- export const ARGENT_SKILL_PREFIX = "argent-";
67
- // Returns names in the lock that argent owns (i.e. start with the argent
68
- // prefix). Argent reserves this namespace, so everything under it is
69
- // considered ours and is kept in sync with the bundled SKILLS_DIR.
70
- export function listArgentSkillsInLock(lockPath) {
71
- try {
72
- const raw = fs.readFileSync(lockPath, "utf8");
73
- const lock = JSON.parse(raw);
74
- const tracked = lock.skills ?? {};
75
- return Object.keys(tracked)
76
- .filter((name) => name.startsWith(ARGENT_SKILL_PREFIX))
77
- .sort();
78
- }
79
- catch {
80
- return [];
81
- }
82
- }
83
- const PROJECT_ROOT_MARKERS = [
84
- ".mcp.json",
85
- ".claude",
86
- ".cursor",
87
- ".vscode",
88
- ".gemini",
89
- ".codex",
90
- ".agents",
91
- ".zed",
92
- "skills-lock.json",
93
- ];
94
- export function resolveProjectRoot(startDir) {
95
- const initialDir = path.resolve(startDir);
96
- let currentDir = initialDir;
97
- while (true) {
98
- if (PROJECT_ROOT_MARKERS.some((marker) => fs.existsSync(path.join(currentDir, marker)))) {
99
- return currentDir;
100
- }
101
- if (fs.existsSync(path.join(currentDir, ".git"))) {
102
- return currentDir;
103
- }
104
- const parentDir = path.dirname(currentDir);
105
- if (parentDir === currentDir) {
106
- return initialDir;
107
- }
108
- currentDir = parentDir;
109
- }
110
- }
111
- // ── TOML helpers ─────────────────────────────────────────────────────────────
112
- export function readToml(filePath) {
113
- if (!fs.existsSync(filePath))
114
- return {};
115
- try {
116
- return parseToml(fs.readFileSync(filePath, "utf8"));
117
- }
118
- catch {
119
- return {};
120
- }
121
- }
122
- export function writeToml(filePath, data) {
123
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
124
- fs.writeFileSync(filePath, stringifyToml(data) + "\n");
125
- }
126
- // ── YAML helpers ────────────────────────────────────────────────────────────
127
- // Uses the Document API so comments and formatting survive round-trips,
128
- // which matters for hand-edited config files like ~/.hermes/config.yaml.
129
- export function readYaml(filePath) {
130
- if (!fs.existsSync(filePath))
131
- return new Document({});
132
- const text = fs.readFileSync(filePath, "utf8");
133
- const doc = parseDocument(text);
134
- if (doc.errors.length > 0) {
135
- const messages = doc.errors.map((e) => e.message).join("; ");
136
- throw new Error(`Failed to parse YAML at ${filePath}: ${messages}`);
137
- }
138
- return doc;
139
- }
140
- export function writeYaml(filePath, doc) {
141
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
142
- // lineWidth: 0 disables hard-wrap so long user strings (e.g. multi-line
143
- // quoted personalities in ~/.hermes/config.yaml) stay on the lines they
144
- // were on. Default would re-wrap at column 80.
145
- fs.writeFileSync(filePath, doc.toString({ lineWidth: 0 }));
146
- }
147
- // ── JSON helpers ──────────────────────────────────────────────────────────────
148
- export function readJson(filePath) {
149
- if (!fs.existsSync(filePath))
150
- return {};
151
- try {
152
- return JSON.parse(fs.readFileSync(filePath, "utf8"));
153
- }
154
- catch {
155
- return {};
156
- }
157
- }
158
- export function writeJson(filePath, data) {
159
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
160
- fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n");
161
- }
162
- // ── Directory helpers ─────────────────────────────────────────────────────────
163
- export function copyDir(src, dest) {
164
- if (!fs.existsSync(src))
165
- return false;
166
- fs.mkdirSync(dest, { recursive: true });
167
- fs.cpSync(src, dest, { recursive: true });
168
- return true;
169
- }
170
- export function dirExists(p) {
171
- try {
172
- return fs.statSync(p).isDirectory();
173
- }
174
- catch {
175
- return false;
176
- }
177
- }
178
- // ── Version helpers ───────────────────────────────────────────────────────────
179
- export function getInstalledVersion() {
180
- try {
181
- const pkgPath = path.join(PACKAGE_ROOT, "package.json");
182
- const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
183
- return pkg.version ?? null;
184
- }
185
- catch {
186
- return null;
187
- }
188
- }
189
- const PROBE_TIMEOUT_MS = 3_000;
190
- export function getLatestVersion() {
191
- const result = execSync(`npm view ${PACKAGE_NAME} version --registry ${NPM_REGISTRY}`, {
192
- encoding: "utf8",
193
- timeout: PROBE_TIMEOUT_MS,
194
- });
195
- return result.trim();
196
- }
197
- // Returns true only when `candidate` is a strictly newer semver than
198
- // `current`. Unparseable versions never report as newer, so a local
199
- // prerelease build with a non-semver tag does not trigger a downgrade prompt.
200
- export function isNewerVersion(candidate, current) {
201
- if (!semver.valid(candidate) || !semver.valid(current))
202
- return false;
203
- return semver.gt(candidate, current);
204
- }
205
- export function isSkillsCliAvailable() {
206
- try {
207
- execSync("npx --no-install skills --version", {
208
- stdio: ["ignore", "ignore", "ignore"],
209
- timeout: PROBE_TIMEOUT_MS,
210
- });
211
- return true;
212
- }
213
- catch {
214
- return false;
215
- }
216
- }
217
- export async function isOnline(timeoutMs = PROBE_TIMEOUT_MS) {
218
- let host;
219
- try {
220
- host = new URL(NPM_REGISTRY).hostname;
221
- }
222
- catch {
223
- return false;
224
- }
225
- return new Promise((resolve) => {
226
- const timer = setTimeout(() => resolve(false), timeoutMs);
227
- timer.unref();
228
- dns.lookup(host, (err) => {
229
- clearTimeout(timer);
230
- resolve(!err);
231
- });
232
- });
233
- }
234
- export function formatShellCommand(cmd) {
235
- const parts = [cmd.bin, ...cmd.args.map((a) => (a.includes(" ") ? `"${a}"` : a))];
236
- return parts.join(" ");
237
- }
238
- export function detectPackageManager() {
239
- const agent = process.env.npm_config_user_agent ?? "";
240
- if (agent.startsWith("yarn"))
241
- return "yarn";
242
- if (agent.startsWith("pnpm"))
243
- return "pnpm";
244
- if (agent.startsWith("bun"))
245
- return "bun";
246
- return "npm";
247
- }
248
- export function globalInstallCommand(pm, pkg) {
249
- switch (pm) {
250
- case "yarn":
251
- return { bin: "yarn", args: ["global", "add", pkg] };
252
- case "pnpm":
253
- return { bin: "pnpm", args: ["add", "-g", pkg] };
254
- case "bun":
255
- return { bin: "bun", args: ["add", "-g", pkg] };
256
- default:
257
- return { bin: "npm", args: ["install", "-g", pkg] };
258
- }
259
- }
260
- export function globalUninstallCommand(pm, pkg) {
261
- switch (pm) {
262
- case "yarn":
263
- return { bin: "yarn", args: ["global", "remove", pkg] };
264
- case "pnpm":
265
- return { bin: "pnpm", args: ["remove", "-g", pkg] };
266
- case "bun":
267
- return { bin: "bun", args: ["remove", "-g", pkg] };
268
- default:
269
- return { bin: "npm", args: ["uninstall", "-g", pkg] };
270
- }
271
- }
272
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"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"}
package/dist/content.d.ts DELETED
@@ -1,31 +0,0 @@
1
- /**
2
- * Convert raw tool results into MCP content blocks (text / image).
3
- *
4
- * Extracted so it can be tested independently of the MCP server wiring.
5
- */
6
- export type ContentBlock = {
7
- type: "text";
8
- text: string;
9
- } | {
10
- type: "image";
11
- data: string;
12
- mimeType: string;
13
- };
14
- export declare function toMcpContent(result: unknown, outputHint?: string): Promise<ContentBlock[]>;
15
- export type FlowExecuteResult = {
16
- flow: string;
17
- executionPrerequisite?: string;
18
- steps: {
19
- kind: string;
20
- tool?: string;
21
- message?: string;
22
- result?: unknown;
23
- outputHint?: string;
24
- error?: string;
25
- }[];
26
- };
27
- /**
28
- * Unpack flow-execute's structured step results into MCP content blocks.
29
- * Each step carries its own outputHint so toMcpContent handles images correctly.
30
- */
31
- export declare function flowRunToMcpContent(result: FlowExecuteResult): Promise<ContentBlock[]>;
package/dist/content.js DELETED
@@ -1,59 +0,0 @@
1
- /**
2
- * Convert raw tool results into MCP content blocks (text / image).
3
- *
4
- * Extracted so it can be tested independently of the MCP server wiring.
5
- */
6
- export async function toMcpContent(result, outputHint) {
7
- if (outputHint === "image" && result && typeof result === "object" && "url" in result) {
8
- const imgRes = await fetch(result.url);
9
- const buf = Buffer.from(await imgRes.arrayBuffer());
10
- const filePath = result.path ?? "";
11
- return [
12
- {
13
- type: "image",
14
- data: buf.toString("base64"),
15
- mimeType: "image/png",
16
- },
17
- { type: "text", text: `Saved: ${filePath}` },
18
- ];
19
- }
20
- return [{ type: "text", text: JSON.stringify(result, null, 2) }];
21
- }
22
- /**
23
- * Unpack flow-execute's structured step results into MCP content blocks.
24
- * Each step carries its own outputHint so toMcpContent handles images correctly.
25
- */
26
- export async function flowRunToMcpContent(result) {
27
- const blocks = [];
28
- if (result.executionPrerequisite) {
29
- blocks.push({
30
- type: "text",
31
- text: `Prerequisite: ${result.executionPrerequisite}`,
32
- });
33
- }
34
- blocks.push({
35
- type: "text",
36
- text: `Running flow "${result.flow}" (${result.steps.length} steps)`,
37
- });
38
- for (let i = 0; i < result.steps.length; i++) {
39
- const step = result.steps[i];
40
- const num = i + 1;
41
- if (step.kind === "echo") {
42
- blocks.push({ type: "text", text: `[${num}] ${step.message}` });
43
- }
44
- else if ("error" in step && step.error) {
45
- blocks.push({
46
- type: "text",
47
- text: `[${num}] ${step.tool} ERROR: ${step.error}`,
48
- });
49
- }
50
- else {
51
- blocks.push({ type: "text", text: `[${num}] ${step.tool}` });
52
- const stepContent = await toMcpContent(step.result, step.outputHint);
53
- blocks.push(...stepContent);
54
- }
55
- }
56
- blocks.push({ type: "text", text: `Flow "${result.flow}" complete.` });
57
- return blocks;
58
- }
59
- //# sourceMappingURL=content.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAe,EAAE,UAAmB;IACrE,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QACtF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAE,MAA0B,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAI,MAA4B,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1D,OAAO;YACL;gBACE,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC5B,QAAQ,EAAE,WAAoB;aAC/B;YACD,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,QAAQ,EAAE,EAAE;SACtD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC;AAeD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAyB;IACjE,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,iBAAiB,MAAM,CAAC,qBAAqB,EAAE;SACtD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,iBAAiB,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS;KACrE,CAAC,CAAC;IAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAElB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,KAAK,EAAE;aACnD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACrE,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvE,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,8 +0,0 @@
1
- export declare const BUNDLED_RUNTIME_PATHS: {
2
- bundlePath: string;
3
- simulatorServerDir: string;
4
- nativeDevtoolsDir: string;
5
- };
6
- export declare function buildToolsServerEnv(port: number, baseEnv?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
7
- export declare function killToolServer(): Promise<void>;
8
- export declare function ensureToolsServer(): Promise<string>;