ios-agent-mcp 2.7.0 → 2.7.1
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 +23 -6
- package/data/knowledge.json +1 -1
- package/dist/analyzers/launch-screen.d.ts +12 -0
- package/dist/analyzers/launch-screen.js +377 -0
- package/dist/analyzers/launch-screen.js.map +1 -0
- package/dist/analyzers/performance.js +2 -2
- package/dist/analyzers/performance.js.map +1 -1
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/issue-report.d.ts +4 -4
- package/dist/issue-report.js +3 -3
- package/dist/issue-report.js.map +1 -1
- package/dist/private-feedback.d.ts +90 -0
- package/dist/private-feedback.js +55 -0
- package/dist/private-feedback.js.map +1 -0
- package/dist/release/model.d.ts +360 -0
- package/dist/release/model.js +546 -0
- package/dist/release/model.js.map +1 -0
- package/dist/release/package.d.ts +16 -0
- package/dist/release/package.js +166 -0
- package/dist/release/package.js.map +1 -0
- package/dist/release/project.d.ts +4 -0
- package/dist/release/project.js +45 -0
- package/dist/release/project.js.map +1 -0
- package/dist/result.d.ts +8 -8
- package/dist/unified.js +21 -2
- 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 +5 -3
package/dist/issue-report.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const issueReportSchema: z.ZodObject<{
|
|
3
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"]>;
|
|
4
|
+
symptom: z.ZodEnum<["unexpected-error", "timeout", "incorrect-result", "missing-result", "invalid-output", "documentation-mismatch", "missing-guidance", "incorrect-guidance"]>;
|
|
5
5
|
client: z.ZodDefault<z.ZodEnum<["claude", "chatgpt-codex", "gemini-cli", "muse", "unknown"]>>;
|
|
6
6
|
platform: z.ZodDefault<z.ZodEnum<["macos", "linux", "windows", "unknown"]>>;
|
|
7
7
|
reproducibility: z.ZodDefault<z.ZodEnum<["once", "repeated", "unknown"]>>;
|
|
8
8
|
}, "strict", z.ZodTypeAny, {
|
|
9
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";
|
|
10
|
+
symptom: "unexpected-error" | "timeout" | "incorrect-result" | "missing-result" | "invalid-output" | "documentation-mismatch" | "missing-guidance" | "incorrect-guidance";
|
|
11
11
|
client: "unknown" | "claude" | "chatgpt-codex" | "gemini-cli" | "muse";
|
|
12
12
|
platform: "unknown" | "linux" | "macos" | "windows";
|
|
13
13
|
reproducibility: "unknown" | "once" | "repeated";
|
|
14
14
|
}, {
|
|
15
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";
|
|
16
|
+
symptom: "unexpected-error" | "timeout" | "incorrect-result" | "missing-result" | "invalid-output" | "documentation-mismatch" | "missing-guidance" | "incorrect-guidance";
|
|
17
17
|
client?: "unknown" | "claude" | "chatgpt-codex" | "gemini-cli" | "muse" | undefined;
|
|
18
18
|
platform?: "unknown" | "linux" | "macos" | "windows" | undefined;
|
|
19
19
|
reproducibility?: "unknown" | "once" | "repeated" | undefined;
|
|
@@ -36,7 +36,7 @@ export declare const issueReportTool: {
|
|
|
36
36
|
};
|
|
37
37
|
symptom: {
|
|
38
38
|
type: string;
|
|
39
|
-
enum: ("unexpected-error" | "timeout" | "incorrect-result" | "missing-result" | "invalid-output" | "documentation-mismatch")[];
|
|
39
|
+
enum: ("unexpected-error" | "timeout" | "incorrect-result" | "missing-result" | "invalid-output" | "documentation-mismatch" | "missing-guidance" | "incorrect-guidance")[];
|
|
40
40
|
};
|
|
41
41
|
client: {
|
|
42
42
|
type: string;
|
package/dist/issue-report.js
CHANGED
|
@@ -2,7 +2,7 @@ import { createHash } from 'node:crypto';
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { VERSION } from './version.js';
|
|
4
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'];
|
|
5
|
+
const symptoms = ['unexpected-error', 'timeout', 'incorrect-result', 'missing-result', 'invalid-output', 'documentation-mismatch', 'missing-guidance', 'incorrect-guidance'];
|
|
6
6
|
const clients = ['claude', 'chatgpt-codex', 'gemini-cli', 'muse', 'unknown'];
|
|
7
7
|
const platforms = ['macos', 'linux', 'windows', 'unknown'];
|
|
8
8
|
const repeats = ['once', 'repeated', 'unknown'];
|
|
@@ -13,7 +13,7 @@ export const issueReportSchema = z.object({
|
|
|
13
13
|
}).strict();
|
|
14
14
|
export const issueReportTool = {
|
|
15
15
|
name: 'prepare_issue_report',
|
|
16
|
-
description: 'Prepare a LOCAL issue preview for
|
|
16
|
+
description: 'Prepare a LOCAL issue preview for a significant ios-agent-mcp knowledge gap, incorrect guidance or blocking package failure, not a minor warning or 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 and public destination. If the user has requested GitHub reporting for this issue or enabled opening major-issue drafts in this session, use the client browser capability to open submissionUrl; otherwise ask first. The user reviews and clicks Submit on GitHub. Never submit automatically. GitHub sign-in is required to submit. Do not repeatedly suggest a report after dismissal.',
|
|
17
17
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
18
18
|
inputSchema: { type: 'object', properties: {
|
|
19
19
|
feature: { type: 'string', enum: [...features] }, symptom: { type: 'string', enum: [...symptoms] },
|
|
@@ -36,6 +36,6 @@ export function prepareIssueReport(raw, reportedVersion = VERSION) {
|
|
|
36
36
|
search.searchParams.set('q', `is:issue "ios-agent-${fingerprint}"`);
|
|
37
37
|
return { status: 'local-preview', submitted: false, title, body, fingerprint,
|
|
38
38
|
searchUrl: search.href, submissionUrl: submit.href,
|
|
39
|
-
notice: 'Nothing sent. Show this preview
|
|
39
|
+
notice: 'Nothing sent. Show this preview. With user authorization to open issue drafts, open submissionUrl using the coding client; otherwise ask first. The user must click Submit on GitHub. 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
40
|
}
|
|
41
41
|
//# sourceMappingURL=issue-report.js.map
|
package/dist/issue-report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-report.js","sourceRoot":"","sources":["../src/issue-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,CAAU,CAAC;AAChK,MAAM,QAAQ,GAAG,CAAC,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,wBAAwB,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"issue-report.js","sourceRoot":"","sources":["../src/issue-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export declare const privateFeedbackTool: {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
annotations: {
|
|
5
|
+
readOnlyHint: boolean;
|
|
6
|
+
destructiveHint: boolean;
|
|
7
|
+
idempotentHint: boolean;
|
|
8
|
+
openWorldHint: boolean;
|
|
9
|
+
};
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: "object";
|
|
12
|
+
properties: {
|
|
13
|
+
action: {
|
|
14
|
+
type: string;
|
|
15
|
+
enum: string[];
|
|
16
|
+
};
|
|
17
|
+
report: {
|
|
18
|
+
type: string;
|
|
19
|
+
properties: {
|
|
20
|
+
feature: {
|
|
21
|
+
type: string;
|
|
22
|
+
enum: string[];
|
|
23
|
+
};
|
|
24
|
+
symptom: {
|
|
25
|
+
type: string;
|
|
26
|
+
enum: string[];
|
|
27
|
+
};
|
|
28
|
+
client: {
|
|
29
|
+
type: string;
|
|
30
|
+
enum: string[];
|
|
31
|
+
};
|
|
32
|
+
platform: {
|
|
33
|
+
type: string;
|
|
34
|
+
enum: string[];
|
|
35
|
+
};
|
|
36
|
+
reproducibility: {
|
|
37
|
+
type: string;
|
|
38
|
+
enum: string[];
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
required: string[];
|
|
42
|
+
additionalProperties: boolean;
|
|
43
|
+
};
|
|
44
|
+
previewId: {
|
|
45
|
+
type: string;
|
|
46
|
+
format: string;
|
|
47
|
+
};
|
|
48
|
+
userApproved: {
|
|
49
|
+
type: string;
|
|
50
|
+
const: boolean;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
required: string[];
|
|
54
|
+
additionalProperties: boolean;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
export declare function createPrivateFeedback({ endpoint, fetchImpl, now }?: {
|
|
58
|
+
endpoint?: string;
|
|
59
|
+
fetchImpl?: typeof fetch;
|
|
60
|
+
now?: () => number;
|
|
61
|
+
}): (raw: unknown) => Promise<{
|
|
62
|
+
status: string;
|
|
63
|
+
submitted: boolean;
|
|
64
|
+
notice: string;
|
|
65
|
+
previewId?: undefined;
|
|
66
|
+
payload?: undefined;
|
|
67
|
+
destination?: undefined;
|
|
68
|
+
} | {
|
|
69
|
+
status: string;
|
|
70
|
+
submitted: boolean;
|
|
71
|
+
previewId: `${string}-${string}-${string}-${string}-${string}`;
|
|
72
|
+
payload: {
|
|
73
|
+
feature: "installation" | "swift-review" | "local-references" | "app-starter" | "asset-generation" | "simulator" | "app-loop" | "client-connection";
|
|
74
|
+
symptom: "unexpected-error" | "timeout" | "incorrect-result" | "missing-result" | "invalid-output" | "documentation-mismatch" | "missing-guidance" | "incorrect-guidance";
|
|
75
|
+
client: "unknown" | "claude" | "chatgpt-codex" | "gemini-cli" | "muse";
|
|
76
|
+
platform: "unknown" | "linux" | "macos" | "windows";
|
|
77
|
+
reproducibility: "unknown" | "once" | "repeated";
|
|
78
|
+
version: string;
|
|
79
|
+
};
|
|
80
|
+
destination: string;
|
|
81
|
+
notice: string;
|
|
82
|
+
} | {
|
|
83
|
+
submitted: boolean;
|
|
84
|
+
notice: string;
|
|
85
|
+
status: "submitted" | "duplicate";
|
|
86
|
+
receipt: string;
|
|
87
|
+
previewId?: undefined;
|
|
88
|
+
payload?: undefined;
|
|
89
|
+
destination?: undefined;
|
|
90
|
+
}>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { issueReportSchema } from './issue-report.js';
|
|
4
|
+
import { VERSION } from './version.js';
|
|
5
|
+
const inputSchema = z.discriminatedUnion('action', [
|
|
6
|
+
z.object({ action: z.literal('preview'), report: issueReportSchema }).strict(),
|
|
7
|
+
z.object({ action: z.literal('submit'), previewId: z.string().uuid(), userApproved: z.literal(true) }).strict(),
|
|
8
|
+
]);
|
|
9
|
+
export const privateFeedbackTool = {
|
|
10
|
+
name: 'private_feedback',
|
|
11
|
+
description: 'Source-preview private feedback for a failure in iOS Agent tools, not the user app. First preview fixed categories. Show ALL fields, destination and privacy notice in chat. Submit only after the user explicitly approves that preview; never infer approval from a tool failure. No GitHub login needed for the user. Never send source, diagnostics, paths, credentials or free text. Not available until the operator configures an HTTPS receiver. Do not repeatedly offer after dismissal.',
|
|
12
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
|
|
13
|
+
inputSchema: { type: 'object', properties: { action: { type: 'string', enum: ['preview', 'submit'] }, report: { ...issueReportSchemaToJSON() }, previewId: { type: 'string', format: 'uuid' }, userApproved: { type: 'boolean', const: true } }, required: ['action'], additionalProperties: false },
|
|
14
|
+
};
|
|
15
|
+
function issueReportSchemaToJSON() {
|
|
16
|
+
return { type: 'object', properties: { feature: { type: 'string', enum: ['installation', 'swift-review', 'local-references', 'app-starter', 'asset-generation', 'simulator', 'app-loop', 'client-connection'] }, symptom: { type: 'string', enum: ['unexpected-error', 'timeout', 'incorrect-result', 'missing-result', 'invalid-output', 'documentation-mismatch'] }, client: { type: 'string', enum: ['claude', 'chatgpt-codex', 'gemini-cli', 'muse', 'unknown'] }, platform: { type: 'string', enum: ['macos', 'linux', 'windows', 'unknown'] }, reproducibility: { type: 'string', enum: ['once', 'repeated', 'unknown'] } }, required: ['feature', 'symptom'], additionalProperties: false };
|
|
17
|
+
}
|
|
18
|
+
export function createPrivateFeedback({ endpoint = process.env.IOS_AGENT_PRIVATE_FEEDBACK_URL, fetchImpl = fetch, now = Date.now } = {}) {
|
|
19
|
+
const previews = new Map();
|
|
20
|
+
return async (raw) => {
|
|
21
|
+
const input = inputSchema.parse(raw);
|
|
22
|
+
if (!endpoint)
|
|
23
|
+
return { status: 'not-configured', submitted: false, notice: 'Private feedback is not live. Nothing sent. No public issue will be created as a fallback.' };
|
|
24
|
+
const url = new URL(endpoint);
|
|
25
|
+
if (url.protocol !== 'https:' || url.username || url.password || url.search || url.hash || url.pathname !== '/reports')
|
|
26
|
+
throw Error('Configure an HTTPS /reports endpoint without credentials, query or fragment.');
|
|
27
|
+
for (const [id, p] of previews)
|
|
28
|
+
if (p.expires <= now())
|
|
29
|
+
previews.delete(id);
|
|
30
|
+
if (input.action === 'preview') {
|
|
31
|
+
if (previews.size >= 50)
|
|
32
|
+
throw Error('Too many pending previews. Wait for an earlier preview to expire.');
|
|
33
|
+
const previewId = randomUUID(), payload = { version: VERSION, ...input.report };
|
|
34
|
+
previews.set(previewId, { payload, expires: now() + 15 * 60 * 1000 });
|
|
35
|
+
return { status: 'awaiting-approval', submitted: false, previewId, payload, destination: url.origin,
|
|
36
|
+
notice: 'Nothing sent. Ask the user to approve these exact category fields and destination. The receiver and GitHub will process them; repository collaborators can read them. The host sees the network IP and may retain access logs. No app code, logs, paths or identity fields are included. A private repository is access-controlled, not end-to-end encrypted. Approval expires in 15 minutes. Declining has no effect on app development.' };
|
|
37
|
+
}
|
|
38
|
+
const preview = previews.get(input.previewId);
|
|
39
|
+
if (!preview)
|
|
40
|
+
throw Error('Preview expired, unknown or already used. Nothing sent.');
|
|
41
|
+
// A failed/uncertain request cannot be silently retried with the same approval.
|
|
42
|
+
previews.delete(input.previewId);
|
|
43
|
+
try {
|
|
44
|
+
const response = await fetchImpl(url, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(preview.payload), signal: AbortSignal.timeout(10000), redirect: 'error' });
|
|
45
|
+
if (!response.ok)
|
|
46
|
+
return { status: 'unconfirmed', submitted: false, notice: 'The receiver did not confirm submission. Do not claim success or automatically retry.' };
|
|
47
|
+
const result = z.object({ status: z.enum(['submitted', 'duplicate']), receipt: z.string().uuid() }).strict().parse(await response.json());
|
|
48
|
+
return { ...result, submitted: true, notice: result.status === 'duplicate' ? 'This category report is already recorded privately.' : 'Feedback recorded privately. No public issue was created.' };
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return { status: 'unconfirmed', submitted: false, notice: 'No confirmed receipt. Delivery may have failed or its response may have been lost. Do not automatically retry or claim success.' };
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=private-feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-feedback.js","sourceRoot":"","sources":["../src/private-feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const EvidenceState: z.ZodEnum<["OBSERVED", "INFERRED", "DEVELOPER_CONFIRMED", "CONFLICTING", "UNKNOWN", "NOT_APPLICABLE"]>;
|
|
3
|
+
export type State = z.infer<typeof EvidenceState>;
|
|
4
|
+
export interface Evidence {
|
|
5
|
+
id: string;
|
|
6
|
+
file: string;
|
|
7
|
+
sha256: string;
|
|
8
|
+
kind: string;
|
|
9
|
+
}
|
|
10
|
+
export interface Claim {
|
|
11
|
+
id: string;
|
|
12
|
+
status: State;
|
|
13
|
+
value: string | string[] | boolean | null;
|
|
14
|
+
evidence: string[];
|
|
15
|
+
limitations: string[];
|
|
16
|
+
}
|
|
17
|
+
export interface Feature extends Claim {
|
|
18
|
+
relatedScreens: string[];
|
|
19
|
+
relatedPermissions: string[];
|
|
20
|
+
relatedServices: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface Screen extends Claim {
|
|
23
|
+
structural: boolean;
|
|
24
|
+
reachable: 'UNKNOWN';
|
|
25
|
+
runtime: 'NOT_CHECKED';
|
|
26
|
+
}
|
|
27
|
+
export interface Question {
|
|
28
|
+
id: string;
|
|
29
|
+
priority: 1 | 2 | 3;
|
|
30
|
+
domain: string;
|
|
31
|
+
question: string;
|
|
32
|
+
claims: string[];
|
|
33
|
+
evidence: string[];
|
|
34
|
+
}
|
|
35
|
+
export interface AppModel {
|
|
36
|
+
schemaVersion: 1;
|
|
37
|
+
selection: {
|
|
38
|
+
project: string | null;
|
|
39
|
+
workspace: string | null;
|
|
40
|
+
target: string | null;
|
|
41
|
+
configuration: string;
|
|
42
|
+
};
|
|
43
|
+
status: 'ANALYZED_WITH_LIMITATIONS' | 'BLOCKED';
|
|
44
|
+
claims: Claim[];
|
|
45
|
+
features: Feature[];
|
|
46
|
+
screens: Screen[];
|
|
47
|
+
evidence: Evidence[];
|
|
48
|
+
coverage: string[];
|
|
49
|
+
sectionHashes: Record<string, string>;
|
|
50
|
+
}
|
|
51
|
+
export interface Options {
|
|
52
|
+
root: string;
|
|
53
|
+
project?: string;
|
|
54
|
+
workspace?: string;
|
|
55
|
+
target?: string;
|
|
56
|
+
configuration?: string;
|
|
57
|
+
prompt?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface Analysis {
|
|
60
|
+
model: AppModel;
|
|
61
|
+
questions: Question[];
|
|
62
|
+
requirements: unknown[];
|
|
63
|
+
changePlan: unknown;
|
|
64
|
+
sourceFingerprint: string;
|
|
65
|
+
}
|
|
66
|
+
export declare const AppModelSchema: z.ZodEffects<z.ZodObject<{
|
|
67
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
68
|
+
selection: z.ZodObject<{
|
|
69
|
+
project: z.ZodNullable<z.ZodString>;
|
|
70
|
+
workspace: z.ZodNullable<z.ZodString>;
|
|
71
|
+
target: z.ZodNullable<z.ZodString>;
|
|
72
|
+
configuration: z.ZodString;
|
|
73
|
+
}, "strict", z.ZodTypeAny, {
|
|
74
|
+
target: string | null;
|
|
75
|
+
configuration: string;
|
|
76
|
+
project: string | null;
|
|
77
|
+
workspace: string | null;
|
|
78
|
+
}, {
|
|
79
|
+
target: string | null;
|
|
80
|
+
configuration: string;
|
|
81
|
+
project: string | null;
|
|
82
|
+
workspace: string | null;
|
|
83
|
+
}>;
|
|
84
|
+
status: z.ZodEnum<["ANALYZED_WITH_LIMITATIONS", "BLOCKED"]>;
|
|
85
|
+
claims: z.ZodArray<z.ZodObject<{
|
|
86
|
+
id: z.ZodString;
|
|
87
|
+
status: z.ZodEnum<["OBSERVED", "INFERRED", "DEVELOPER_CONFIRMED", "CONFLICTING", "UNKNOWN", "NOT_APPLICABLE"]>;
|
|
88
|
+
value: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">, z.ZodBoolean, z.ZodNull]>;
|
|
89
|
+
evidence: z.ZodArray<z.ZodString, "many">;
|
|
90
|
+
limitations: z.ZodArray<z.ZodString, "many">;
|
|
91
|
+
}, "strict", z.ZodTypeAny, {
|
|
92
|
+
id: string;
|
|
93
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
94
|
+
value: string | boolean | string[] | null;
|
|
95
|
+
evidence: string[];
|
|
96
|
+
limitations: string[];
|
|
97
|
+
}, {
|
|
98
|
+
id: string;
|
|
99
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
100
|
+
value: string | boolean | string[] | null;
|
|
101
|
+
evidence: string[];
|
|
102
|
+
limitations: string[];
|
|
103
|
+
}>, "many">;
|
|
104
|
+
features: z.ZodArray<z.ZodObject<{
|
|
105
|
+
id: z.ZodString;
|
|
106
|
+
status: z.ZodEnum<["OBSERVED", "INFERRED", "DEVELOPER_CONFIRMED", "CONFLICTING", "UNKNOWN", "NOT_APPLICABLE"]>;
|
|
107
|
+
value: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">, z.ZodBoolean, z.ZodNull]>;
|
|
108
|
+
evidence: z.ZodArray<z.ZodString, "many">;
|
|
109
|
+
limitations: z.ZodArray<z.ZodString, "many">;
|
|
110
|
+
} & {
|
|
111
|
+
relatedScreens: z.ZodArray<z.ZodString, "many">;
|
|
112
|
+
relatedPermissions: z.ZodArray<z.ZodString, "many">;
|
|
113
|
+
relatedServices: z.ZodArray<z.ZodString, "many">;
|
|
114
|
+
}, "strict", z.ZodTypeAny, {
|
|
115
|
+
id: string;
|
|
116
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
117
|
+
value: string | boolean | string[] | null;
|
|
118
|
+
evidence: string[];
|
|
119
|
+
limitations: string[];
|
|
120
|
+
relatedScreens: string[];
|
|
121
|
+
relatedPermissions: string[];
|
|
122
|
+
relatedServices: string[];
|
|
123
|
+
}, {
|
|
124
|
+
id: string;
|
|
125
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
126
|
+
value: string | boolean | string[] | null;
|
|
127
|
+
evidence: string[];
|
|
128
|
+
limitations: string[];
|
|
129
|
+
relatedScreens: string[];
|
|
130
|
+
relatedPermissions: string[];
|
|
131
|
+
relatedServices: string[];
|
|
132
|
+
}>, "many">;
|
|
133
|
+
screens: z.ZodArray<z.ZodObject<{
|
|
134
|
+
id: z.ZodString;
|
|
135
|
+
status: z.ZodEnum<["OBSERVED", "INFERRED", "DEVELOPER_CONFIRMED", "CONFLICTING", "UNKNOWN", "NOT_APPLICABLE"]>;
|
|
136
|
+
value: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">, z.ZodBoolean, z.ZodNull]>;
|
|
137
|
+
evidence: z.ZodArray<z.ZodString, "many">;
|
|
138
|
+
limitations: z.ZodArray<z.ZodString, "many">;
|
|
139
|
+
} & {
|
|
140
|
+
structural: z.ZodBoolean;
|
|
141
|
+
reachable: z.ZodLiteral<"UNKNOWN">;
|
|
142
|
+
runtime: z.ZodLiteral<"NOT_CHECKED">;
|
|
143
|
+
}, "strict", z.ZodTypeAny, {
|
|
144
|
+
id: string;
|
|
145
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
146
|
+
value: string | boolean | string[] | null;
|
|
147
|
+
evidence: string[];
|
|
148
|
+
limitations: string[];
|
|
149
|
+
structural: boolean;
|
|
150
|
+
reachable: "UNKNOWN";
|
|
151
|
+
runtime: "NOT_CHECKED";
|
|
152
|
+
}, {
|
|
153
|
+
id: string;
|
|
154
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
155
|
+
value: string | boolean | string[] | null;
|
|
156
|
+
evidence: string[];
|
|
157
|
+
limitations: string[];
|
|
158
|
+
structural: boolean;
|
|
159
|
+
reachable: "UNKNOWN";
|
|
160
|
+
runtime: "NOT_CHECKED";
|
|
161
|
+
}>, "many">;
|
|
162
|
+
evidence: z.ZodArray<z.ZodObject<{
|
|
163
|
+
id: z.ZodString;
|
|
164
|
+
file: z.ZodString;
|
|
165
|
+
sha256: z.ZodString;
|
|
166
|
+
kind: z.ZodString;
|
|
167
|
+
}, "strict", z.ZodTypeAny, {
|
|
168
|
+
id: string;
|
|
169
|
+
sha256: string;
|
|
170
|
+
file: string;
|
|
171
|
+
kind: string;
|
|
172
|
+
}, {
|
|
173
|
+
id: string;
|
|
174
|
+
sha256: string;
|
|
175
|
+
file: string;
|
|
176
|
+
kind: string;
|
|
177
|
+
}>, "many">;
|
|
178
|
+
coverage: z.ZodArray<z.ZodString, "many">;
|
|
179
|
+
sectionHashes: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
180
|
+
}, "strict", z.ZodTypeAny, {
|
|
181
|
+
status: "ANALYZED_WITH_LIMITATIONS" | "BLOCKED";
|
|
182
|
+
screens: {
|
|
183
|
+
id: string;
|
|
184
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
185
|
+
value: string | boolean | string[] | null;
|
|
186
|
+
evidence: string[];
|
|
187
|
+
limitations: string[];
|
|
188
|
+
structural: boolean;
|
|
189
|
+
reachable: "UNKNOWN";
|
|
190
|
+
runtime: "NOT_CHECKED";
|
|
191
|
+
}[];
|
|
192
|
+
features: {
|
|
193
|
+
id: string;
|
|
194
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
195
|
+
value: string | boolean | string[] | null;
|
|
196
|
+
evidence: string[];
|
|
197
|
+
limitations: string[];
|
|
198
|
+
relatedScreens: string[];
|
|
199
|
+
relatedPermissions: string[];
|
|
200
|
+
relatedServices: string[];
|
|
201
|
+
}[];
|
|
202
|
+
coverage: string[];
|
|
203
|
+
evidence: {
|
|
204
|
+
id: string;
|
|
205
|
+
sha256: string;
|
|
206
|
+
file: string;
|
|
207
|
+
kind: string;
|
|
208
|
+
}[];
|
|
209
|
+
schemaVersion: 1;
|
|
210
|
+
selection: {
|
|
211
|
+
target: string | null;
|
|
212
|
+
configuration: string;
|
|
213
|
+
project: string | null;
|
|
214
|
+
workspace: string | null;
|
|
215
|
+
};
|
|
216
|
+
claims: {
|
|
217
|
+
id: string;
|
|
218
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
219
|
+
value: string | boolean | string[] | null;
|
|
220
|
+
evidence: string[];
|
|
221
|
+
limitations: string[];
|
|
222
|
+
}[];
|
|
223
|
+
sectionHashes: Record<string, string>;
|
|
224
|
+
}, {
|
|
225
|
+
status: "ANALYZED_WITH_LIMITATIONS" | "BLOCKED";
|
|
226
|
+
screens: {
|
|
227
|
+
id: string;
|
|
228
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
229
|
+
value: string | boolean | string[] | null;
|
|
230
|
+
evidence: string[];
|
|
231
|
+
limitations: string[];
|
|
232
|
+
structural: boolean;
|
|
233
|
+
reachable: "UNKNOWN";
|
|
234
|
+
runtime: "NOT_CHECKED";
|
|
235
|
+
}[];
|
|
236
|
+
features: {
|
|
237
|
+
id: string;
|
|
238
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
239
|
+
value: string | boolean | string[] | null;
|
|
240
|
+
evidence: string[];
|
|
241
|
+
limitations: string[];
|
|
242
|
+
relatedScreens: string[];
|
|
243
|
+
relatedPermissions: string[];
|
|
244
|
+
relatedServices: string[];
|
|
245
|
+
}[];
|
|
246
|
+
coverage: string[];
|
|
247
|
+
evidence: {
|
|
248
|
+
id: string;
|
|
249
|
+
sha256: string;
|
|
250
|
+
file: string;
|
|
251
|
+
kind: string;
|
|
252
|
+
}[];
|
|
253
|
+
schemaVersion: 1;
|
|
254
|
+
selection: {
|
|
255
|
+
target: string | null;
|
|
256
|
+
configuration: string;
|
|
257
|
+
project: string | null;
|
|
258
|
+
workspace: string | null;
|
|
259
|
+
};
|
|
260
|
+
claims: {
|
|
261
|
+
id: string;
|
|
262
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
263
|
+
value: string | boolean | string[] | null;
|
|
264
|
+
evidence: string[];
|
|
265
|
+
limitations: string[];
|
|
266
|
+
}[];
|
|
267
|
+
sectionHashes: Record<string, string>;
|
|
268
|
+
}>, {
|
|
269
|
+
status: "ANALYZED_WITH_LIMITATIONS" | "BLOCKED";
|
|
270
|
+
screens: {
|
|
271
|
+
id: string;
|
|
272
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
273
|
+
value: string | boolean | string[] | null;
|
|
274
|
+
evidence: string[];
|
|
275
|
+
limitations: string[];
|
|
276
|
+
structural: boolean;
|
|
277
|
+
reachable: "UNKNOWN";
|
|
278
|
+
runtime: "NOT_CHECKED";
|
|
279
|
+
}[];
|
|
280
|
+
features: {
|
|
281
|
+
id: string;
|
|
282
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
283
|
+
value: string | boolean | string[] | null;
|
|
284
|
+
evidence: string[];
|
|
285
|
+
limitations: string[];
|
|
286
|
+
relatedScreens: string[];
|
|
287
|
+
relatedPermissions: string[];
|
|
288
|
+
relatedServices: string[];
|
|
289
|
+
}[];
|
|
290
|
+
coverage: string[];
|
|
291
|
+
evidence: {
|
|
292
|
+
id: string;
|
|
293
|
+
sha256: string;
|
|
294
|
+
file: string;
|
|
295
|
+
kind: string;
|
|
296
|
+
}[];
|
|
297
|
+
schemaVersion: 1;
|
|
298
|
+
selection: {
|
|
299
|
+
target: string | null;
|
|
300
|
+
configuration: string;
|
|
301
|
+
project: string | null;
|
|
302
|
+
workspace: string | null;
|
|
303
|
+
};
|
|
304
|
+
claims: {
|
|
305
|
+
id: string;
|
|
306
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
307
|
+
value: string | boolean | string[] | null;
|
|
308
|
+
evidence: string[];
|
|
309
|
+
limitations: string[];
|
|
310
|
+
}[];
|
|
311
|
+
sectionHashes: Record<string, string>;
|
|
312
|
+
}, {
|
|
313
|
+
status: "ANALYZED_WITH_LIMITATIONS" | "BLOCKED";
|
|
314
|
+
screens: {
|
|
315
|
+
id: string;
|
|
316
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
317
|
+
value: string | boolean | string[] | null;
|
|
318
|
+
evidence: string[];
|
|
319
|
+
limitations: string[];
|
|
320
|
+
structural: boolean;
|
|
321
|
+
reachable: "UNKNOWN";
|
|
322
|
+
runtime: "NOT_CHECKED";
|
|
323
|
+
}[];
|
|
324
|
+
features: {
|
|
325
|
+
id: string;
|
|
326
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
327
|
+
value: string | boolean | string[] | null;
|
|
328
|
+
evidence: string[];
|
|
329
|
+
limitations: string[];
|
|
330
|
+
relatedScreens: string[];
|
|
331
|
+
relatedPermissions: string[];
|
|
332
|
+
relatedServices: string[];
|
|
333
|
+
}[];
|
|
334
|
+
coverage: string[];
|
|
335
|
+
evidence: {
|
|
336
|
+
id: string;
|
|
337
|
+
sha256: string;
|
|
338
|
+
file: string;
|
|
339
|
+
kind: string;
|
|
340
|
+
}[];
|
|
341
|
+
schemaVersion: 1;
|
|
342
|
+
selection: {
|
|
343
|
+
target: string | null;
|
|
344
|
+
configuration: string;
|
|
345
|
+
project: string | null;
|
|
346
|
+
workspace: string | null;
|
|
347
|
+
};
|
|
348
|
+
claims: {
|
|
349
|
+
id: string;
|
|
350
|
+
status: "OBSERVED" | "INFERRED" | "DEVELOPER_CONFIRMED" | "CONFLICTING" | "UNKNOWN" | "NOT_APPLICABLE";
|
|
351
|
+
value: string | boolean | string[] | null;
|
|
352
|
+
evidence: string[];
|
|
353
|
+
limitations: string[];
|
|
354
|
+
}[];
|
|
355
|
+
sectionHashes: Record<string, string>;
|
|
356
|
+
}>;
|
|
357
|
+
export declare function canonical(v: unknown): string;
|
|
358
|
+
export declare const digest: (v: string | Uint8Array) => string;
|
|
359
|
+
export declare function analyzeApp(options: Options): Promise<Analysis>;
|
|
360
|
+
export declare function questionsFor(model: AppModel): Question[];
|