ios-agent-mcp 2.6.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -7
- package/data/knowledge.json +1 -1
- package/dist/development-feedback.d.ts +3 -0
- package/dist/development-feedback.js +12 -0
- package/dist/development-feedback.js.map +1 -0
- package/dist/issue-report.d.ts +70 -0
- package/dist/issue-report.js +41 -0
- package/dist/issue-report.js.map +1 -0
- package/dist/unified.js +15 -3
- package/dist/unified.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/mcp.json +5 -1
- package/package.json +2 -2
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** Local agent guidance only. Never receives a reporter or transmits diagnostics. */
|
|
2
|
+
export declare const DEVELOPMENT_FAILURE_GUIDANCE = "Developer workflow for this failed operation:\nExplain the actual diagnostic above to the developer in their current coding session. Separate observed evidence from a suspected cause; do not treat an ordinary app bug as an ios-agent package bug.\nState the smallest next check or fix within the approved task, run the relevant verification, then show what passed and what remains blocked. Keep retries bounded and preserve cancellation. Do not claim success without evidence.\nKeep project-specific details in this session; do not put troubleshooting banners, reporting controls or maintainer branding into the app being built. Redact secrets from any explanation.\nThis tool result is not confirmation of a public report. Never upload source, paths, raw logs or exception text. Automatic reporting is not implemented. Use prepare_issue_report for a local preview; public reproduction steps require a separately reviewed, authorized submission.";
|
|
3
|
+
export declare function withDevelopmentFeedback<T extends Record<string, unknown>>(result: T): T;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Local agent guidance only. Never receives a reporter or transmits diagnostics. */
|
|
2
|
+
export const DEVELOPMENT_FAILURE_GUIDANCE = `Developer workflow for this failed operation:
|
|
3
|
+
Explain the actual diagnostic above to the developer in their current coding session. Separate observed evidence from a suspected cause; do not treat an ordinary app bug as an ios-agent package bug.
|
|
4
|
+
State the smallest next check or fix within the approved task, run the relevant verification, then show what passed and what remains blocked. Keep retries bounded and preserve cancellation. Do not claim success without evidence.
|
|
5
|
+
Keep project-specific details in this session; do not put troubleshooting banners, reporting controls or maintainer branding into the app being built. Redact secrets from any explanation.
|
|
6
|
+
This tool result is not confirmation of a public report. Never upload source, paths, raw logs or exception text. Automatic reporting is not implemented. Use prepare_issue_report for a local preview; public reproduction steps require a separately reviewed, authorized submission.`;
|
|
7
|
+
export function withDevelopmentFeedback(result) {
|
|
8
|
+
if (result.isError !== true || !Array.isArray(result.content))
|
|
9
|
+
return result;
|
|
10
|
+
return { ...result, content: [...result.content, { type: 'text', text: DEVELOPMENT_FAILURE_GUIDANCE }] };
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=development-feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"development-feedback.js","sourceRoot":"","sources":["../src/development-feedback.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;uRAI2O,CAAC;AAExR,MAAM,UAAU,uBAAuB,CAAoC,MAAS;IAClF,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IAC7E,OAAO,EAAC,GAAG,MAAM,EAAE,OAAO,EAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,EAAC,IAAI,EAAC,MAAM,EAAE,IAAI,EAAC,4BAA4B,EAAC,CAAC,EAAC,CAAC;AACpG,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const issueReportSchema: z.ZodObject<{
|
|
3
|
+
feature: z.ZodEnum<["installation", "swift-review", "local-references", "app-starter", "asset-generation", "simulator", "app-loop", "client-connection"]>;
|
|
4
|
+
symptom: z.ZodEnum<["unexpected-error", "timeout", "incorrect-result", "missing-result", "invalid-output", "documentation-mismatch"]>;
|
|
5
|
+
client: z.ZodDefault<z.ZodEnum<["claude", "chatgpt-codex", "gemini-cli", "muse", "unknown"]>>;
|
|
6
|
+
platform: z.ZodDefault<z.ZodEnum<["macos", "linux", "windows", "unknown"]>>;
|
|
7
|
+
reproducibility: z.ZodDefault<z.ZodEnum<["once", "repeated", "unknown"]>>;
|
|
8
|
+
}, "strict", z.ZodTypeAny, {
|
|
9
|
+
feature: "installation" | "swift-review" | "local-references" | "app-starter" | "asset-generation" | "simulator" | "app-loop" | "client-connection";
|
|
10
|
+
symptom: "unexpected-error" | "timeout" | "incorrect-result" | "missing-result" | "invalid-output" | "documentation-mismatch";
|
|
11
|
+
client: "unknown" | "claude" | "chatgpt-codex" | "gemini-cli" | "muse";
|
|
12
|
+
platform: "unknown" | "linux" | "macos" | "windows";
|
|
13
|
+
reproducibility: "unknown" | "once" | "repeated";
|
|
14
|
+
}, {
|
|
15
|
+
feature: "installation" | "swift-review" | "local-references" | "app-starter" | "asset-generation" | "simulator" | "app-loop" | "client-connection";
|
|
16
|
+
symptom: "unexpected-error" | "timeout" | "incorrect-result" | "missing-result" | "invalid-output" | "documentation-mismatch";
|
|
17
|
+
client?: "unknown" | "claude" | "chatgpt-codex" | "gemini-cli" | "muse" | undefined;
|
|
18
|
+
platform?: "unknown" | "linux" | "macos" | "windows" | undefined;
|
|
19
|
+
reproducibility?: "unknown" | "once" | "repeated" | undefined;
|
|
20
|
+
}>;
|
|
21
|
+
export declare const issueReportTool: {
|
|
22
|
+
name: string;
|
|
23
|
+
description: string;
|
|
24
|
+
annotations: {
|
|
25
|
+
readOnlyHint: boolean;
|
|
26
|
+
destructiveHint: boolean;
|
|
27
|
+
idempotentHint: boolean;
|
|
28
|
+
openWorldHint: boolean;
|
|
29
|
+
};
|
|
30
|
+
inputSchema: {
|
|
31
|
+
type: "object";
|
|
32
|
+
properties: {
|
|
33
|
+
feature: {
|
|
34
|
+
type: string;
|
|
35
|
+
enum: ("installation" | "swift-review" | "local-references" | "app-starter" | "asset-generation" | "simulator" | "app-loop" | "client-connection")[];
|
|
36
|
+
};
|
|
37
|
+
symptom: {
|
|
38
|
+
type: string;
|
|
39
|
+
enum: ("unexpected-error" | "timeout" | "incorrect-result" | "missing-result" | "invalid-output" | "documentation-mismatch")[];
|
|
40
|
+
};
|
|
41
|
+
client: {
|
|
42
|
+
type: string;
|
|
43
|
+
enum: ("unknown" | "claude" | "chatgpt-codex" | "gemini-cli" | "muse")[];
|
|
44
|
+
default: string;
|
|
45
|
+
};
|
|
46
|
+
platform: {
|
|
47
|
+
type: string;
|
|
48
|
+
enum: ("unknown" | "linux" | "macos" | "windows")[];
|
|
49
|
+
default: string;
|
|
50
|
+
};
|
|
51
|
+
reproducibility: {
|
|
52
|
+
type: string;
|
|
53
|
+
enum: ("unknown" | "once" | "repeated")[];
|
|
54
|
+
default: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
required: string[];
|
|
58
|
+
additionalProperties: boolean;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
export declare function prepareIssueReport(raw: unknown, reportedVersion?: string): {
|
|
62
|
+
status: string;
|
|
63
|
+
submitted: boolean;
|
|
64
|
+
title: string;
|
|
65
|
+
body: string;
|
|
66
|
+
fingerprint: string;
|
|
67
|
+
searchUrl: string;
|
|
68
|
+
submissionUrl: string;
|
|
69
|
+
notice: string;
|
|
70
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { VERSION } from './version.js';
|
|
4
|
+
const features = ['installation', 'swift-review', 'local-references', 'app-starter', 'asset-generation', 'simulator', 'app-loop', 'client-connection'];
|
|
5
|
+
const symptoms = ['unexpected-error', 'timeout', 'incorrect-result', 'missing-result', 'invalid-output', 'documentation-mismatch'];
|
|
6
|
+
const clients = ['claude', 'chatgpt-codex', 'gemini-cli', 'muse', 'unknown'];
|
|
7
|
+
const platforms = ['macos', 'linux', 'windows', 'unknown'];
|
|
8
|
+
const repeats = ['once', 'repeated', 'unknown'];
|
|
9
|
+
export const issueReportSchema = z.object({
|
|
10
|
+
feature: z.enum(features), symptom: z.enum(symptoms),
|
|
11
|
+
client: z.enum(clients).default('unknown'), platform: z.enum(platforms).default('unknown'),
|
|
12
|
+
reproducibility: z.enum(repeats).default('unknown'),
|
|
13
|
+
}).strict();
|
|
14
|
+
export const issueReportTool = {
|
|
15
|
+
name: 'prepare_issue_report',
|
|
16
|
+
description: 'Prepare a LOCAL issue preview for an ios-agent-mcp failure, not a defect in the user app. Accepts fixed categories only, never source, logs, paths or credentials. Makes no network requests or submissions. Show the complete preview to the user; opening a link or submitting requires their approval. GitHub sign-in is required to submit. Do not repeatedly suggest a report after dismissal.',
|
|
17
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
18
|
+
inputSchema: { type: 'object', properties: {
|
|
19
|
+
feature: { type: 'string', enum: [...features] }, symptom: { type: 'string', enum: [...symptoms] },
|
|
20
|
+
client: { type: 'string', enum: [...clients], default: 'unknown' },
|
|
21
|
+
platform: { type: 'string', enum: [...platforms], default: 'unknown' },
|
|
22
|
+
reproducibility: { type: 'string', enum: [...repeats], default: 'unknown' },
|
|
23
|
+
}, required: ['feature', 'symptom'], additionalProperties: false },
|
|
24
|
+
};
|
|
25
|
+
export function prepareIssueReport(raw, reportedVersion = VERSION) {
|
|
26
|
+
const version = z.string().regex(/^\d{1,4}\.\d{1,4}\.\d{1,4}$/).parse(reportedVersion);
|
|
27
|
+
const input = issueReportSchema.parse(raw);
|
|
28
|
+
// Grouping key only; never includes user identity, project data or machine metadata.
|
|
29
|
+
const fingerprint = createHash('sha256').update(JSON.stringify({ version, ...input })).digest('hex').slice(0, 16);
|
|
30
|
+
const title = `[AI-assisted report] ${input.feature}: ${input.symptom}`;
|
|
31
|
+
const body = `## Package issue preview\n\nThis is a category-only report, not a verified diagnosis.\n\n- Package: ios-agent-mcp ${version}\n- Feature: ${input.feature}\n- Symptom: ${input.symptom}\n- Client: ${input.client}\n- Platform: ${input.platform}\n- Reproducibility: ${input.reproducibility}\n- Grouping key: ios-agent-${fingerprint}\n\n## Before submitting\n\nSearch existing issues first. Explain expected versus actual behavior and reproduction steps using a synthetic example in the GitHub form if possible. Do not include app source, logs, personal paths, credentials, signing data or private project names. Review everything added to this public issue.\n\nGenerated locally with fixed fields; no diagnostics were collected or uploaded.\n`;
|
|
32
|
+
const submit = new URL('https://github.com/Nagarjuna2997/ios-agent-skill/issues/new');
|
|
33
|
+
submit.searchParams.set('title', title);
|
|
34
|
+
submit.searchParams.set('body', body);
|
|
35
|
+
const search = new URL('https://github.com/Nagarjuna2997/ios-agent-skill/issues');
|
|
36
|
+
search.searchParams.set('q', `is:issue "ios-agent-${fingerprint}"`);
|
|
37
|
+
return { status: 'local-preview', submitted: false, title, body, fingerprint,
|
|
38
|
+
searchUrl: search.href, submissionUrl: submit.href,
|
|
39
|
+
notice: 'Nothing sent. Show this preview and ask before opening links. Opening a link sends these fixed fields to GitHub; submitting creates a public issue and requires GitHub sign-in. Duplicate lookup has not been performed.' };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=issue-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-report.js","sourceRoot":"","sources":["../src/issue-report.ts"],"names":[],"mappings":"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"}
|
package/dist/unified.js
CHANGED
|
@@ -10,6 +10,8 @@ import { execFile } from 'node:child_process';
|
|
|
10
10
|
import { promisify } from 'node:util';
|
|
11
11
|
import { z } from 'zod';
|
|
12
12
|
import { VERSION } from './version.js';
|
|
13
|
+
import { withDevelopmentFeedback } from './development-feedback.js';
|
|
14
|
+
import { issueReportTool, prepareIssueReport } from './issue-report.js';
|
|
13
15
|
const require = createRequire(import.meta.url);
|
|
14
16
|
const args = process.argv.slice(2);
|
|
15
17
|
const cli = () => require.resolve('@nagarjuna2002/ios-agent/dist/index.js');
|
|
@@ -26,7 +28,7 @@ else if (args[0] === 'loop') {
|
|
|
26
28
|
process.exitCode = 1;
|
|
27
29
|
}
|
|
28
30
|
}
|
|
29
|
-
else if (args[0] === 'new') {
|
|
31
|
+
else if ((args[0] === 'new' || args[0] === 'assets')) {
|
|
30
32
|
const child = (await import('node:child_process')).spawn(process.execPath, [cli(), ...args], { stdio: 'inherit' });
|
|
31
33
|
child.on('error', e => { console.error(e.message); process.exitCode = 1; });
|
|
32
34
|
child.on('exit', code => { process.exitCode = code ?? 1; });
|
|
@@ -46,11 +48,20 @@ else {
|
|
|
46
48
|
const tools = catalog.flatMap((list, i) => list.tools.map(tool => { if (owners.has(tool.name))
|
|
47
49
|
throw Error(`Duplicate tool ${tool.name}`); owners.set(tool.name, clients[i]); return tool; }));
|
|
48
50
|
tools.push({ name: 'create_app', description: 'Create an editable Swift app starter, implementation brief and optional XcodeGen specification/icon layers. Writes a NEW project; does not implement the full app idea. Then use source retrieval, review and simulator tools to implement and verify it.', inputSchema: { type: 'object', properties: { name: { type: 'string' }, directory: { type: 'string', description: 'Parent directory for the new project' }, brief: { type: 'string' }, xcodegen: { type: 'boolean', default: true } }, required: ['name', 'directory', 'brief'], additionalProperties: false } });
|
|
51
|
+
tools.push(issueReportTool);
|
|
49
52
|
const server = new Server({ name: 'ios-agent-mcp', version: VERSION }, { capabilities: { tools: {}, resources: {} } });
|
|
50
53
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools }));
|
|
51
54
|
server.setRequestHandler(ListResourcesRequestSchema, () => clients[0].listResources());
|
|
52
55
|
server.setRequestHandler(ReadResourceRequestSchema, request => clients[0].readResource(request.params));
|
|
53
56
|
server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
|
|
57
|
+
if (request.params.name === 'prepare_issue_report') {
|
|
58
|
+
try {
|
|
59
|
+
return { content: [{ type: 'text', text: JSON.stringify(prepareIssueReport(request.params.arguments), null, 2) }] };
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return { isError: true, content: [{ type: 'text', text: 'Invalid report categories. Free text, logs, source, paths and credentials are not accepted.' }] };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
54
65
|
if (request.params.name === 'create_app') {
|
|
55
66
|
try {
|
|
56
67
|
const input = z.object({ name: z.string().min(1), directory: z.string().min(1), brief: z.string().min(1), xcodegen: z.boolean().default(true) }).strict().parse(request.params.arguments);
|
|
@@ -58,13 +69,14 @@ else {
|
|
|
58
69
|
return { content: [{ type: 'text', text: result.stdout || 'App starter created.' }] };
|
|
59
70
|
}
|
|
60
71
|
catch (error) {
|
|
61
|
-
return { isError: true, content: [{ type: 'text', text: error instanceof Error ? error.message : String(error) }] };
|
|
72
|
+
return withDevelopmentFeedback({ isError: true, content: [{ type: 'text', text: error instanceof Error ? error.message : String(error) }] });
|
|
62
73
|
}
|
|
63
74
|
}
|
|
64
75
|
const owner = owners.get(request.params.name);
|
|
65
76
|
if (!owner)
|
|
66
77
|
throw Error('Unknown tool');
|
|
67
|
-
|
|
78
|
+
const result = await owner.callTool(request.params, undefined, { timeout: 21 * 60 * 1000, signal: extra.signal });
|
|
79
|
+
return withDevelopmentFeedback(result);
|
|
68
80
|
});
|
|
69
81
|
process.once('SIGINT', () => { void close().finally(() => process.exit(0)); });
|
|
70
82
|
process.once('SIGTERM', () => { void close().finally(() => process.exit(0)); });
|
package/dist/unified.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified.js","sourceRoot":"","sources":["../src/unified.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC1J,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;AAC5E,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,4fAA4f,CAAC,CAAC;KAC/jB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC;QAAC,MAAM,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAA,CAAC,CAAA,KAAK,CAAC,OAAO,CAAA,CAAC,CAAA,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAA,OAAO,CAAC,QAAQ,GAAC,CAAC,CAAC;IAAC,CAAC;AAC9K,CAAC;KACI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"unified.js","sourceRoot":"","sources":["../src/unified.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "2.
|
|
1
|
+
export declare const VERSION = "2.7.0";
|
package/dist/version.js
CHANGED
package/mcp.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ios-agent-mcp",
|
|
3
3
|
"displayName": "iOS Agent",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.7.0",
|
|
5
5
|
"description": "Unified iOS development tools: Swift reviews, Apple source retrieval, app scaffolding and Xcode simulator workflows.",
|
|
6
6
|
"author": "Nagarjuna Reddy",
|
|
7
7
|
"license": "MIT",
|
|
@@ -176,6 +176,10 @@
|
|
|
176
176
|
{
|
|
177
177
|
"name": "review_app_intents",
|
|
178
178
|
"summary": "Read-only SiriKit migration advice and opt-in Apple Intelligence schema/onscreen entity review. No blanket SiriKit deprecation claim."
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"name": "prepare_issue_report",
|
|
182
|
+
"summary": "Local category-only issue preview; no network, diagnostics collection or submission. User reviews and signs in to GitHub to submit."
|
|
179
183
|
}
|
|
180
184
|
],
|
|
181
185
|
"resources": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ios-agent-mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"description": "MCP server for modern iOS/Swift development \u2014 concurrency isolation, architecture boundaries, SwiftUI, and App Store readiness analysis",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
44
44
|
"zod": "^3.23.8",
|
|
45
|
-
"@nagarjuna2002/ios-agent": "0.
|
|
45
|
+
"@nagarjuna2002/ios-agent": "0.3.0",
|
|
46
46
|
"@nagarjuna2002/ios-simulator-mcp": "0.2.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|