pi-fabric 0.62.0 → 0.62.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/dist/capture/catalog.d.ts +3 -2
- package/dist/capture/catalog.d.ts.map +1 -1
- package/dist/capture/interceptor.d.ts +1 -1
- package/dist/capture/interceptor.d.ts.map +1 -1
- package/dist/capture/wrapper.d.ts +15 -0
- package/dist/capture/wrapper.d.ts.map +1 -0
- package/dist/chunks/{chunk-ZUQSDM5A.js → chunk-FDLTDTYJ.js} +106 -15
- package/dist/chunks/chunk-FDLTDTYJ.js.map +7 -0
- package/dist/chunks/{chunk-NFC54EHJ.js → chunk-OQP7IV6U.js} +2 -2
- package/dist/chunks/chunk-SOBEXOWK.js +38 -0
- package/dist/chunks/chunk-SOBEXOWK.js.map +7 -0
- package/dist/chunks/{chunk-PCTZDCIV.js → chunk-X2AL6J4G.js} +2 -2
- package/dist/chunks/{chunk-2SF432HH.js → chunk-YWV4KFMB.js} +196 -8
- package/dist/chunks/chunk-YWV4KFMB.js.map +7 -0
- package/dist/chunks/{fabric-runtime-state-KOP2OIZN.js → fabric-runtime-state-HVFOEZ32.js} +12 -10
- package/dist/chunks/fabric-runtime-state-HVFOEZ32.js.map +7 -0
- package/dist/chunks/{settings-6PTZLKP6.js → settings-RDYXA7V6.js} +7 -7
- package/dist/chunks/settings-RDYXA7V6.js.map +7 -0
- package/dist/compaction/hook.d.ts.map +1 -1
- package/dist/compaction/hook.js +1 -1
- package/dist/core/agent-dir.d.ts +2 -0
- package/dist/core/agent-dir.d.ts.map +1 -0
- package/dist/core/approval-controller.d.ts +1 -1
- package/dist/core/approval-controller.d.ts.map +1 -1
- package/dist/core/auto-approval-classifier.d.ts +1 -1
- package/dist/core/auto-approval-classifier.d.ts.map +1 -1
- package/dist/core/session-context.d.ts +14 -0
- package/dist/core/session-context.d.ts.map +1 -0
- package/dist/core/skill-block.d.ts +10 -0
- package/dist/core/skill-block.d.ts.map +1 -0
- package/dist/core/skill-prompt.d.ts +1 -1
- package/dist/core/skill-prompt.d.ts.map +1 -1
- package/dist/core/token-math.d.ts +16 -0
- package/dist/core/token-math.d.ts.map +1 -0
- package/dist/fabric-exec-tool.d.ts +1 -1
- package/dist/fabric-exec-tool.d.ts.map +1 -1
- package/dist/fabric-runtime-state.d.ts +1 -1
- package/dist/fabric-runtime-state.d.ts.map +1 -1
- package/dist/fabric-state.d.ts +1 -1
- package/dist/fabric-state.d.ts.map +1 -1
- package/dist/index.js +22 -21
- package/dist/index.js.map +3 -3
- package/dist/residency/host.js +3 -3
- package/dist/ui/dynamic-border.d.ts +8 -0
- package/dist/ui/dynamic-border.d.ts.map +1 -0
- package/dist/ui/settings.d.ts +1 -1
- package/dist/ui/settings.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/chunk-2SF432HH.js.map +0 -7
- package/dist/chunks/chunk-ZUQSDM5A.js.map +0 -7
- package/dist/chunks/fabric-runtime-state-KOP2OIZN.js.map +0 -7
- package/dist/chunks/settings-6PTZLKP6.js.map +0 -7
- /package/dist/chunks/{chunk-NFC54EHJ.js.map → chunk-OQP7IV6U.js.map} +0 -0
- /package/dist/chunks/{chunk-PCTZDCIV.js.map → chunk-X2AL6J4G.js.map} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ExtensionRunner, RegisteredTool, SourceInfo, ToolDefinition } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import { wrapRegisteredToolForCapture } from "./wrapper.js";
|
|
2
3
|
import type { FabricToolCaptureConfig } from "../config.js";
|
|
3
4
|
import type { FabricRisk } from "../protocol.js";
|
|
4
5
|
export interface CapturedToolEntry {
|
|
@@ -7,7 +8,7 @@ export interface CapturedToolEntry {
|
|
|
7
8
|
registeredTool: RegisteredTool;
|
|
8
9
|
sourceInfo: SourceInfo;
|
|
9
10
|
runner: ExtensionRunner;
|
|
10
|
-
wrappedTool: ReturnType<typeof
|
|
11
|
+
wrappedTool: ReturnType<typeof wrapRegisteredToolForCapture>;
|
|
11
12
|
risk: FabricRisk;
|
|
12
13
|
}
|
|
13
14
|
export declare class CapturedToolCatalog {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/capture/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/capture/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1C,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;IAC7D,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,qBAAa,mBAAmB;;IAU9B,IAAI,MAAM,IAAI,eAAe,GAAG,SAAS,CAExC;IAED,OAAO,CACL,eAAe,EAAE,cAAc,EAAE,EACjC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,uBAAuB,EAC/B,aAAa,EAAE,MAAM,GACpB,IAAI;IAyBP,KAAK,IAAI,IAAI;IAKb,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAK3C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIhD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAMxC,IAAI,IAAI,iBAAiB,EAAE;IAI3B,IAAI,IAAI,IAAI,MAAM,CAEjB;CAOF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ToolDefinition } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
import { type FabricToolCaptureConfig } from "../config.js";
|
|
3
3
|
import { CapturedToolCatalog } from "./catalog.js";
|
|
4
4
|
export interface RegisteredToolCaptureController {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/capture/interceptor.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/capture/interceptor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,cAAc,EACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAyB,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAQnD,MAAM,WAAW,+BAA+B;IAC9C,SAAS,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACjD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,gBAAgB,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,EAAE,uBAAuB,CAAC;IAOxC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AA0GD,eAAO,MAAM,4BAA4B,GACvC,SAAS,4BAA4B,KACpC,OAAO,CAAC,+BAA+B,CAuCzC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ExtensionRunner, RegisteredTool } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
type WrappedExecute = (toolCallId: unknown, params: unknown, signal: unknown, onUpdate: (update: any) => void, ctx?: unknown) => Promise<any>;
|
|
3
|
+
export interface WrappedRegisteredTool {
|
|
4
|
+
name: string;
|
|
5
|
+
label: string | undefined;
|
|
6
|
+
description: string | undefined;
|
|
7
|
+
parameters: unknown;
|
|
8
|
+
constrainedSampling: unknown;
|
|
9
|
+
prepareArguments: ((args: Record<string, unknown>) => unknown) | undefined;
|
|
10
|
+
executionMode: unknown;
|
|
11
|
+
execute: WrappedExecute;
|
|
12
|
+
}
|
|
13
|
+
export declare const wrapRegisteredToolForCapture: (registeredTool: RegisteredTool, runner: ExtensionRunner) => WrappedRegisteredTool;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../src/capture/wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAkB,MAAM,iCAAiC,CAAC;AAQvG,KAAK,cAAc,GAAG,CACpB,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,EAC/B,GAAG,CAAC,EAAE,OAAO,KACV,OAAO,CAAC,GAAG,CAAC,CAAC;AAElB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC3E,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;CACzB;AAoBD,eAAO,MAAM,4BAA4B,GACvC,gBAAgB,cAAc,EAC9B,QAAQ,eAAe,KACtB,qBA2BF,CAAC"}
|
|
@@ -4,12 +4,15 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
headlineArg
|
|
6
6
|
} from "./chunk-5A6GNO6K.js";
|
|
7
|
+
import {
|
|
8
|
+
DynamicBorder
|
|
9
|
+
} from "./chunk-SOBEXOWK.js";
|
|
7
10
|
import {
|
|
8
11
|
THINKING_DIGEST_CUSTOM_TYPE,
|
|
9
12
|
buildThinkingDigest,
|
|
10
13
|
snapshotHandoffSession,
|
|
11
14
|
thinkingTransferPolicy
|
|
12
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-X2AL6J4G.js";
|
|
13
16
|
import {
|
|
14
17
|
isFabricThinking
|
|
15
18
|
} from "./chunk-7B55UIZL.js";
|
|
@@ -27,10 +30,50 @@ import {
|
|
|
27
30
|
FabricTraceSafeError
|
|
28
31
|
} from "./chunk-HFYEEIXR.js";
|
|
29
32
|
|
|
33
|
+
// src/capture/wrapper.ts
|
|
34
|
+
var wrapToolDefinition = (definition, ctxFactory) => {
|
|
35
|
+
const execute = definition.execute;
|
|
36
|
+
return {
|
|
37
|
+
name: definition.name,
|
|
38
|
+
label: definition.label,
|
|
39
|
+
description: definition.description,
|
|
40
|
+
parameters: definition.parameters,
|
|
41
|
+
constrainedSampling: definition.constrainedSampling,
|
|
42
|
+
prepareArguments: definition.prepareArguments,
|
|
43
|
+
executionMode: definition.executionMode,
|
|
44
|
+
execute: (toolCallId, params, signal, onUpdate, ctx) => execute(toolCallId, params, signal, onUpdate, ctx ?? ctxFactory())
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
var wrapRegisteredToolForCapture = (registeredTool, runner) => {
|
|
48
|
+
const tool = wrapToolDefinition(
|
|
49
|
+
registeredTool.definition,
|
|
50
|
+
() => runner.createContext()
|
|
51
|
+
);
|
|
52
|
+
const execute = tool.execute;
|
|
53
|
+
return {
|
|
54
|
+
...tool,
|
|
55
|
+
execute: async (toolCallId, params, signal, onUpdate) => {
|
|
56
|
+
const activeBefore = runner.getActiveTools();
|
|
57
|
+
const result = await execute(toolCallId, params, signal, onUpdate);
|
|
58
|
+
const activeAfter = runner.getActiveTools();
|
|
59
|
+
if (!activeBefore.every((name) => activeAfter.includes(name))) {
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
const beforeNames = new Set(activeBefore);
|
|
63
|
+
const addedToolNames = activeAfter.filter((name) => !beforeNames.has(name));
|
|
64
|
+
if (addedToolNames.length === 0) {
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
const previous = result?.addedToolNames ?? [];
|
|
68
|
+
return {
|
|
69
|
+
...result,
|
|
70
|
+
addedToolNames: [.../* @__PURE__ */ new Set([...previous, ...addedToolNames])]
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
|
|
30
76
|
// src/capture/catalog.ts
|
|
31
|
-
import {
|
|
32
|
-
wrapRegisteredTool
|
|
33
|
-
} from "@earendil-works/pi-coding-agent";
|
|
34
77
|
var CapturedToolCatalog = class {
|
|
35
78
|
#tools = /* @__PURE__ */ new Map();
|
|
36
79
|
#listeners = /* @__PURE__ */ new Set();
|
|
@@ -59,7 +102,7 @@ var CapturedToolCatalog = class {
|
|
|
59
102
|
registeredTool,
|
|
60
103
|
sourceInfo,
|
|
61
104
|
runner,
|
|
62
|
-
wrappedTool:
|
|
105
|
+
wrappedTool: wrapRegisteredToolForCapture(registeredTool, runner),
|
|
63
106
|
risk: config.risks[definition.name] ?? config.defaultRisk
|
|
64
107
|
});
|
|
65
108
|
}
|
|
@@ -528,8 +571,42 @@ var runFabricHandoffAtBoundary = async (controller, runner, extension, pending,
|
|
|
528
571
|
}
|
|
529
572
|
};
|
|
530
573
|
|
|
574
|
+
// src/core/skill-block.ts
|
|
575
|
+
var escapeXml = (str) => str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
576
|
+
var formatSkillsForPrompt = (skills) => {
|
|
577
|
+
const visibleSkills = skills.filter((skill) => !skill.disableModelInvocation);
|
|
578
|
+
if (visibleSkills.length === 0) {
|
|
579
|
+
return "";
|
|
580
|
+
}
|
|
581
|
+
const lines = [
|
|
582
|
+
"\n\nThe following skills provide specialized instructions for specific tasks.",
|
|
583
|
+
"Use the read tool to load a skill's file when the task matches its description.",
|
|
584
|
+
"When a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.",
|
|
585
|
+
"",
|
|
586
|
+
"<available_skills>"
|
|
587
|
+
];
|
|
588
|
+
for (const skill of visibleSkills) {
|
|
589
|
+
lines.push(" <skill>");
|
|
590
|
+
lines.push(` <name>${escapeXml(skill.name)}</name>`);
|
|
591
|
+
lines.push(` <description>${escapeXml(skill.description)}</description>`);
|
|
592
|
+
lines.push(` <location>${escapeXml(skill.filePath)}</location>`);
|
|
593
|
+
lines.push(" </skill>");
|
|
594
|
+
}
|
|
595
|
+
lines.push("</available_skills>");
|
|
596
|
+
return lines.join("\n");
|
|
597
|
+
};
|
|
598
|
+
var parseSkillBlock = (text) => {
|
|
599
|
+
const match = text.match(/^<skill name="([^"]+)" location="([^"]+)">\n([\s\S]*?)\n<\/skill>(?:\n\n([\s\S]+))?$/);
|
|
600
|
+
if (!match) return null;
|
|
601
|
+
return {
|
|
602
|
+
name: match[1],
|
|
603
|
+
location: match[2],
|
|
604
|
+
content: match[3],
|
|
605
|
+
userMessage: match[4]?.trim() || void 0
|
|
606
|
+
};
|
|
607
|
+
};
|
|
608
|
+
|
|
531
609
|
// src/core/skill-dir.ts
|
|
532
|
-
import { parseSkillBlock } from "@earendil-works/pi-coding-agent";
|
|
533
610
|
import { homedir } from "node:os";
|
|
534
611
|
import path from "node:path";
|
|
535
612
|
var SKILL_DIR_MARKER = "<skill-dir>";
|
|
@@ -562,10 +639,6 @@ var expandSkillDirMarkersForRead = (content, args, cwd) => {
|
|
|
562
639
|
};
|
|
563
640
|
|
|
564
641
|
// src/core/approval-controller.ts
|
|
565
|
-
import {
|
|
566
|
-
DynamicBorder,
|
|
567
|
-
getSelectListTheme
|
|
568
|
-
} from "@earendil-works/pi-coding-agent";
|
|
569
642
|
import {
|
|
570
643
|
Container,
|
|
571
644
|
SelectList,
|
|
@@ -574,7 +647,7 @@ import {
|
|
|
574
647
|
} from "@earendil-works/pi-tui";
|
|
575
648
|
|
|
576
649
|
// src/core/auto-approval-classifier.ts
|
|
577
|
-
import {
|
|
650
|
+
import { Type } from "typebox";
|
|
578
651
|
var MAX_TRANSCRIPT_CHARS = 24e3;
|
|
579
652
|
var MAX_ARGUMENT_CHARS = 16e3;
|
|
580
653
|
var MAX_REASON_CHARS = 2e3;
|
|
@@ -633,13 +706,20 @@ var transcriptEvidence = (context) => {
|
|
|
633
706
|
const joined = evidence.join("\n\n");
|
|
634
707
|
return joined.length <= MAX_TRANSCRIPT_CHARS ? joined : joined.slice(joined.length - MAX_TRANSCRIPT_CHARS);
|
|
635
708
|
};
|
|
709
|
+
var completeSimpleLoader;
|
|
710
|
+
var loadCompleteSimple = () => {
|
|
711
|
+
completeSimpleLoader ??= import("@earendil-works/pi-ai/compat").then((module) => module.completeSimple);
|
|
712
|
+
return completeSimpleLoader;
|
|
713
|
+
};
|
|
636
714
|
var nativeProvider = (context, providerId) => {
|
|
637
715
|
const registry = context.modelRegistry;
|
|
638
716
|
return registry.getProvider?.(providerId);
|
|
639
717
|
};
|
|
640
|
-
var completeWithPiProvider = (context, model, request, options) => {
|
|
718
|
+
var completeWithPiProvider = async (context, model, request, options) => {
|
|
641
719
|
const provider = nativeProvider(context, model.provider);
|
|
642
|
-
|
|
720
|
+
if (provider) return provider.streamSimple(model, request, options).result();
|
|
721
|
+
const completeSimple = await loadCompleteSimple();
|
|
722
|
+
return completeSimple(model, request, options);
|
|
643
723
|
};
|
|
644
724
|
var configuredModel = (context, modelKey) => {
|
|
645
725
|
if (!modelKey) return context.model;
|
|
@@ -717,6 +797,16 @@ var FabricAutoApprovalClassifier = class {
|
|
|
717
797
|
};
|
|
718
798
|
|
|
719
799
|
// src/core/approval-controller.ts
|
|
800
|
+
var selectListThemeFor = (theme) => {
|
|
801
|
+
const apply = (name, text) => theme.fg(name, text);
|
|
802
|
+
return {
|
|
803
|
+
selectedPrefix: (text) => apply("accent", text),
|
|
804
|
+
selectedText: (text) => apply("accent", text),
|
|
805
|
+
description: (text) => apply("muted", text),
|
|
806
|
+
scrollInfo: (text) => apply("muted", text),
|
|
807
|
+
noMatch: (text) => apply("muted", text)
|
|
808
|
+
};
|
|
809
|
+
};
|
|
720
810
|
var inheritedRisks = () => {
|
|
721
811
|
const allowed = /* @__PURE__ */ new Set(["read", "write", "execute", "network", "agent"]);
|
|
722
812
|
return (process.env.PI_FABRIC_GRANTED_RISKS ?? "").split(",").filter((risk) => allowed.has(risk));
|
|
@@ -883,7 +973,7 @@ var ApprovalController = class {
|
|
|
883
973
|
description: "Block the requested action"
|
|
884
974
|
}
|
|
885
975
|
];
|
|
886
|
-
const list = new SelectList(items, items.length,
|
|
976
|
+
const list = new SelectList(items, items.length, selectListThemeFor(theme));
|
|
887
977
|
list.onSelect = (item) => done(item.value);
|
|
888
978
|
list.onCancel = () => done("deny");
|
|
889
979
|
container.addChild(list);
|
|
@@ -2330,6 +2420,7 @@ export {
|
|
|
2330
2420
|
claimFabricFsDriftHandoff,
|
|
2331
2421
|
settleInPlacePrewalk,
|
|
2332
2422
|
runFabricHandoffAtBoundary,
|
|
2423
|
+
formatSkillsForPrompt,
|
|
2333
2424
|
expandSkillDirMarkersInSkillBlock,
|
|
2334
2425
|
expandSkillDirMarkersForRead,
|
|
2335
2426
|
FabricAutoApprovalClassifier,
|
|
@@ -2356,4 +2447,4 @@ export {
|
|
|
2356
2447
|
resolveFabricIdentity,
|
|
2357
2448
|
MainAgentController
|
|
2358
2449
|
};
|
|
2359
|
-
//# sourceMappingURL=chunk-
|
|
2450
|
+
//# sourceMappingURL=chunk-FDLTDTYJ.js.map
|