actoviq-agent-sdk 0.3.1 → 0.4.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-zh.md +37 -2
- package/README.md +37 -2
- package/bin/actoviq-tui.js +5 -0
- package/dist/src/cli/actoviq-react.js +79 -8
- package/dist/src/cli/actoviq-react.js.map +1 -1
- package/dist/src/cli/actoviq-tui.d.ts +3 -0
- package/dist/src/cli/actoviq-tui.d.ts.map +1 -0
- package/dist/src/cli/actoviq-tui.js +76 -0
- package/dist/src/cli/actoviq-tui.js.map +1 -0
- package/dist/src/config/actoviqSettingsStore.d.ts.map +1 -1
- package/dist/src/config/actoviqSettingsStore.js +8 -2
- package/dist/src/config/actoviqSettingsStore.js.map +1 -1
- package/dist/src/config/anthropicEnvMapping.d.ts +1 -1
- package/dist/src/config/anthropicEnvMapping.d.ts.map +1 -1
- package/dist/src/config/anthropicEnvMapping.js +17 -8
- package/dist/src/config/anthropicEnvMapping.js.map +1 -1
- package/dist/src/config/modelTiers.d.ts +12 -0
- package/dist/src/config/modelTiers.d.ts.map +1 -0
- package/dist/src/config/modelTiers.js +31 -0
- package/dist/src/config/modelTiers.js.map +1 -0
- package/dist/src/config/projectSessionDirectory.d.ts +8 -0
- package/dist/src/config/projectSessionDirectory.d.ts.map +1 -0
- package/dist/src/config/projectSessionDirectory.js +83 -0
- package/dist/src/config/projectSessionDirectory.js.map +1 -0
- package/dist/src/config/resolveRuntimeConfig.d.ts.map +1 -1
- package/dist/src/config/resolveRuntimeConfig.js +44 -16
- package/dist/src/config/resolveRuntimeConfig.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/connectionManager.d.ts.map +1 -1
- package/dist/src/mcp/connectionManager.js +10 -1
- package/dist/src/mcp/connectionManager.js.map +1 -1
- package/dist/src/parity/actoviqCleanBridgeCompatSdk.d.ts.map +1 -1
- package/dist/src/parity/actoviqCleanBridgeCompatSdk.js +6 -2
- package/dist/src/parity/actoviqCleanBridgeCompatSdk.js.map +1 -1
- package/dist/src/provider/client.d.ts +2 -0
- package/dist/src/provider/client.d.ts.map +1 -1
- package/dist/src/provider/client.js +5 -2
- package/dist/src/provider/client.js.map +1 -1
- package/dist/src/provider/openai-model-api.d.ts.map +1 -1
- package/dist/src/provider/openai-model-api.js +3 -0
- package/dist/src/provider/openai-model-api.js.map +1 -1
- package/dist/src/provider/openai-types.d.ts +1 -0
- package/dist/src/provider/openai-types.d.ts.map +1 -1
- package/dist/src/runtime/actoviqAgentDefinitions.d.ts +8 -0
- package/dist/src/runtime/actoviqAgentDefinitions.d.ts.map +1 -0
- package/dist/src/runtime/actoviqAgentDefinitions.js +165 -0
- package/dist/src/runtime/actoviqAgentDefinitions.js.map +1 -0
- package/dist/src/runtime/actoviqAgents.d.ts +20 -2
- package/dist/src/runtime/actoviqAgents.d.ts.map +1 -1
- package/dist/src/runtime/actoviqAgents.js +143 -28
- package/dist/src/runtime/actoviqAgents.js.map +1 -1
- package/dist/src/runtime/actoviqBackgroundTasks.d.ts +14 -1
- package/dist/src/runtime/actoviqBackgroundTasks.d.ts.map +1 -1
- package/dist/src/runtime/actoviqBackgroundTasks.js +71 -10
- package/dist/src/runtime/actoviqBackgroundTasks.js.map +1 -1
- package/dist/src/runtime/actoviqCompact.d.ts +16 -0
- package/dist/src/runtime/actoviqCompact.d.ts.map +1 -1
- package/dist/src/runtime/actoviqCompact.js +112 -13
- package/dist/src/runtime/actoviqCompact.js.map +1 -1
- package/dist/src/runtime/actoviqModelApi.d.ts.map +1 -1
- package/dist/src/runtime/actoviqModelApi.js +20 -4
- package/dist/src/runtime/actoviqModelApi.js.map +1 -1
- package/dist/src/runtime/actoviqPermissions.d.ts +5 -2
- package/dist/src/runtime/actoviqPermissions.d.ts.map +1 -1
- package/dist/src/runtime/actoviqPermissions.js +83 -194
- package/dist/src/runtime/actoviqPermissions.js.map +1 -1
- package/dist/src/runtime/actoviqSessionPermissions.d.ts +5 -0
- package/dist/src/runtime/actoviqSessionPermissions.d.ts.map +1 -0
- package/dist/src/runtime/actoviqSessionPermissions.js +44 -0
- package/dist/src/runtime/actoviqSessionPermissions.js.map +1 -0
- package/dist/src/runtime/agentClient.d.ts +26 -3
- package/dist/src/runtime/agentClient.d.ts.map +1 -1
- package/dist/src/runtime/agentClient.js +824 -110
- package/dist/src/runtime/agentClient.js.map +1 -1
- package/dist/src/runtime/agentSession.d.ts +8 -5
- package/dist/src/runtime/agentSession.d.ts.map +1 -1
- package/dist/src/runtime/agentSession.js +11 -4
- package/dist/src/runtime/agentSession.js.map +1 -1
- package/dist/src/runtime/conversationEngine.d.ts +2 -0
- package/dist/src/runtime/conversationEngine.d.ts.map +1 -1
- package/dist/src/runtime/conversationEngine.js +81 -2
- package/dist/src/runtime/conversationEngine.js.map +1 -1
- package/dist/src/runtime/defaultActoviqAgents.d.ts.map +1 -1
- package/dist/src/runtime/defaultActoviqAgents.js +41 -0
- package/dist/src/runtime/defaultActoviqAgents.js.map +1 -1
- package/dist/src/swarm/actoviqSwarm.d.ts.map +1 -1
- package/dist/src/swarm/actoviqSwarm.js +6 -6
- package/dist/src/swarm/actoviqSwarm.js.map +1 -1
- package/dist/src/tools/bash/BashTool.d.ts.map +1 -1
- package/dist/src/tools/bash/BashTool.js +43 -10
- package/dist/src/tools/bash/BashTool.js.map +1 -1
- package/dist/src/tui/actoviqTui.d.ts +13 -0
- package/dist/src/tui/actoviqTui.d.ts.map +1 -0
- package/dist/src/tui/actoviqTui.js +1594 -0
- package/dist/src/tui/actoviqTui.js.map +1 -0
- package/dist/src/tui/ansi.d.ts +33 -0
- package/dist/src/tui/ansi.d.ts.map +1 -0
- package/dist/src/tui/ansi.js +127 -0
- package/dist/src/tui/ansi.js.map +1 -0
- package/dist/src/tui/editor.d.ts +56 -0
- package/dist/src/tui/editor.d.ts.map +1 -0
- package/dist/src/tui/editor.js +253 -0
- package/dist/src/tui/editor.js.map +1 -0
- package/dist/src/tui/pluginCatalog.d.ts +13 -0
- package/dist/src/tui/pluginCatalog.d.ts.map +1 -0
- package/dist/src/tui/pluginCatalog.js +78 -0
- package/dist/src/tui/pluginCatalog.js.map +1 -0
- package/dist/src/tui/screen.d.ts +28 -0
- package/dist/src/tui/screen.d.ts.map +1 -0
- package/dist/src/tui/screen.js +119 -0
- package/dist/src/tui/screen.js.map +1 -0
- package/dist/src/tui/selection.d.ts +9 -0
- package/dist/src/tui/selection.d.ts.map +1 -0
- package/dist/src/tui/selection.js +16 -0
- package/dist/src/tui/selection.js.map +1 -0
- package/dist/src/tui/transcript.d.ts +41 -0
- package/dist/src/tui/transcript.d.ts.map +1 -0
- package/dist/src/tui/transcript.js +147 -0
- package/dist/src/tui/transcript.js.map +1 -0
- package/dist/src/types.d.ts +118 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actoviqModelApi.d.ts","sourceRoot":"","sources":["../../../src/runtime/actoviqModelApi.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpG,qBAAa,eAAgB,YAAW,QAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,qBAAqB;IAEpD,aAAa,CAAC,OAAO,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"actoviqModelApi.d.ts","sourceRoot":"","sources":["../../../src/runtime/actoviqModelApi.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpG,qBAAa,eAAgB,YAAW,QAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,qBAAqB;IAEpD,aAAa,CAAC,OAAO,EAAE,YAAY;IAgBzC,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,iBAAiB;CAexD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,QAAQ,CAS7E"}
|
|
@@ -5,12 +5,28 @@ export class ActoviqModelApi {
|
|
|
5
5
|
this.client = client;
|
|
6
6
|
}
|
|
7
7
|
async createMessage(request) {
|
|
8
|
-
const { signal, ...body } = request;
|
|
9
|
-
return this.client.messages.create(
|
|
8
|
+
const { signal, effort, ...body } = request;
|
|
9
|
+
return this.client.messages.create({
|
|
10
|
+
...body,
|
|
11
|
+
...(effort ? { output_config: { effort } } : {}),
|
|
12
|
+
}, signal || effort
|
|
13
|
+
? {
|
|
14
|
+
signal,
|
|
15
|
+
...(effort ? { betas: ['effort-2025-11-24'] } : {}),
|
|
16
|
+
}
|
|
17
|
+
: undefined);
|
|
10
18
|
}
|
|
11
19
|
streamMessage(request) {
|
|
12
|
-
const { signal, ...body } = request;
|
|
13
|
-
return this.client.messages.stream(
|
|
20
|
+
const { signal, effort, ...body } = request;
|
|
21
|
+
return this.client.messages.stream({
|
|
22
|
+
...body,
|
|
23
|
+
...(effort ? { output_config: { effort } } : {}),
|
|
24
|
+
}, signal || effort
|
|
25
|
+
? {
|
|
26
|
+
signal,
|
|
27
|
+
...(effort ? { betas: ['effort-2025-11-24'] } : {}),
|
|
28
|
+
}
|
|
29
|
+
: undefined);
|
|
14
30
|
}
|
|
15
31
|
}
|
|
16
32
|
export function createActoviqModelApi(config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actoviqModelApi.js","sourceRoot":"","sources":["../../../src/runtime/actoviqModelApi.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,uBAAuB,CAAC;AAI1D,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,MAA6B;QAA7B,WAAM,GAAN,MAAM,CAAuB;IAAG,CAAC;IAE9D,KAAK,CAAC,aAAa,CAAC,OAAqB;QACvC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"actoviqModelApi.js","sourceRoot":"","sources":["../../../src/runtime/actoviqModelApi.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,uBAAuB,CAAC;AAI1D,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,MAA6B;QAA7B,WAAM,GAAN,MAAM,CAAuB;IAAG,CAAC;IAE9D,KAAK,CAAC,aAAa,CAAC,OAAqB;QACvC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAChC;YACE,GAAG,IAAI;YACP,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,EACD,MAAM,IAAI,MAAM;YACd,CAAC,CAAC;gBACE,MAAM;gBACN,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpD;YACH,CAAC,CAAC,SAAS,CACd,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,OAAqB;QACjC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAChC;YACE,GAAG,IAAI;YACP,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,EACD,MAAM,IAAI,MAAM;YACd,CAAC,CAAC;gBACE,MAAM;gBACN,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpD;YACH,CAAC,CAAC,SAAS,CACd,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;QACnC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;QAC/B,OAAO,EAAE,MAAM,CAAC,SAAS;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC,CAAC;IACH,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ActoviqCanUseTool, ActoviqPermissionDecision, ActoviqPermissionMode, ActoviqPermissionRule, ActoviqToolApprover, ActoviqToolClassifier } from '../types.js';
|
|
2
|
-
|
|
2
|
+
interface PermissionInput {
|
|
3
3
|
mode: ActoviqPermissionMode;
|
|
4
4
|
rules: ActoviqPermissionRule[];
|
|
5
5
|
classifier?: ActoviqToolClassifier;
|
|
@@ -7,6 +7,7 @@ export declare function decideActoviqToolPermission(input: {
|
|
|
7
7
|
canUseTool?: ActoviqCanUseTool;
|
|
8
8
|
adapter?: {
|
|
9
9
|
isReadOnly?: (input?: unknown) => boolean;
|
|
10
|
+
isDestructive?: (input?: unknown) => boolean;
|
|
10
11
|
requiresUserInteraction?: () => boolean;
|
|
11
12
|
checkPermissions?: (context: {
|
|
12
13
|
mode: ActoviqPermissionMode;
|
|
@@ -22,5 +23,7 @@ export declare function decideActoviqToolPermission(input: {
|
|
|
22
23
|
prompt: string;
|
|
23
24
|
toolInput: unknown;
|
|
24
25
|
iteration: number;
|
|
25
|
-
}
|
|
26
|
+
}
|
|
27
|
+
export declare function decideActoviqToolPermission(input: PermissionInput): Promise<ActoviqPermissionDecision>;
|
|
28
|
+
export {};
|
|
26
29
|
//# sourceMappingURL=actoviqPermissions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actoviqPermissions.d.ts","sourceRoot":"","sources":["../../../src/runtime/actoviqPermissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"actoviqPermissions.d.ts","sourceRoot":"","sources":["../../../src/runtime/actoviqPermissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AA+BrB,UAAU,eAAe;IACvB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;QAC1C,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;QAC7C,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC;QACxC,gBAAgB,CAAC,EAAE,CACjB,OAAO,EAAE;YAAE,IAAI,EAAE,qBAAqB,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,KACxE,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;KACjF,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAqBD,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,yBAAyB,CAAC,CA+SpC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { nowIso } from './helpers.js';
|
|
2
2
|
import { checkSafety } from './safetyChecks.js';
|
|
3
|
+
const FILE_EDIT_TOOLS = new Set(['Write', 'Edit', 'NotebookEdit']);
|
|
3
4
|
function escapeRegExp(value) {
|
|
4
5
|
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
5
6
|
}
|
|
@@ -15,22 +16,24 @@ function matchesRule(rule, publicName, input) {
|
|
|
15
16
|
}
|
|
16
17
|
return wildcardToRegExp(rule.matcher).test(JSON.stringify(input ?? {}));
|
|
17
18
|
}
|
|
19
|
+
function decision(input, behavior, reason, source, timestamp, matchedRule) {
|
|
20
|
+
return {
|
|
21
|
+
toolName: input.toolName,
|
|
22
|
+
publicName: input.publicName,
|
|
23
|
+
behavior,
|
|
24
|
+
reason,
|
|
25
|
+
source,
|
|
26
|
+
matchedRule,
|
|
27
|
+
timestamp,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
18
30
|
export async function decideActoviqToolPermission(input) {
|
|
19
31
|
const timestamp = nowIso();
|
|
20
|
-
|
|
21
|
-
|
|
32
|
+
const denyRule = input.rules.find(rule => rule.behavior === 'deny' &&
|
|
33
|
+
matchesRule(rule, input.publicName, input.toolInput));
|
|
22
34
|
if (denyRule) {
|
|
23
|
-
return {
|
|
24
|
-
toolName: input.toolName,
|
|
25
|
-
publicName: input.publicName,
|
|
26
|
-
behavior: 'deny',
|
|
27
|
-
reason: `Denied by permission rule ${denyRule.toolName}.`,
|
|
28
|
-
source: 'rule',
|
|
29
|
-
matchedRule: denyRule.toolName,
|
|
30
|
-
timestamp,
|
|
31
|
-
};
|
|
35
|
+
return decision(input, 'deny', `Denied by permission rule ${denyRule.toolName}.`, 'rule', timestamp, denyRule.toolName);
|
|
32
36
|
}
|
|
33
|
-
// ── Step 2: Safety checks ─────────────────────────────────────
|
|
34
37
|
const safetyResult = checkSafety({
|
|
35
38
|
toolName: input.toolName,
|
|
36
39
|
publicName: input.publicName,
|
|
@@ -38,67 +41,47 @@ export async function decideActoviqToolPermission(input) {
|
|
|
38
41
|
workDir: input.workDir,
|
|
39
42
|
});
|
|
40
43
|
if (safetyResult.blocked) {
|
|
41
|
-
return
|
|
42
|
-
toolName: input.toolName,
|
|
43
|
-
publicName: input.publicName,
|
|
44
|
-
behavior: 'deny',
|
|
45
|
-
reason: safetyResult.reason ?? 'Blocked by safety check.',
|
|
46
|
-
source: 'mode',
|
|
47
|
-
timestamp,
|
|
48
|
-
};
|
|
44
|
+
return decision(input, 'deny', safetyResult.reason ?? 'Blocked by safety check.', 'mode', timestamp);
|
|
49
45
|
}
|
|
50
|
-
// ── Step 3: Tool-specific checkPermissions ────────────────────
|
|
51
46
|
if (input.adapter?.checkPermissions) {
|
|
52
|
-
const
|
|
47
|
+
const toolDecision = await input.adapter.checkPermissions({
|
|
53
48
|
mode: input.mode,
|
|
54
49
|
runId: input.runId,
|
|
55
50
|
sessionId: input.sessionId,
|
|
56
51
|
});
|
|
57
|
-
if (
|
|
58
|
-
return {
|
|
59
|
-
toolName: input.toolName,
|
|
60
|
-
publicName: input.publicName,
|
|
61
|
-
behavior: 'deny',
|
|
62
|
-
reason: `Tool ${input.publicName} denied via checkPermissions.`,
|
|
63
|
-
source: 'mode',
|
|
64
|
-
timestamp,
|
|
65
|
-
};
|
|
52
|
+
if (toolDecision === 'deny') {
|
|
53
|
+
return decision(input, 'deny', `Tool ${input.publicName} denied via checkPermissions.`, 'mode', timestamp);
|
|
66
54
|
}
|
|
67
|
-
if (
|
|
68
|
-
return {
|
|
69
|
-
toolName: input.toolName,
|
|
70
|
-
publicName: input.publicName,
|
|
71
|
-
behavior: 'allow',
|
|
72
|
-
reason: `Tool ${input.publicName} allowed via checkPermissions.`,
|
|
73
|
-
source: 'mode',
|
|
74
|
-
timestamp,
|
|
75
|
-
};
|
|
55
|
+
if (toolDecision === 'allow') {
|
|
56
|
+
return decision(input, 'allow', `Tool ${input.publicName} allowed via checkPermissions.`, 'mode', timestamp);
|
|
76
57
|
}
|
|
77
|
-
if (
|
|
78
|
-
return resolveActoviqAskPermission(input, {
|
|
79
|
-
toolName: input.toolName,
|
|
80
|
-
publicName: input.publicName,
|
|
81
|
-
behavior: 'deny',
|
|
82
|
-
reason: `Tool ${input.publicName} requires approval via checkPermissions.`,
|
|
83
|
-
source: 'mode',
|
|
84
|
-
timestamp,
|
|
85
|
-
}, timestamp);
|
|
58
|
+
if (toolDecision === 'ask') {
|
|
59
|
+
return resolveActoviqAskPermission(input, decision(input, 'deny', `Tool ${input.publicName} requires approval via checkPermissions.`, 'mode', timestamp), timestamp);
|
|
86
60
|
}
|
|
87
61
|
}
|
|
88
|
-
|
|
89
|
-
|
|
62
|
+
const askRule = input.rules.find(rule => rule.behavior === 'ask' &&
|
|
63
|
+
matchesRule(rule, input.publicName, input.toolInput));
|
|
90
64
|
if (askRule) {
|
|
91
|
-
return resolveActoviqAskPermission(input, {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
65
|
+
return resolveActoviqAskPermission(input, decision(input, 'deny', `Tool ${input.publicName} requires approval before execution.`, 'rule', timestamp, askRule.toolName), timestamp);
|
|
66
|
+
}
|
|
67
|
+
if (input.adapter?.requiresUserInteraction?.()) {
|
|
68
|
+
return resolveActoviqAskPermission(input, decision(input, 'deny', `Tool ${input.publicName} requires interactive approval.`, 'mode', timestamp), timestamp);
|
|
69
|
+
}
|
|
70
|
+
if (input.mode === 'bypassPermissions') {
|
|
71
|
+
return decision(input, 'allow', 'Bypass-permissions mode allows tool execution.', 'mode', timestamp);
|
|
72
|
+
}
|
|
73
|
+
const allowRule = input.rules.find(rule => rule.behavior === 'allow' &&
|
|
74
|
+
matchesRule(rule, input.publicName, input.toolInput));
|
|
75
|
+
if (allowRule) {
|
|
76
|
+
return decision(input, 'allow', `Allowed by permission rule ${allowRule.toolName}.`, 'rule', timestamp, allowRule.toolName);
|
|
77
|
+
}
|
|
78
|
+
const readOnly = input.adapter?.isReadOnly?.(input.toolInput) ?? false;
|
|
79
|
+
if (readOnly) {
|
|
80
|
+
return decision(input, 'allow', `${input.mode} mode allows read-only tool execution.`, 'mode', timestamp);
|
|
81
|
+
}
|
|
82
|
+
if (input.mode === 'acceptEdits' && FILE_EDIT_TOOLS.has(input.publicName)) {
|
|
83
|
+
return decision(input, 'allow', 'acceptEdits mode allows workspace file edits.', 'mode', timestamp);
|
|
100
84
|
}
|
|
101
|
-
// ── Step 5: Classifier ────────────────────────────────────────
|
|
102
85
|
if (input.classifier) {
|
|
103
86
|
const outcome = await input.classifier({
|
|
104
87
|
runId: input.runId,
|
|
@@ -110,40 +93,16 @@ export async function decideActoviqToolPermission(input) {
|
|
|
110
93
|
prompt: input.prompt,
|
|
111
94
|
iteration: input.iteration,
|
|
112
95
|
});
|
|
113
|
-
if (outcome) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
timestamp,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
if (outcome.behavior === 'ask') {
|
|
125
|
-
return resolveActoviqAskPermission(input, {
|
|
126
|
-
toolName: input.toolName,
|
|
127
|
-
publicName: input.publicName,
|
|
128
|
-
behavior: 'deny',
|
|
129
|
-
reason: outcome.reason,
|
|
130
|
-
source: 'classifier',
|
|
131
|
-
timestamp,
|
|
132
|
-
}, timestamp);
|
|
133
|
-
}
|
|
134
|
-
if (outcome.behavior === 'allow') {
|
|
135
|
-
return {
|
|
136
|
-
toolName: input.toolName,
|
|
137
|
-
publicName: input.publicName,
|
|
138
|
-
behavior: 'allow',
|
|
139
|
-
reason: outcome.reason,
|
|
140
|
-
source: 'classifier',
|
|
141
|
-
timestamp,
|
|
142
|
-
};
|
|
143
|
-
}
|
|
96
|
+
if (outcome?.behavior === 'allow') {
|
|
97
|
+
return decision(input, 'allow', outcome.reason, 'classifier', timestamp);
|
|
98
|
+
}
|
|
99
|
+
if (outcome?.behavior === 'deny') {
|
|
100
|
+
return decision(input, 'deny', outcome.reason, 'classifier', timestamp);
|
|
101
|
+
}
|
|
102
|
+
if (outcome?.behavior === 'ask') {
|
|
103
|
+
return resolveActoviqAskPermission(input, decision(input, 'deny', outcome.reason, 'classifier', timestamp), timestamp);
|
|
144
104
|
}
|
|
145
105
|
}
|
|
146
|
-
// ── Step 6: canUseTool callback ────────────────────────────────
|
|
147
106
|
if (input.canUseTool) {
|
|
148
107
|
const outcome = await input.canUseTool({
|
|
149
108
|
runId: input.runId,
|
|
@@ -155,106 +114,44 @@ export async function decideActoviqToolPermission(input) {
|
|
|
155
114
|
prompt: input.prompt,
|
|
156
115
|
iteration: input.iteration,
|
|
157
116
|
});
|
|
158
|
-
if (outcome) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
timestamp,
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
if (outcome.behavior === 'ask') {
|
|
170
|
-
return resolveActoviqAskPermission(input, {
|
|
171
|
-
toolName: input.toolName,
|
|
172
|
-
publicName: input.publicName,
|
|
173
|
-
behavior: 'deny',
|
|
174
|
-
reason: outcome.reason ?? `Tool ${input.publicName} requires approval.`,
|
|
175
|
-
source: 'canUseTool',
|
|
176
|
-
timestamp,
|
|
177
|
-
}, timestamp);
|
|
178
|
-
}
|
|
179
|
-
return {
|
|
180
|
-
toolName: input.toolName,
|
|
181
|
-
publicName: input.publicName,
|
|
182
|
-
behavior: 'allow',
|
|
183
|
-
reason: outcome.reason ?? `Allowed by canUseTool.`,
|
|
184
|
-
source: 'canUseTool',
|
|
185
|
-
timestamp,
|
|
186
|
-
};
|
|
117
|
+
if (outcome?.behavior === 'allow') {
|
|
118
|
+
return decision(input, 'allow', outcome.reason ?? 'Allowed by canUseTool.', 'canUseTool', timestamp);
|
|
119
|
+
}
|
|
120
|
+
if (outcome?.behavior === 'deny') {
|
|
121
|
+
return decision(input, 'deny', outcome.reason ?? 'Denied by canUseTool.', 'canUseTool', timestamp);
|
|
122
|
+
}
|
|
123
|
+
if (outcome?.behavior === 'ask') {
|
|
124
|
+
return resolveActoviqAskPermission(input, decision(input, 'deny', outcome.reason ?? `Tool ${input.publicName} requires approval.`, 'canUseTool', timestamp), timestamp);
|
|
187
125
|
}
|
|
188
126
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
if (
|
|
192
|
-
return
|
|
193
|
-
toolName: input.toolName,
|
|
194
|
-
publicName: input.publicName,
|
|
195
|
-
behavior: 'allow',
|
|
196
|
-
reason: `Allowed by permission rule ${allowRule.toolName}.`,
|
|
197
|
-
source: 'rule',
|
|
198
|
-
matchedRule: allowRule.toolName,
|
|
199
|
-
timestamp,
|
|
200
|
-
};
|
|
127
|
+
const destructive = input.adapter?.isDestructive?.(input.toolInput) ??
|
|
128
|
+
(input.adapter?.isReadOnly ? !readOnly : false);
|
|
129
|
+
if (input.mode === 'plan' && destructive) {
|
|
130
|
+
return decision(input, 'deny', 'Plan mode blocks mutating tools until the plan is approved.', 'mode', timestamp);
|
|
201
131
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
return {
|
|
206
|
-
toolName: input.toolName,
|
|
207
|
-
publicName: input.publicName,
|
|
208
|
-
behavior: 'allow',
|
|
209
|
-
reason: 'Bypass-permissions mode allows tool execution.',
|
|
210
|
-
source: 'mode',
|
|
211
|
-
timestamp,
|
|
212
|
-
};
|
|
213
|
-
case 'plan': {
|
|
214
|
-
const readOnly = input.adapter?.isReadOnly?.(input.toolInput) ?? false;
|
|
215
|
-
return {
|
|
216
|
-
toolName: input.toolName,
|
|
217
|
-
publicName: input.publicName,
|
|
218
|
-
behavior: readOnly ? 'allow' : 'deny',
|
|
219
|
-
reason: readOnly
|
|
220
|
-
? 'Plan mode allows read-only tool execution.'
|
|
221
|
-
: 'Plan mode blocks mutating tools until the plan is approved.',
|
|
222
|
-
source: 'mode',
|
|
223
|
-
timestamp,
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
case 'acceptEdits': {
|
|
227
|
-
const classified = input.adapter?.isReadOnly !== undefined;
|
|
228
|
-
return {
|
|
229
|
-
toolName: input.toolName,
|
|
230
|
-
publicName: input.publicName,
|
|
231
|
-
behavior: classified ? 'allow' : 'deny',
|
|
232
|
-
reason: classified
|
|
233
|
-
? 'acceptEdits mode allows classified tools.'
|
|
234
|
-
: 'acceptEdits mode blocks unsupported high-risk tools.',
|
|
235
|
-
source: 'mode',
|
|
236
|
-
timestamp,
|
|
237
|
-
};
|
|
132
|
+
if (destructive) {
|
|
133
|
+
if (!input.approver) {
|
|
134
|
+
return decision(input, 'deny', `${input.mode} mode requires approval for mutating tools, but no approver is available.`, 'mode', timestamp);
|
|
238
135
|
}
|
|
239
|
-
|
|
240
|
-
case 'default':
|
|
241
|
-
default:
|
|
242
|
-
return {
|
|
243
|
-
toolName: input.toolName,
|
|
244
|
-
publicName: input.publicName,
|
|
245
|
-
behavior: 'allow',
|
|
246
|
-
reason: `${input.mode} mode allows tool execution by default.`,
|
|
247
|
-
source: 'mode',
|
|
248
|
-
timestamp,
|
|
249
|
-
};
|
|
136
|
+
return resolveActoviqAskPermission(input, decision(input, 'deny', `${input.mode} mode requires approval for mutating tools.`, 'mode', timestamp), timestamp);
|
|
250
137
|
}
|
|
138
|
+
if (input.mode !== 'plan' && input.adapter?.isReadOnly === undefined) {
|
|
139
|
+
return decision(input, 'allow', `${input.mode} mode allows tools that do not declare a mutation classification.`, 'mode', timestamp);
|
|
140
|
+
}
|
|
141
|
+
if (input.mode === 'plan') {
|
|
142
|
+
return decision(input, 'deny', 'Plan mode blocks mutating tools until the plan is approved.', 'mode', timestamp);
|
|
143
|
+
}
|
|
144
|
+
if (!input.approver) {
|
|
145
|
+
return decision(input, 'allow', `${input.mode} mode allows unclassified tools when no interactive approver is configured.`, 'mode', timestamp);
|
|
146
|
+
}
|
|
147
|
+
return resolveActoviqAskPermission(input, decision(input, 'deny', `${input.mode} mode requires approval for mutating or unclassified tools.`, 'mode', timestamp), timestamp);
|
|
251
148
|
}
|
|
252
149
|
async function resolveActoviqAskPermission(input, baseDecision, timestamp) {
|
|
253
150
|
if (!input.approver) {
|
|
254
151
|
return {
|
|
255
152
|
...baseDecision,
|
|
256
153
|
behavior: 'deny',
|
|
257
|
-
reason: `${baseDecision.reason} Approval is required, but
|
|
154
|
+
reason: `${baseDecision.reason} Approval is required, but no approver is available.`,
|
|
258
155
|
timestamp,
|
|
259
156
|
};
|
|
260
157
|
}
|
|
@@ -273,17 +170,9 @@ async function resolveActoviqAskPermission(input, baseDecision, timestamp) {
|
|
|
273
170
|
source: baseDecision.source === 'rule' ? 'rule' : 'classifier',
|
|
274
171
|
matchedRule: baseDecision.matchedRule,
|
|
275
172
|
});
|
|
276
|
-
return
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
reason: approval?.reason ??
|
|
281
|
-
(approval?.behavior === 'allow'
|
|
282
|
-
? `Approved ${baseDecision.publicName} for execution.`
|
|
283
|
-
: `${baseDecision.reason} Approval was denied.`),
|
|
284
|
-
source: 'approver',
|
|
285
|
-
matchedRule: baseDecision.matchedRule,
|
|
286
|
-
timestamp,
|
|
287
|
-
};
|
|
173
|
+
return decision(input, approval?.behavior === 'allow' ? 'allow' : 'deny', approval?.reason ??
|
|
174
|
+
(approval?.behavior === 'allow'
|
|
175
|
+
? `Approved ${baseDecision.publicName} for execution.`
|
|
176
|
+
: `${baseDecision.reason} Approval was denied.`), 'approver', timestamp, baseDecision.matchedRule);
|
|
288
177
|
}
|
|
289
178
|
//# sourceMappingURL=actoviqPermissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actoviqPermissions.js","sourceRoot":"","sources":["../../../src/runtime/actoviqPermissions.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,IAAI,MAAM,CACf,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC1E,GAAG,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,IAA2B,EAC3B,UAAkB,EAClB,KAAc;IAEd,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,
|
|
1
|
+
{"version":3,"file":"actoviqPermissions.js","sourceRoot":"","sources":["../../../src/runtime/actoviqPermissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ActoviqSessionPermissionState } from '../types.js';
|
|
2
|
+
export declare const ACTOVIQ_SESSION_PERMISSION_STATE_KEY = "__actoviqPermissionState";
|
|
3
|
+
export declare function getPersistedActoviqSessionPermissionState(metadata: Record<string, unknown> | undefined): ActoviqSessionPermissionState;
|
|
4
|
+
export declare function serializeActoviqSessionPermissionState(state: ActoviqSessionPermissionState): Record<string, unknown>;
|
|
5
|
+
//# sourceMappingURL=actoviqSessionPermissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actoviqSessionPermissions.d.ts","sourceRoot":"","sources":["../../../src/runtime/actoviqSessionPermissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,6BAA6B,EAC9B,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,oCAAoC,6BAA6B,CAAC;AAU/E,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC5C,6BAA6B,CAiC/B;AAED,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,6BAA6B,GACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const ACTOVIQ_SESSION_PERMISSION_STATE_KEY = '__actoviqPermissionState';
|
|
2
|
+
const PERMISSION_MODES = new Set([
|
|
3
|
+
'default',
|
|
4
|
+
'acceptEdits',
|
|
5
|
+
'bypassPermissions',
|
|
6
|
+
'plan',
|
|
7
|
+
'auto',
|
|
8
|
+
]);
|
|
9
|
+
export function getPersistedActoviqSessionPermissionState(metadata) {
|
|
10
|
+
const raw = metadata?.[ACTOVIQ_SESSION_PERMISSION_STATE_KEY];
|
|
11
|
+
if (!raw || typeof raw !== 'object') {
|
|
12
|
+
return { permissions: [] };
|
|
13
|
+
}
|
|
14
|
+
const record = raw;
|
|
15
|
+
const mode = typeof record.mode === 'string' && PERMISSION_MODES.has(record.mode)
|
|
16
|
+
? record.mode
|
|
17
|
+
: undefined;
|
|
18
|
+
const permissions = Array.isArray(record.permissions)
|
|
19
|
+
? record.permissions.flatMap((entry) => {
|
|
20
|
+
if (!entry || typeof entry !== 'object') {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
const rule = entry;
|
|
24
|
+
if (typeof rule.toolName !== 'string' ||
|
|
25
|
+
(rule.behavior !== 'allow' && rule.behavior !== 'deny' && rule.behavior !== 'ask')) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
return [{
|
|
29
|
+
toolName: rule.toolName,
|
|
30
|
+
behavior: rule.behavior,
|
|
31
|
+
matcher: typeof rule.matcher === 'string' ? rule.matcher : undefined,
|
|
32
|
+
source: typeof rule.source === 'string' ? rule.source : undefined,
|
|
33
|
+
}];
|
|
34
|
+
})
|
|
35
|
+
: [];
|
|
36
|
+
return { mode, permissions };
|
|
37
|
+
}
|
|
38
|
+
export function serializeActoviqSessionPermissionState(state) {
|
|
39
|
+
return {
|
|
40
|
+
mode: state.mode,
|
|
41
|
+
permissions: state.permissions.map(rule => ({ ...rule })),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=actoviqSessionPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actoviqSessionPermissions.js","sourceRoot":"","sources":["../../../src/runtime/actoviqSessionPermissions.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,oCAAoC,GAAG,0BAA0B,CAAC;AAE/E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAwB;IACtD,SAAS;IACT,aAAa;IACb,mBAAmB;IACnB,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,UAAU,yCAAyC,CACvD,QAA6C;IAE7C,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC,oCAAoC,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,MAAM,IAAI,GACR,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAA6B,CAAC;QAC3F,CAAC,CAAE,MAAM,CAAC,IAA8B;QACxC,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;QACnD,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAA2B,EAAE;YAC5D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACxC,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,IAAI,GAAG,KAAgC,CAAC;YAC9C,IACE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBACjC,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,EAClF,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,CAAC;oBACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;oBACpE,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;iBAClE,CAAC,CAAC;QACL,CAAC,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,KAAoC;IAEpC,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;KAC1D,CAAC;AACJ,CAAC"}
|