jinzd-ai-cli 0.4.150 → 0.4.153
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/{auth-7KK5BOCA.js → auth-OI4YRVRG.js} +1 -1
- package/dist/{batch-KGBSTQU3.js → batch-DBRN4MCC.js} +2 -2
- package/dist/{chat-index-MY3DJTV3.js → chat-index-BE4TPLFH.js} +1 -1
- package/dist/{chat-index-JBF4ZIQI.js → chat-index-LUQWWLKO.js} +1 -1
- package/dist/{chunk-ONOVJIL2.js → chunk-AIZOARZY.js} +1 -1
- package/dist/{chunk-QXRDETAI.js → chunk-D62BVFP7.js} +1 -1
- package/dist/{chunk-PASCDYMH.js → chunk-D6U75FHP.js} +14 -10
- package/dist/{chunk-D5KUERWQ.js → chunk-EIIMBVXN.js} +3 -3
- package/dist/{chunk-V6L44Y3F.js → chunk-EYJQJZJ6.js} +1 -1
- package/dist/{chunk-O7NM4WTS.js → chunk-GXB7YKF2.js} +3 -1
- package/dist/{chunk-UQQJWHRV.js → chunk-HDSKW7Q3.js} +1 -1
- package/dist/{chunk-TUGKYLIV.js → chunk-LJPB4ZER.js} +1 -1
- package/dist/{chunk-YJ2CUK5O.js → chunk-M4GJOBWN.js} +2 -1
- package/dist/{chunk-OWPFDHKC.js → chunk-NXXNLLSG.js} +1 -0
- package/dist/{chunk-PCDBAZJK.js → chunk-OP3I24WL.js} +99 -24
- package/dist/{chunk-XYM3PCVR.js → chunk-OT2HLGSO.js} +1 -1
- package/dist/{chunk-7ZJN4KLV.js → chunk-RXM76HB7.js} +1 -2
- package/dist/{chunk-WJ32NAW3.js → chunk-T5VKNPLD.js} +1 -2
- package/dist/{chunk-G6LBSAVY.js → chunk-TURORFH2.js} +1 -1
- package/dist/{chunk-RCDS54ZC.js → chunk-UWW3EWER.js} +1 -1
- package/dist/{chunk-NKR53CPL.js → chunk-YKVFZLSI.js} +1 -1
- package/dist/{chunk-2DXY7UGF.js → chunk-ZWVIDFGY.js} +14 -10
- package/dist/{ci-XHNSTENI.js → ci-UEEUSELV.js} +4 -4
- package/dist/{constants-U2QQSUYK.js → constants-43EVHE2E.js} +1 -1
- package/dist/{doctor-cli-5LFGU2TS.js → doctor-cli-ZT674MCQ.js} +6 -6
- package/dist/electron-server.js +121 -39
- package/dist/{hub-OGEDS4X7.js → hub-MDQNJOMV.js} +61 -3
- package/dist/{hub-server-AUMVPNU6.js → hub-server-VPXCBWLA.js} +1 -1
- package/dist/index.js +28 -26
- package/dist/{run-tests-YSHH37SS.js → run-tests-DCT5LWBB.js} +1 -1
- package/dist/{run-tests-Q7COBDVK.js → run-tests-EYZ2JZ4X.js} +2 -2
- package/dist/{semantic-V37U4MCW.js → semantic-FKOEXY75.js} +2 -2
- package/dist/{semantic-IJKF5ZZC.js → semantic-GJJWTI3A.js} +2 -2
- package/dist/{server-J2GQRZP3.js → server-MQWFO2GJ.js} +8 -8
- package/dist/{server-5HDA5MNI.js → server-OIYBFKS2.js} +25 -21
- package/dist/{task-orchestrator-XBPAOLYD.js → task-orchestrator-BGQBNKAI.js} +8 -8
- package/dist/{vector-store-AK6J3RIA.js → vector-store-PLDSXF3V.js} +1 -1
- package/dist/{vector-store-MCQ77OOJ.js → vector-store-Z5OF4WWJ.js} +1 -1
- package/dist/web/client/app.js +2 -1
- package/dist/web/client/index.html +10 -6
- package/dist/web/client/sw.js +15 -26
- package/dist/web/client/vendor/daisyui-full.min.css +20 -0
- package/dist/web/client/vendor/github-dark.min.css +10 -0
- package/dist/web/client/vendor/github.min.css +10 -0
- package/dist/web/client/vendor/highlight.min.js +1213 -0
- package/dist/web/client/vendor/marked.min.js +69 -0
- package/dist/web/client/vendor/tailwind.js +83 -0
- package/package.json +172 -172
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
pathTokens,
|
|
6
6
|
rebuildSemanticIndex,
|
|
7
7
|
semanticSearch
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-HDSKW7Q3.js";
|
|
9
|
+
import "./chunk-ZWVIDFGY.js";
|
|
10
10
|
import "./chunk-KHYD3WXE.js";
|
|
11
11
|
import "./chunk-OVWE4E46.js";
|
|
12
12
|
import "./chunk-PDX44BCA.js";
|
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
pathTokens,
|
|
5
5
|
rebuildSemanticIndex,
|
|
6
6
|
semanticSearch
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-YKVFZLSI.js";
|
|
8
8
|
import "./chunk-DQ2OHJNF.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-D6U75FHP.js";
|
|
10
10
|
import "./chunk-JV5N65KN.js";
|
|
11
11
|
import "./chunk-3RG5ZIWI.js";
|
|
12
12
|
export {
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ToolRegistry
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-OP3I24WL.js";
|
|
5
|
+
import "./chunk-HDSKW7Q3.js";
|
|
6
|
+
import "./chunk-ZWVIDFGY.js";
|
|
7
|
+
import "./chunk-OT2HLGSO.js";
|
|
8
8
|
import {
|
|
9
9
|
runTool
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-EYJQJZJ6.js";
|
|
11
11
|
import {
|
|
12
12
|
getDangerLevel,
|
|
13
13
|
schemaToJsonSchema
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-NXXNLLSG.js";
|
|
15
15
|
import "./chunk-2ZD3YTVM.js";
|
|
16
16
|
import {
|
|
17
17
|
VERSION
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-D62BVFP7.js";
|
|
19
19
|
import "./chunk-4BKXL7SM.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-RXM76HB7.js";
|
|
21
21
|
import "./chunk-KHYD3WXE.js";
|
|
22
22
|
import "./chunk-VNNYHW6N.js";
|
|
23
23
|
import "./chunk-OVWE4E46.js";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
AuthManager,
|
|
4
4
|
TOKEN_EXPIRY_MS
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-GXB7YKF2.js";
|
|
6
6
|
import {
|
|
7
7
|
McpManager,
|
|
8
8
|
SessionManager,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
loadDevState,
|
|
15
15
|
persistToolRound,
|
|
16
16
|
setupProxy
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-EIIMBVXN.js";
|
|
18
18
|
import {
|
|
19
19
|
CONTENT_ONLY_STREAM_REMINDER,
|
|
20
20
|
HALLUCINATION_CORRECTION_MESSAGE,
|
|
@@ -28,10 +28,10 @@ import {
|
|
|
28
28
|
looksLikeDocumentBody,
|
|
29
29
|
stripPseudoToolCalls,
|
|
30
30
|
stripToolCallReminder
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-AIZOARZY.js";
|
|
32
32
|
import {
|
|
33
33
|
ConfigManager
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-UWW3EWER.js";
|
|
35
35
|
import {
|
|
36
36
|
ToolExecutor,
|
|
37
37
|
ToolRegistry,
|
|
@@ -49,16 +49,16 @@ import {
|
|
|
49
49
|
spawnAgentContext,
|
|
50
50
|
truncateOutput,
|
|
51
51
|
undoStack
|
|
52
|
-
} from "./chunk-
|
|
53
|
-
import "./chunk-
|
|
54
|
-
import "./chunk-
|
|
55
|
-
import "./chunk-
|
|
52
|
+
} from "./chunk-OP3I24WL.js";
|
|
53
|
+
import "./chunk-HDSKW7Q3.js";
|
|
54
|
+
import "./chunk-ZWVIDFGY.js";
|
|
55
|
+
import "./chunk-OT2HLGSO.js";
|
|
56
56
|
import {
|
|
57
57
|
runTool
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-EYJQJZJ6.js";
|
|
59
59
|
import {
|
|
60
60
|
getDangerLevel
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-NXXNLLSG.js";
|
|
62
62
|
import "./chunk-2ZD3YTVM.js";
|
|
63
63
|
import {
|
|
64
64
|
AGENTIC_BEHAVIOR_GUIDELINE,
|
|
@@ -78,14 +78,14 @@ import {
|
|
|
78
78
|
SKILLS_DIR_NAME,
|
|
79
79
|
VERSION,
|
|
80
80
|
buildUserIdentityPrompt
|
|
81
|
-
} from "./chunk-
|
|
81
|
+
} from "./chunk-D62BVFP7.js";
|
|
82
82
|
import {
|
|
83
83
|
formatGitContextForPrompt,
|
|
84
84
|
getGitContext,
|
|
85
85
|
getGitRoot
|
|
86
86
|
} from "./chunk-HOSJZMQS.js";
|
|
87
87
|
import "./chunk-4BKXL7SM.js";
|
|
88
|
-
import "./chunk-
|
|
88
|
+
import "./chunk-RXM76HB7.js";
|
|
89
89
|
import "./chunk-KHYD3WXE.js";
|
|
90
90
|
import "./chunk-VNNYHW6N.js";
|
|
91
91
|
import "./chunk-OVWE4E46.js";
|
|
@@ -2226,7 +2226,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
2226
2226
|
const root = process.cwd();
|
|
2227
2227
|
const { loadIndex, clearIndex } = await import("./store-VMK543OQ.js");
|
|
2228
2228
|
const { indexProject } = await import("./indexer-S6UMGQKA.js");
|
|
2229
|
-
const { loadVectorStore, clearVectorStore } = await import("./vector-store-
|
|
2229
|
+
const { loadVectorStore, clearVectorStore } = await import("./vector-store-Z5OF4WWJ.js");
|
|
2230
2230
|
if (sub === "status") {
|
|
2231
2231
|
const idx = loadIndex(root);
|
|
2232
2232
|
const vec = loadVectorStore(root);
|
|
@@ -2275,7 +2275,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
2275
2275
|
message: `Building semantic index for ${idx.symbolCount} symbols\u2026 (first run downloads ~117 MB model)`
|
|
2276
2276
|
});
|
|
2277
2277
|
try {
|
|
2278
|
-
const { rebuildSemanticIndex } = await import("./semantic-
|
|
2278
|
+
const { rebuildSemanticIndex } = await import("./semantic-FKOEXY75.js");
|
|
2279
2279
|
const stats = await rebuildSemanticIndex(root);
|
|
2280
2280
|
const first = stats.modelFirstLoadMs ? ` (model load+first batch ${stats.modelFirstLoadMs}ms)` : "";
|
|
2281
2281
|
this.send({
|
|
@@ -2462,7 +2462,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
2462
2462
|
case "test": {
|
|
2463
2463
|
this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
|
|
2464
2464
|
try {
|
|
2465
|
-
const { executeTests } = await import("./run-tests-
|
|
2465
|
+
const { executeTests } = await import("./run-tests-EYZ2JZ4X.js");
|
|
2466
2466
|
const argStr = args.join(" ").trim();
|
|
2467
2467
|
let testArgs = {};
|
|
2468
2468
|
if (argStr) {
|
|
@@ -2986,7 +2986,7 @@ Add .md files to create commands.` });
|
|
|
2986
2986
|
return;
|
|
2987
2987
|
}
|
|
2988
2988
|
try {
|
|
2989
|
-
const { searchChatMemory, loadChatIndex } = await import("./chat-index-
|
|
2989
|
+
const { searchChatMemory, loadChatIndex } = await import("./chat-index-LUQWWLKO.js");
|
|
2990
2990
|
const loaded = loadChatIndex();
|
|
2991
2991
|
if (!loaded || loaded.idx.chunks.length === 0) {
|
|
2992
2992
|
this.send({ type: "memory_hits", query: q, hits: [], indexMissing: true });
|
|
@@ -3022,7 +3022,7 @@ Add .md files to create commands.` });
|
|
|
3022
3022
|
}
|
|
3023
3023
|
async handleMemoryStatus() {
|
|
3024
3024
|
try {
|
|
3025
|
-
const { getChatIndexStatus } = await import("./chat-index-
|
|
3025
|
+
const { getChatIndexStatus } = await import("./chat-index-LUQWWLKO.js");
|
|
3026
3026
|
const s = getChatIndexStatus();
|
|
3027
3027
|
this.send({
|
|
3028
3028
|
type: "memory_status",
|
|
@@ -3047,7 +3047,7 @@ Add .md files to create commands.` });
|
|
|
3047
3047
|
type: "info",
|
|
3048
3048
|
message: full ? "\u{1F9E0} Rebuilding chat memory index (this may take a while on first run \u2014 ~117 MB embedder)." : "\u{1F9E0} Refreshing chat memory index (incremental)\u2026"
|
|
3049
3049
|
});
|
|
3050
|
-
const { buildChatIndex } = await import("./chat-index-
|
|
3050
|
+
const { buildChatIndex } = await import("./chat-index-LUQWWLKO.js");
|
|
3051
3051
|
const stats = await buildChatIndex({
|
|
3052
3052
|
full,
|
|
3053
3053
|
onProgress: (p) => {
|
|
@@ -3477,8 +3477,9 @@ async function startWebServer(options = {}) {
|
|
|
3477
3477
|
}
|
|
3478
3478
|
console.log(` Providers: ${availableProviders.map((p) => p.info.id).join(", ")}`);
|
|
3479
3479
|
let mcpManager = null;
|
|
3480
|
-
const
|
|
3481
|
-
const
|
|
3480
|
+
const mcpEnabled = config.get("mcpEnabled") !== false;
|
|
3481
|
+
const globalMcpServers = mcpEnabled ? config.get("mcpServers") ?? {} : {};
|
|
3482
|
+
const projectMcpResolved = mcpEnabled ? resolveProjectMcpPath() : null;
|
|
3482
3483
|
let projectMcpServers = {};
|
|
3483
3484
|
if (projectMcpResolved) {
|
|
3484
3485
|
const { checkTrust } = await import("./project-trust-IFM7FXEV.js");
|
|
@@ -3491,7 +3492,10 @@ async function startWebServer(options = {}) {
|
|
|
3491
3492
|
}
|
|
3492
3493
|
}
|
|
3493
3494
|
const mergedMcpServers = { ...globalMcpServers, ...projectMcpServers };
|
|
3494
|
-
if (
|
|
3495
|
+
if (!mcpEnabled) {
|
|
3496
|
+
console.log(" \u{1F50C} MCP: disabled (config.mcpEnabled=false)");
|
|
3497
|
+
}
|
|
3498
|
+
if (mcpEnabled && Object.keys(mergedMcpServers).length > 0) {
|
|
3495
3499
|
mcpManager = new McpManager();
|
|
3496
3500
|
await mcpManager.connectAll(mergedMcpServers);
|
|
3497
3501
|
const mcpTools = mcpManager.getAllTools();
|
|
@@ -3,22 +3,22 @@ import {
|
|
|
3
3
|
ToolRegistry,
|
|
4
4
|
googleSearchContext,
|
|
5
5
|
truncateOutput
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-OP3I24WL.js";
|
|
7
|
+
import "./chunk-HDSKW7Q3.js";
|
|
8
|
+
import "./chunk-ZWVIDFGY.js";
|
|
9
|
+
import "./chunk-OT2HLGSO.js";
|
|
10
10
|
import {
|
|
11
11
|
runTool
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-EYJQJZJ6.js";
|
|
13
13
|
import {
|
|
14
14
|
getDangerLevel
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-NXXNLLSG.js";
|
|
16
16
|
import "./chunk-2ZD3YTVM.js";
|
|
17
17
|
import {
|
|
18
18
|
SUBAGENT_ALLOWED_TOOLS
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-D62BVFP7.js";
|
|
20
20
|
import "./chunk-4BKXL7SM.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-RXM76HB7.js";
|
|
22
22
|
import "./chunk-KHYD3WXE.js";
|
|
23
23
|
import "./chunk-VNNYHW6N.js";
|
|
24
24
|
import "./chunk-OVWE4E46.js";
|
package/dist/web/client/app.js
CHANGED
|
@@ -644,7 +644,8 @@ window.respondAutoPause = function(requestId, action) {
|
|
|
644
644
|
|
|
645
645
|
// DaisyUI light themes → highlight.js light stylesheet; others → dark
|
|
646
646
|
const LIGHT_DAISYUI_THEMES = new Set(['light', 'cupcake', 'bumblebee', 'emerald', 'corporate', 'garden', 'lofi', 'pastel', 'fantasy', 'wireframe', 'cmyk', 'autumn', 'acid', 'lemonade', 'winter', 'nord']);
|
|
647
|
-
|
|
647
|
+
// v0.4.153: vendored locally (was cdn.jsdelivr.net) — see index.html.
|
|
648
|
+
const HLJS_CDN = 'vendor';
|
|
648
649
|
|
|
649
650
|
function updateCodeTheme(daisyTheme) {
|
|
650
651
|
const isLight = LIGHT_DAISYUI_THEMES.has(daisyTheme);
|
|
@@ -12,13 +12,17 @@
|
|
|
12
12
|
<link rel="apple-touch-icon" href="icon-192.png">
|
|
13
13
|
<link rel="icon" type="image/svg+xml" href="icon.svg">
|
|
14
14
|
<link rel="icon" type="image/png" sizes="192x192" href="icon-192.png">
|
|
15
|
-
<!-- Tailwind CSS + DaisyUI (
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
<!-- Tailwind CSS + DaisyUI (vendored locally — v0.4.153). These were on
|
|
16
|
+
cdn.tailwindcss.com / cdn.jsdelivr.net, which GFW blocks in CN; when the
|
|
17
|
+
CDN failed the whole UI rendered unstyled AND the `.hidden` login overlay
|
|
18
|
+
became visible (no users → "can't log in"). Serving locally makes the UI
|
|
19
|
+
work offline / behind GFW with zero behavior change. -->
|
|
20
|
+
<link href="vendor/daisyui-full.min.css" rel="stylesheet">
|
|
21
|
+
<script src="vendor/tailwind.js"></script>
|
|
18
22
|
<!-- Markdown + Code highlighting -->
|
|
19
|
-
<script src="
|
|
20
|
-
<link id="hljs-theme" rel="stylesheet" href="
|
|
21
|
-
<script src="
|
|
23
|
+
<script src="vendor/marked.min.js"></script>
|
|
24
|
+
<link id="hljs-theme" rel="stylesheet" href="vendor/github-dark.min.css">
|
|
25
|
+
<script src="vendor/highlight.min.js"></script>
|
|
22
26
|
<link rel="stylesheet" href="style.css">
|
|
23
27
|
</head>
|
|
24
28
|
<body class="bg-base-300 h-screen overflow-hidden">
|
package/dist/web/client/sw.js
CHANGED
|
@@ -4,9 +4,14 @@
|
|
|
4
4
|
* API calls and WebSocket are always network-first.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// v0.4.153: bumped v1 → v2 so the `activate` handler evicts the old cache.
|
|
8
|
+
// Without this, clients that cached the pre-fix index.html (which referenced
|
|
9
|
+
// GFW-blocked CDNs) would keep serving the broken page forever.
|
|
10
|
+
const CACHE_NAME = 'aicli-v2';
|
|
8
11
|
|
|
9
|
-
// App shell — files needed for offline-capable startup
|
|
12
|
+
// App shell — files needed for offline-capable startup. Now includes the
|
|
13
|
+
// vendored Tailwind/DaisyUI/marked/highlight.js assets (previously CDN-hosted),
|
|
14
|
+
// so the UI is fully self-contained and works behind a firewall / offline.
|
|
10
15
|
const APP_SHELL = [
|
|
11
16
|
'/',
|
|
12
17
|
'/index.html',
|
|
@@ -16,12 +21,12 @@ const APP_SHELL = [
|
|
|
16
21
|
'/icon.svg',
|
|
17
22
|
'/icon-192.png',
|
|
18
23
|
'/icon-512.png',
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
'
|
|
24
|
-
'
|
|
24
|
+
'/vendor/daisyui-full.min.css',
|
|
25
|
+
'/vendor/tailwind.js',
|
|
26
|
+
'/vendor/marked.min.js',
|
|
27
|
+
'/vendor/highlight.min.js',
|
|
28
|
+
'/vendor/github-dark.min.css',
|
|
29
|
+
'/vendor/github.min.css',
|
|
25
30
|
];
|
|
26
31
|
|
|
27
32
|
self.addEventListener('install', (event) => {
|
|
@@ -51,24 +56,8 @@ self.addEventListener('fetch', (event) => {
|
|
|
51
56
|
return;
|
|
52
57
|
}
|
|
53
58
|
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
event.respondWith(
|
|
57
|
-
caches.match(event.request).then(cached => {
|
|
58
|
-
if (cached) return cached;
|
|
59
|
-
return fetch(event.request).then(response => {
|
|
60
|
-
if (response.ok) {
|
|
61
|
-
const clone = response.clone();
|
|
62
|
-
caches.open(CACHE_NAME).then(cache => cache.put(event.request, clone));
|
|
63
|
-
}
|
|
64
|
-
return response;
|
|
65
|
-
});
|
|
66
|
-
})
|
|
67
|
-
);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// App shell: network-first with cache fallback (always get latest from server)
|
|
59
|
+
// App shell (now incl. same-origin /vendor/*): network-first with cache
|
|
60
|
+
// fallback (always get latest from server)
|
|
72
61
|
event.respondWith(
|
|
73
62
|
fetch(event.request)
|
|
74
63
|
.then(response => {
|