@alisaitteke/photoshop-mcp 1.7.21 → 1.7.23
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 +26 -0
- package/dist/analytics/events.d.ts.map +1 -1
- package/dist/analytics/events.js +8 -1
- package/dist/analytics/events.js.map +1 -1
- package/dist/analytics/index.d.ts +2 -2
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics/index.js +2 -2
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/mcp-client.d.ts.map +1 -1
- package/dist/analytics/mcp-client.js +2 -1
- package/dist/analytics/mcp-client.js.map +1 -1
- package/dist/analytics/mcp-session.d.ts +14 -0
- package/dist/analytics/mcp-session.d.ts.map +1 -1
- package/dist/analytics/mcp-session.js +91 -0
- package/dist/analytics/mcp-session.js.map +1 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +2 -5
- package/dist/core/server.js.map +1 -1
- package/dist/prompts/templates/composite-blend.js +2 -2
- package/dist/prompts/templates/composite-blend.js.map +1 -1
- package/dist/prompts/templates/dodge-burn-guide.js +1 -1
- package/dist/prompts/templates/dodge-burn-guide.js.map +1 -1
- package/dist/prompts/templates/dodge-burn.js +1 -1
- package/dist/prompts/templates/dodge-burn.js.map +1 -1
- package/dist/prompts/templates/gradient-fade.js +1 -1
- package/dist/prompts/templates/gradient-fade.js.map +1 -1
- package/dist/prompts/templates/sky-blend.js +1 -1
- package/dist/prompts/templates/sky-blend.js.map +1 -1
- package/dist/ui/agent/action-plan.d.ts.map +1 -1
- package/dist/ui/agent/action-plan.js +17 -30
- package/dist/ui/agent/action-plan.js.map +1 -1
- package/dist/ui/agent/api-key.d.ts.map +1 -1
- package/dist/ui/agent/api-key.js +7 -15
- package/dist/ui/agent/api-key.js.map +1 -1
- package/dist/ui/agent/claude-account.d.ts.map +1 -1
- package/dist/ui/agent/claude-account.js +6 -9
- package/dist/ui/agent/claude-account.js.map +1 -1
- package/dist/ui/agent/gemini-account.d.ts.map +1 -1
- package/dist/ui/agent/gemini-account.js +7 -8
- package/dist/ui/agent/gemini-account.js.map +1 -1
- package/dist/ui/agent/instant.d.ts +34 -0
- package/dist/ui/agent/instant.d.ts.map +1 -0
- package/dist/ui/agent/instant.js +78 -0
- package/dist/ui/agent/instant.js.map +1 -0
- package/dist/ui/agent/shared.d.ts +28 -6
- package/dist/ui/agent/shared.d.ts.map +1 -1
- package/dist/ui/agent/shared.js +21 -0
- package/dist/ui/agent/shared.js.map +1 -1
- package/dist/ui/agent.d.ts.map +1 -1
- package/dist/ui/agent.js +32 -4
- package/dist/ui/agent.js.map +1 -1
- package/dist/ui/config.d.ts +14 -0
- package/dist/ui/config.d.ts.map +1 -1
- package/dist/ui/config.js +17 -0
- package/dist/ui/config.js.map +1 -1
- package/dist/ui/intent/catalog.d.ts +39 -0
- package/dist/ui/intent/catalog.d.ts.map +1 -0
- package/dist/ui/intent/catalog.js +160 -0
- package/dist/ui/intent/catalog.js.map +1 -0
- package/dist/ui/intent/router.d.ts +92 -0
- package/dist/ui/intent/router.d.ts.map +1 -0
- package/dist/ui/intent/router.js +146 -0
- package/dist/ui/intent/router.js.map +1 -0
- package/dist/ui/intent/service.d.ts +55 -0
- package/dist/ui/intent/service.d.ts.map +1 -0
- package/dist/ui/intent/service.js +150 -0
- package/dist/ui/intent/service.js.map +1 -0
- package/dist/ui/server.d.ts.map +1 -1
- package/dist/ui/server.js +74 -2
- package/dist/ui/server.js.map +1 -1
- package/dist/ui/store/chats.d.ts +16 -0
- package/dist/ui/store/chats.d.ts.map +1 -1
- package/dist/ui/store/chats.js.map +1 -1
- package/dist/ui/store/previews.d.ts +28 -0
- package/dist/ui/store/previews.d.ts.map +1 -0
- package/dist/ui/store/previews.js +120 -0
- package/dist/ui/store/previews.js.map +1 -0
- package/package.json +2 -2
- package/web/dist/assets/index-hrv691GI.js +288 -0
- package/web/dist/assets/index-tyuEMiXQ.css +1 -0
- package/web/dist/index.html +2 -2
- package/web/dist/assets/index-DVa56xB2.js +0 -263
- package/web/dist/assets/index-vi5C3hqd.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/ui/agent/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/ui/agent/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/agent/shared.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { persistToolImages } from '../store/previews.js';
|
|
1
2
|
export function stringifyToolOutput(output) {
|
|
2
3
|
if (output == null)
|
|
3
4
|
return '';
|
|
@@ -80,6 +81,26 @@ export function toolFailureMessage(output, fallback) {
|
|
|
80
81
|
}
|
|
81
82
|
return fallback;
|
|
82
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Record a finished tool call on the buffer and return the `tool-result` event payload.
|
|
86
|
+
* Pass `output` for a normal result; pass `error` when the call threw.
|
|
87
|
+
*/
|
|
88
|
+
export function finishToolCall(buffer, toolCallId, result) {
|
|
89
|
+
const failed = result.error !== undefined;
|
|
90
|
+
const content = failed ? result.error : (result.content ?? stringifyToolOutput(result.output));
|
|
91
|
+
const ok = failed ? false : (result.ok ?? isToolOutputOk(result.output));
|
|
92
|
+
const images = failed ? [] : persistToolImages(result.chatId, toolCallId, result.output);
|
|
93
|
+
const tc = buffer.toolCalls.find((c) => c.id === toolCallId);
|
|
94
|
+
const durationMs = tc?.startedAt ? Math.max(0, Date.now() - tc.startedAt) : undefined;
|
|
95
|
+
const persisted = { ok, content, ...(images.length ? { images } : {}) };
|
|
96
|
+
if (tc) {
|
|
97
|
+
tc.result = persisted;
|
|
98
|
+
tc.status = ok ? 'success' : 'error';
|
|
99
|
+
if (durationMs !== undefined)
|
|
100
|
+
tc.durationMs = durationMs;
|
|
101
|
+
}
|
|
102
|
+
return { id: toolCallId, ...persisted, ...(durationMs !== undefined ? { durationMs } : {}) };
|
|
103
|
+
}
|
|
83
104
|
export function computeCost(usage, pricing) {
|
|
84
105
|
const cacheRead = usage.inputTokenDetails?.cacheReadTokens ?? 0;
|
|
85
106
|
const cacheWrite = usage.inputTokenDetails?.cacheWriteTokens ?? 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/ui/agent/shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/ui/agent/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/ui/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/ui/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAQ/D,OAAO,EACL,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC9C;AAED,eAAO,MAAM,uBAAuB,QAc5B,CAAC;AAET,eAAO,MAAM,yBAAyB,QAa9B,CAAC;AAMT,wBAAuB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,kBAAkB,CAAC,CA+FvF;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,GACzE,YAAY,EAAE,CAQhB;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
package/dist/ui/agent.js
CHANGED
|
@@ -3,6 +3,8 @@ import { runChatViaActionPlan } from './agent/action-plan.js';
|
|
|
3
3
|
import { runChatViaApiKey } from './agent/api-key.js';
|
|
4
4
|
import { runChatViaClaudeAccount } from './agent/claude-account.js';
|
|
5
5
|
import { runChatViaGeminiAccount } from './agent/gemini-account.js';
|
|
6
|
+
import { prepareInstant, runChatViaInstant } from './agent/instant.js';
|
|
7
|
+
import { routeIntent, toRouteView } from './intent/service.js';
|
|
6
8
|
import { loadConfig } from './config.js';
|
|
7
9
|
import { computeCost, } from './agent/shared.js';
|
|
8
10
|
export { computeCost };
|
|
@@ -35,9 +37,35 @@ Planning rules:
|
|
|
35
37
|
- A recipe that already performs a sub-task replaces its atomic equivalent — do not duplicate work.
|
|
36
38
|
- Use "$steps.<stepId>.<dot.path>" placeholders for values produced by earlier steps.
|
|
37
39
|
`.trim();
|
|
40
|
+
const CLARIFY_HINT = `
|
|
41
|
+
The request looks ambiguous. Before calling any Photoshop tool, ask the user exactly one short clarifying question, then stop.
|
|
42
|
+
`.trim();
|
|
38
43
|
export async function* runChat(opts) {
|
|
39
44
|
const authMethod = opts.authMethod ?? 'api_key';
|
|
40
|
-
|
|
45
|
+
let actionPlanBeta = loadConfig().actionPlanBeta;
|
|
46
|
+
let agentSystemPrompt = PHOTOSHOP_SYSTEM_PROMPT;
|
|
47
|
+
// Optional Jev routing (TYPESAFE_API_KEY). Any failure falls back to today's behaviour.
|
|
48
|
+
const routed = await routeIntent(opts.prompt, opts.abortSignal).catch(() => null);
|
|
49
|
+
if (routed) {
|
|
50
|
+
const { decision } = routed;
|
|
51
|
+
yield { type: 'route', payload: toRouteView(decision) };
|
|
52
|
+
if (decision.route === 'instant' && decision.call) {
|
|
53
|
+
const prepared = await prepareInstant(decision.call, opts.chatId);
|
|
54
|
+
if (prepared) {
|
|
55
|
+
yield* runChatViaInstant({
|
|
56
|
+
prepared,
|
|
57
|
+
chatId: opts.chatId,
|
|
58
|
+
abortSignal: opts.abortSignal,
|
|
59
|
+
onAssistantBuffer: opts.onAssistantBuffer,
|
|
60
|
+
onFinish: opts.onFinish,
|
|
61
|
+
});
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
actionPlanBeta = decision.route === 'plan' || decision.route === 'instant';
|
|
66
|
+
if (decision.route === 'clarify')
|
|
67
|
+
agentSystemPrompt = `${PHOTOSHOP_SYSTEM_PROMPT}\n\n${CLARIFY_HINT}`;
|
|
68
|
+
}
|
|
41
69
|
if (actionPlanBeta) {
|
|
42
70
|
yield* runChatViaActionPlan({
|
|
43
71
|
prompt: opts.prompt,
|
|
@@ -63,7 +91,7 @@ export async function* runChat(opts) {
|
|
|
63
91
|
provider: opts.provider,
|
|
64
92
|
modelId: opts.modelId,
|
|
65
93
|
chatId: opts.chatId,
|
|
66
|
-
systemPrompt:
|
|
94
|
+
systemPrompt: agentSystemPrompt,
|
|
67
95
|
abortSignal: opts.abortSignal,
|
|
68
96
|
onAssistantBuffer: opts.onAssistantBuffer,
|
|
69
97
|
onFinish: opts.onFinish,
|
|
@@ -77,7 +105,7 @@ export async function* runChat(opts) {
|
|
|
77
105
|
modelId: opts.modelId,
|
|
78
106
|
chatId: opts.chatId,
|
|
79
107
|
cliPath: opts.cliPath,
|
|
80
|
-
systemPrompt:
|
|
108
|
+
systemPrompt: agentSystemPrompt,
|
|
81
109
|
abortSignal: opts.abortSignal,
|
|
82
110
|
onAssistantBuffer: opts.onAssistantBuffer,
|
|
83
111
|
onFinish: opts.onFinish,
|
|
@@ -98,7 +126,7 @@ export async function* runChat(opts) {
|
|
|
98
126
|
modelId: opts.modelId,
|
|
99
127
|
chatId: opts.chatId,
|
|
100
128
|
authMethod,
|
|
101
|
-
systemPrompt:
|
|
129
|
+
systemPrompt: agentSystemPrompt,
|
|
102
130
|
abortSignal: opts.abortSignal,
|
|
103
131
|
onAssistantBuffer: opts.onAssistantBuffer,
|
|
104
132
|
onFinish: opts.onFinish,
|
package/dist/ui/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/ui/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAGxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,WAAW,GAMZ,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,WAAW,EAAE,CAAC;AAgBvB,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;EAMrC,0BAA0B,EAAE;;;;;;;;CAQ7B,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,CAAC,MAAM,yBAAyB,GAAG;EACvC,uBAAuB;;;;;;;;;;;;CAYxB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO,CAAC,IAAoB;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC;IAChD,
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/ui/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/config.d.ts
CHANGED
|
@@ -19,6 +19,14 @@ export interface CustomProviderConfig {
|
|
|
19
19
|
}[];
|
|
20
20
|
defaultModel: string;
|
|
21
21
|
}
|
|
22
|
+
/** Jev (TypeSafe) intent routing, set from Settings → Routing. */
|
|
23
|
+
export interface IntentRouterConfig {
|
|
24
|
+
apiKey?: string;
|
|
25
|
+
/** Route messages with Jev when a key is present. Defaults to on. */
|
|
26
|
+
enabled?: boolean;
|
|
27
|
+
/** Let Jev run single safe commands without the chat model. Defaults to on. */
|
|
28
|
+
instant?: boolean;
|
|
29
|
+
}
|
|
22
30
|
export interface UIConfig {
|
|
23
31
|
providers: Partial<Record<ProviderId, ProviderConfig>>;
|
|
24
32
|
activeProvider: ProviderId;
|
|
@@ -29,6 +37,7 @@ export interface UIConfig {
|
|
|
29
37
|
*/
|
|
30
38
|
actionPlanBeta?: boolean;
|
|
31
39
|
customProvider: CustomProviderConfig | null;
|
|
40
|
+
intentRouter?: IntentRouterConfig;
|
|
32
41
|
}
|
|
33
42
|
export declare function loadConfig(): UIConfig;
|
|
34
43
|
export declare function saveConfig(patch: Partial<UIConfig>): UIConfig;
|
|
@@ -40,4 +49,9 @@ export declare function maskApiKey(apiKey?: string): string | null;
|
|
|
40
49
|
export declare function saveCustomProvider(config: CustomProviderConfig): UIConfig;
|
|
41
50
|
export declare function getCustomProvider(): CustomProviderConfig | null;
|
|
42
51
|
export declare function deleteCustomProvider(): UIConfig;
|
|
52
|
+
export declare function getIntentRouterConfig(): IntentRouterConfig;
|
|
53
|
+
/** Merge into the stored router settings; `apiKey: null` removes the key. */
|
|
54
|
+
export declare function setIntentRouterConfig(patch: Omit<IntentRouterConfig, 'apiKey'> & {
|
|
55
|
+
apiKey?: string | null;
|
|
56
|
+
}): IntentRouterConfig;
|
|
43
57
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/ui/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/ui/config.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACrF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,QAAQ,GAAG,WAAW,CAAC;IAClC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IACvD,cAAc,EAAE,UAAU,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/ui/config.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACrF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,QAAQ,GAAG,WAAW,CAAC;IAClC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IACvD,cAAc,EAAE,UAAU,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAYD,wBAAgB,UAAU,IAAI,QAAQ,CASrC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAU7D;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,QAAQ,CAMjF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAE5E;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,UAAU,GAAG,UAAU,CAExD;AAED,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAKrE;AAED,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIzD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,QAAQ,CAEzE;AAED,wBAAgB,iBAAiB,IAAI,oBAAoB,GAAG,IAAI,CAE/D;AAED,wBAAgB,oBAAoB,IAAI,QAAQ,CAE/C;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACrE,kBAAkB,CAQpB"}
|
package/dist/ui/config.js
CHANGED
|
@@ -65,4 +65,21 @@ export function getCustomProvider() {
|
|
|
65
65
|
export function deleteCustomProvider() {
|
|
66
66
|
return saveConfig({ customProvider: null });
|
|
67
67
|
}
|
|
68
|
+
export function getIntentRouterConfig() {
|
|
69
|
+
return { ...loadConfig().intentRouter };
|
|
70
|
+
}
|
|
71
|
+
/** Merge into the stored router settings; `apiKey: null` removes the key. */
|
|
72
|
+
export function setIntentRouterConfig(patch) {
|
|
73
|
+
const next = { ...getIntentRouterConfig() };
|
|
74
|
+
if (patch.apiKey === null)
|
|
75
|
+
delete next.apiKey;
|
|
76
|
+
else if (typeof patch.apiKey === 'string')
|
|
77
|
+
next.apiKey = patch.apiKey;
|
|
78
|
+
if (typeof patch.enabled === 'boolean')
|
|
79
|
+
next.enabled = patch.enabled;
|
|
80
|
+
if (typeof patch.instant === 'boolean')
|
|
81
|
+
next.instant = patch.instant;
|
|
82
|
+
saveConfig({ intentRouter: next });
|
|
83
|
+
return next;
|
|
84
|
+
}
|
|
68
85
|
//# sourceMappingURL=config.js.map
|
package/dist/ui/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/ui/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/ui/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single-step commands the standalone UI may run without a language model when
|
|
3
|
+
* Jev (TypeSafe's System One model) is confident the request is exactly one of
|
|
4
|
+
* them. Anything destructive is marked `risky` and never runs this way.
|
|
5
|
+
*/
|
|
6
|
+
export type IntentSlot = 'count' | 'opacity' | 'blendMode';
|
|
7
|
+
export interface SlotValues {
|
|
8
|
+
count?: number;
|
|
9
|
+
opacity?: number;
|
|
10
|
+
blendMode?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface InstantIntent {
|
|
13
|
+
/** Choice label sent to Jev; stable snake_case. */
|
|
14
|
+
id: string;
|
|
15
|
+
/** Criterion description sent to Jev. */
|
|
16
|
+
describe: string;
|
|
17
|
+
/** Short label for the UI chip, e.g. "Undo". */
|
|
18
|
+
label: string;
|
|
19
|
+
/** MCP tool to call. */
|
|
20
|
+
tool: string;
|
|
21
|
+
/** Slots that must be resolved before the intent can run instantly. */
|
|
22
|
+
requires?: IntentSlot[];
|
|
23
|
+
/** Slots used when present. */
|
|
24
|
+
optional?: IntentSlot[];
|
|
25
|
+
/** Destructive or hard to undo: route to a reviewed plan instead. */
|
|
26
|
+
risky?: boolean;
|
|
27
|
+
/** Pixels change, so fetch a preview afterwards. */
|
|
28
|
+
preview?: boolean;
|
|
29
|
+
args: (slots: SlotValues) => Record<string, unknown>;
|
|
30
|
+
/** Label with slot values, e.g. "Opacity 60%". */
|
|
31
|
+
describeCall?: (slots: SlotValues) => string;
|
|
32
|
+
}
|
|
33
|
+
export declare const INSTANT_INTENTS: readonly InstantIntent[];
|
|
34
|
+
export declare const OTHER_INTENT = "other";
|
|
35
|
+
export declare const OTHER_DESCRIPTION = "Anything else: more than one change, a change that is not listed here, a question, or unclear.";
|
|
36
|
+
export declare function findIntent(id: string): InstantIntent | undefined;
|
|
37
|
+
export declare function humanBlendMode(mode: string): string;
|
|
38
|
+
export declare const BLEND_MODES: readonly string[];
|
|
39
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/ui/intent/catalog.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,kDAAkD;IAClD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC;CAC9C;AAID,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAgJnD,CAAC;AAEF,eAAO,MAAM,YAAY,UAAU,CAAC;AACpC,eAAO,MAAM,iBAAiB,mGACoE,CAAC;AAEnG,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEhE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAA0B,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { LAYER_BLEND_MODE_ENUM } from '../../tools/blend-mode.js';
|
|
2
|
+
const none = () => ({});
|
|
3
|
+
export const INSTANT_INTENTS = [
|
|
4
|
+
{
|
|
5
|
+
id: 'undo',
|
|
6
|
+
describe: 'Undo the most recent change (optionally a number of steps).',
|
|
7
|
+
label: 'Undo',
|
|
8
|
+
tool: 'photoshop_undo',
|
|
9
|
+
optional: ['count'],
|
|
10
|
+
args: (s) => (s.count ? { steps: s.count } : {}),
|
|
11
|
+
describeCall: (s) => (s.count && s.count > 1 ? `Undo ${s.count} steps` : 'Undo 1 step'),
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: 'redo',
|
|
15
|
+
describe: 'Redo the change that was just undone (optionally a number of steps).',
|
|
16
|
+
label: 'Redo',
|
|
17
|
+
tool: 'photoshop_redo',
|
|
18
|
+
optional: ['count'],
|
|
19
|
+
args: (s) => (s.count ? { steps: s.count } : {}),
|
|
20
|
+
describeCall: (s) => (s.count && s.count > 1 ? `Redo ${s.count} steps` : 'Redo 1 step'),
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'remove_background',
|
|
24
|
+
describe: 'Remove or cut out the background so only the main subject remains.',
|
|
25
|
+
label: 'Remove background',
|
|
26
|
+
tool: 'photoshop_recipe_remove_background',
|
|
27
|
+
preview: true,
|
|
28
|
+
args: none,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: 'select_subject',
|
|
32
|
+
describe: 'Select the main subject (person or object) in the image.',
|
|
33
|
+
label: 'Select subject',
|
|
34
|
+
tool: 'photoshop_select_subject',
|
|
35
|
+
args: none,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: 'select_all',
|
|
39
|
+
describe: 'Select the whole canvas.',
|
|
40
|
+
label: 'Select all',
|
|
41
|
+
tool: 'photoshop_select_all',
|
|
42
|
+
args: none,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: 'deselect',
|
|
46
|
+
describe: 'Clear the current selection.',
|
|
47
|
+
label: 'Deselect',
|
|
48
|
+
tool: 'photoshop_deselect',
|
|
49
|
+
args: none,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'invert_selection',
|
|
53
|
+
describe: 'Invert the current selection.',
|
|
54
|
+
label: 'Invert selection',
|
|
55
|
+
tool: 'photoshop_invert_selection',
|
|
56
|
+
args: none,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: 'black_and_white',
|
|
60
|
+
describe: 'Make the image or layer black and white / grayscale / desaturated.',
|
|
61
|
+
label: 'Black & white',
|
|
62
|
+
tool: 'photoshop_desaturate',
|
|
63
|
+
preview: true,
|
|
64
|
+
args: none,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: 'invert_colors',
|
|
68
|
+
describe: 'Invert the colors (make a negative).',
|
|
69
|
+
label: 'Invert colors',
|
|
70
|
+
tool: 'photoshop_invert',
|
|
71
|
+
preview: true,
|
|
72
|
+
args: none,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: 'auto_contrast',
|
|
76
|
+
describe: 'Apply automatic contrast.',
|
|
77
|
+
label: 'Auto contrast',
|
|
78
|
+
tool: 'photoshop_auto_contrast',
|
|
79
|
+
preview: true,
|
|
80
|
+
args: none,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: 'auto_levels',
|
|
84
|
+
describe: 'Apply automatic levels / auto tone.',
|
|
85
|
+
label: 'Auto levels',
|
|
86
|
+
tool: 'photoshop_auto_levels',
|
|
87
|
+
preview: true,
|
|
88
|
+
args: none,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: 'set_blend_mode',
|
|
92
|
+
describe: 'Change the blend mode of the active layer only.',
|
|
93
|
+
label: 'Blend mode',
|
|
94
|
+
tool: 'photoshop_set_layer_blend_mode',
|
|
95
|
+
requires: ['blendMode'],
|
|
96
|
+
preview: true,
|
|
97
|
+
args: (s) => ({ blendMode: s.blendMode }),
|
|
98
|
+
describeCall: (s) => `Blend mode ${s.blendMode ? humanBlendMode(s.blendMode) : ''}`.trim(),
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: 'set_opacity',
|
|
102
|
+
describe: 'Change the opacity of the active layer only.',
|
|
103
|
+
label: 'Opacity',
|
|
104
|
+
tool: 'photoshop_set_layer_opacity',
|
|
105
|
+
requires: ['opacity'],
|
|
106
|
+
preview: true,
|
|
107
|
+
args: (s) => ({ opacity: s.opacity }),
|
|
108
|
+
describeCall: (s) => `Opacity ${s.opacity}%`,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: 'duplicate_layer',
|
|
112
|
+
describe: 'Duplicate the active layer.',
|
|
113
|
+
label: 'Duplicate layer',
|
|
114
|
+
tool: 'photoshop_duplicate_layer',
|
|
115
|
+
args: none,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
id: 'new_layer',
|
|
119
|
+
describe: 'Add a new empty layer.',
|
|
120
|
+
label: 'New layer',
|
|
121
|
+
tool: 'photoshop_create_layer',
|
|
122
|
+
args: none,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: 'show_preview',
|
|
126
|
+
describe: 'Show what the document looks like right now, without changing it.',
|
|
127
|
+
label: 'Show preview',
|
|
128
|
+
tool: 'photoshop_get_preview',
|
|
129
|
+
args: none,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
id: 'merge_visible',
|
|
133
|
+
describe: 'Merge all visible layers into one.',
|
|
134
|
+
label: 'Merge visible layers',
|
|
135
|
+
tool: 'photoshop_merge_visible_layers',
|
|
136
|
+
risky: true,
|
|
137
|
+
args: none,
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
id: 'flatten_image',
|
|
141
|
+
describe: 'Flatten the whole image into a single layer.',
|
|
142
|
+
label: 'Flatten image',
|
|
143
|
+
tool: 'photoshop_flatten_image',
|
|
144
|
+
risky: true,
|
|
145
|
+
args: none,
|
|
146
|
+
},
|
|
147
|
+
];
|
|
148
|
+
export const OTHER_INTENT = 'other';
|
|
149
|
+
export const OTHER_DESCRIPTION = 'Anything else: more than one change, a change that is not listed here, a question, or unclear.';
|
|
150
|
+
export function findIntent(id) {
|
|
151
|
+
return INSTANT_INTENTS.find((intent) => intent.id === id);
|
|
152
|
+
}
|
|
153
|
+
export function humanBlendMode(mode) {
|
|
154
|
+
const spaced = mode
|
|
155
|
+
.toLowerCase()
|
|
156
|
+
.replace(/^(color|linear|vivid|pin|hard|soft|darker|lighter)(?=[a-z])/, '$1 ');
|
|
157
|
+
return spaced.charAt(0).toUpperCase() + spaced.slice(1);
|
|
158
|
+
}
|
|
159
|
+
export const BLEND_MODES = LAYER_BLEND_MODE_ENUM;
|
|
160
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/ui/intent/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jev intent router for the standalone UI.
|
|
3
|
+
*
|
|
4
|
+
* One TypeSafe `systemOne` call asks a handful of questions about the prompt in
|
|
5
|
+
* parallel; plain code below turns the answers into a route:
|
|
6
|
+
*
|
|
7
|
+
* instant – exactly one known, safe command → run it directly, no LLM call
|
|
8
|
+
* plan – several known operations → Action Plan (one planning LLM call)
|
|
9
|
+
* agent – needs to look at the image → agent loop with previews
|
|
10
|
+
* clarify – too vague → agent loop told to ask one question first
|
|
11
|
+
*
|
|
12
|
+
* Jev decides, code acts: thresholds live here, not in the model.
|
|
13
|
+
*/
|
|
14
|
+
export type IntentRoute = 'instant' | 'plan' | 'agent' | 'clarify';
|
|
15
|
+
export interface InstantCall {
|
|
16
|
+
tool: string;
|
|
17
|
+
args: Record<string, unknown>;
|
|
18
|
+
preview: boolean;
|
|
19
|
+
label: string;
|
|
20
|
+
}
|
|
21
|
+
export interface IntentDecision {
|
|
22
|
+
route: IntentRoute;
|
|
23
|
+
/** Choice label Jev picked (`other` when none fits). */
|
|
24
|
+
intent: string;
|
|
25
|
+
/** Human text for the chip, e.g. "Undo 1 step" or "Plan". */
|
|
26
|
+
label: string;
|
|
27
|
+
/** Jev's confidence in the intent choice, 0..1. */
|
|
28
|
+
confidence: number;
|
|
29
|
+
signals: {
|
|
30
|
+
multiStep: number;
|
|
31
|
+
needsVisual: number;
|
|
32
|
+
actionable: number;
|
|
33
|
+
};
|
|
34
|
+
call?: InstantCall;
|
|
35
|
+
reason: string;
|
|
36
|
+
latencyMs: number;
|
|
37
|
+
model: string;
|
|
38
|
+
}
|
|
39
|
+
/** Minimal slice of the SDK client, so tests can pass a fake. */
|
|
40
|
+
export interface SystemOneClient {
|
|
41
|
+
systemOne(request: {
|
|
42
|
+
state: unknown;
|
|
43
|
+
questions: Record<string, unknown>;
|
|
44
|
+
}, options?: {
|
|
45
|
+
signal?: AbortSignal;
|
|
46
|
+
timeout?: number;
|
|
47
|
+
}): PromiseLike<{
|
|
48
|
+
model: string;
|
|
49
|
+
answers: Record<string, unknown>;
|
|
50
|
+
}>;
|
|
51
|
+
}
|
|
52
|
+
export declare const THRESHOLDS: {
|
|
53
|
+
/** Intent confidence needed to skip the LLM. Docs suggest ~0.85 for acting directly. */
|
|
54
|
+
readonly instant: 0.85;
|
|
55
|
+
/** A slot value (number, blend mode) must be at least this sure. */
|
|
56
|
+
readonly slot: 0.7;
|
|
57
|
+
/** P(multi-step) must stay below this for instant. */
|
|
58
|
+
readonly multiStepMax: 0.3;
|
|
59
|
+
/** Below this P(actionable) we ask a question first. */
|
|
60
|
+
readonly clarifyBelow: 0.35;
|
|
61
|
+
/** Above this P(needs visual) the agent loop with previews is used. */
|
|
62
|
+
readonly visualMin: 0.6;
|
|
63
|
+
/** Above this P(multi-step) the Action Plan is used. */
|
|
64
|
+
readonly planMin: 0.5;
|
|
65
|
+
};
|
|
66
|
+
/** Candidate numbers for the pre-parsed value pattern: Jev picks one, code parses it. */
|
|
67
|
+
export declare function extractNumbers(prompt: string): string[];
|
|
68
|
+
type Question = {
|
|
69
|
+
type: 'choice';
|
|
70
|
+
instructions: string;
|
|
71
|
+
criteria: Record<string, string | null>;
|
|
72
|
+
} | {
|
|
73
|
+
type: 'noul';
|
|
74
|
+
instructions: string;
|
|
75
|
+
criteria?: {
|
|
76
|
+
true?: string;
|
|
77
|
+
false?: string;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
export declare function buildQuestions(prompt: string): Record<string, Question>;
|
|
81
|
+
/** Pure decision logic: Jev answers in, route out. */
|
|
82
|
+
export declare function decide(answers: Record<string, unknown>, meta: {
|
|
83
|
+
latencyMs: number;
|
|
84
|
+
model: string;
|
|
85
|
+
}): IntentDecision;
|
|
86
|
+
export declare function classifyIntent(prompt: string, client: SystemOneClient, options?: {
|
|
87
|
+
signal?: AbortSignal;
|
|
88
|
+
timeoutMs?: number;
|
|
89
|
+
now?: () => number;
|
|
90
|
+
}): Promise<IntentDecision>;
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/ui/intent/router.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,SAAS,CACP,OAAO,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAC/D,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACnD,WAAW,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,eAAO,MAAM,UAAU;IACrB,wFAAwF;;IAExF,oEAAoE;;IAEpE,sDAAsD;;IAEtD,wDAAwD;;IAExD,uEAAuE;;IAEvE,wDAAwD;;CAEhD,CAAC;AAIX,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAGvD;AAED,KAAK,QAAQ,GACT;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEzF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAiDvE;AAuCD,sDAAsD;AACtD,wBAAgB,MAAM,CACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACzC,cAAc,CA2ChB;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAC7E,OAAO,CAAC,cAAc,CAAC,CAQzB"}
|