cli-jaw 2.2.8 → 2.2.10
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 +4 -4
- package/dist/bin/agent-driven.js +33 -0
- package/dist/bin/agent-driven.js.map +1 -0
- package/dist/bin/commands/doctor.js +66 -1
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/init.js +107 -8
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/interactive-confirm.js +110 -0
- package/dist/bin/interactive-confirm.js.map +1 -0
- package/dist/bin/star-prompt.js +46 -15
- package/dist/bin/star-prompt.js.map +1 -1
- package/dist/lib/upload.js +5 -1
- package/dist/lib/upload.js.map +1 -1
- package/dist/server.js +1 -0
- package/dist/server.js.map +1 -1
- package/dist/src/agent/alert-escalation.js +1 -1
- package/dist/src/agent/alert-escalation.js.map +1 -1
- package/dist/src/agent/codex-app-catalog.js +57 -0
- package/dist/src/agent/codex-app-catalog.js.map +1 -0
- package/dist/src/agent/codex-app-client.js +89 -7
- package/dist/src/agent/codex-app-client.js.map +1 -1
- package/dist/src/agent/pi-rpc-verdict.js +22 -0
- package/dist/src/agent/pi-rpc-verdict.js.map +1 -0
- package/dist/src/agent/pi-runtime.js +240 -0
- package/dist/src/agent/pi-runtime.js.map +1 -1
- package/dist/src/agent/runtime-pool.js +445 -0
- package/dist/src/agent/runtime-pool.js.map +1 -0
- package/dist/src/agent/spawn.js +395 -240
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/cli/command-context.js +5 -2
- package/dist/src/cli/command-context.js.map +1 -1
- package/dist/src/cli/commands.js +43 -39
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/handlers-runtime.js +15 -7
- package/dist/src/cli/handlers-runtime.js.map +1 -1
- package/dist/src/cli/handlers-search.js +1 -1
- package/dist/src/cli/handlers-search.js.map +1 -1
- package/dist/src/cli/handlers-skill-invoke.js +1 -1
- package/dist/src/cli/handlers-skill-invoke.js.map +1 -1
- package/dist/src/cli/handlers-workflows.js +1 -1
- package/dist/src/cli/handlers-workflows.js.map +1 -1
- package/dist/src/cli/handlers.js +1 -1
- package/dist/src/cli/handlers.js.map +1 -1
- package/dist/src/cli/opencodex-models.js +40 -7
- package/dist/src/cli/opencodex-models.js.map +1 -1
- package/dist/src/cli/registry-live.js +6 -5
- package/dist/src/cli/registry-live.js.map +1 -1
- package/dist/src/command-contract/catalog.js +4 -0
- package/dist/src/command-contract/catalog.js.map +1 -1
- package/dist/src/core/config.js +69 -4
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/runtime-settings.js +17 -0
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/core/settings-merge.js +1 -1
- package/dist/src/core/settings-merge.js.map +1 -1
- package/dist/src/discord/bot.js +29 -14
- package/dist/src/discord/bot.js.map +1 -1
- package/dist/src/discord/commands.js +5 -4
- package/dist/src/discord/commands.js.map +1 -1
- package/dist/src/discord/discord-file.js +8 -2
- package/dist/src/discord/discord-file.js.map +1 -1
- package/dist/src/discord/forwarder.js +17 -19
- package/dist/src/discord/forwarder.js.map +1 -1
- package/dist/src/discord/send-only-client.js +9 -1
- package/dist/src/discord/send-only-client.js.map +1 -1
- package/dist/src/manager/dashboard-service.js +38 -1
- package/dist/src/manager/dashboard-service.js.map +1 -1
- package/dist/src/manager/telegram-hub/hub-bot.js +47 -29
- package/dist/src/manager/telegram-hub/hub-bot.js.map +1 -1
- package/dist/src/messaging/channel-health.js +32 -0
- package/dist/src/messaging/channel-health.js.map +1 -1
- package/dist/src/messaging/chunk.js +376 -0
- package/dist/src/messaging/chunk.js.map +1 -0
- package/dist/src/messaging/dedupe.js +104 -0
- package/dist/src/messaging/dedupe.js.map +1 -0
- package/dist/src/messaging/fold.js +210 -0
- package/dist/src/messaging/fold.js.map +1 -0
- package/dist/src/messaging/redact.js +577 -0
- package/dist/src/messaging/redact.js.map +1 -0
- package/dist/src/messaging/retry.js +76 -0
- package/dist/src/messaging/retry.js.map +1 -0
- package/dist/src/messaging/runtime.js +6 -3
- package/dist/src/messaging/runtime.js.map +1 -1
- package/dist/src/messaging/send.js +45 -15
- package/dist/src/messaging/send.js.map +1 -1
- package/dist/src/messaging/slack-target.js +50 -0
- package/dist/src/messaging/slack-target.js.map +1 -0
- package/dist/src/messaging/types.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +4 -4
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/routes/command.js +11 -7
- package/dist/src/routes/command.js.map +1 -1
- package/dist/src/routes/messaging.js +28 -12
- package/dist/src/routes/messaging.js.map +1 -1
- package/dist/src/routes/settings.js +22 -6
- package/dist/src/routes/settings.js.map +1 -1
- package/dist/src/slack/api.js +116 -0
- package/dist/src/slack/api.js.map +1 -0
- package/dist/src/slack/bot.js +262 -0
- package/dist/src/slack/bot.js.map +1 -0
- package/dist/src/slack/commands.js +98 -0
- package/dist/src/slack/commands.js.map +1 -0
- package/dist/src/slack/events.js +116 -0
- package/dist/src/slack/events.js.map +1 -0
- package/dist/src/slack/format.js +58 -0
- package/dist/src/slack/format.js.map +1 -0
- package/dist/src/slack/forwarder.js +57 -0
- package/dist/src/slack/forwarder.js.map +1 -0
- package/dist/src/slack/register.js +13 -0
- package/dist/src/slack/register.js.map +1 -0
- package/dist/src/slack/send-handler.js +41 -0
- package/dist/src/slack/send-handler.js.map +1 -0
- package/dist/src/slack/send-only-client.js +46 -0
- package/dist/src/slack/send-only-client.js.map +1 -0
- package/dist/src/slack/slack-file.js +72 -0
- package/dist/src/slack/slack-file.js.map +1 -0
- package/dist/src/slack/socket.js +341 -0
- package/dist/src/slack/socket.js.map +1 -0
- package/dist/src/telegram/bot.js +117 -37
- package/dist/src/telegram/bot.js.map +1 -1
- package/dist/src/telegram/elicitation-buttons.js +7 -2
- package/dist/src/telegram/elicitation-buttons.js.map +1 -1
- package/dist/src/telegram/forwarder.js +15 -7
- package/dist/src/telegram/forwarder.js.map +1 -1
- package/dist/src/telegram/rich-message.js +209 -24
- package/dist/src/telegram/rich-message.js.map +1 -1
- package/dist/src/telegram/telegram-file.js +35 -4
- package/dist/src/telegram/telegram-file.js.map +1 -1
- package/dist/src/telegram/voice.js +4 -3
- package/dist/src/telegram/voice.js.map +1 -1
- package/package.json +5 -1
- package/public/assets/providers/slack.svg +1 -0
- package/public/dist/assets/ChannelsDiscord-D9FLnZso.js +1 -0
- package/public/dist/assets/ChannelsSlack-ybvupgdK.js +1 -0
- package/public/dist/assets/ChannelsTelegram-BOCOPrBc.js +1 -0
- package/public/dist/assets/HealthBadge-megTlF4n.js +1 -0
- package/public/dist/assets/TransportStatusChips-CjEySMis.js +1 -0
- package/public/dist/assets/app-BGIAy4he.js +55 -0
- package/public/dist/assets/{bgtask-badge-CdBqBy1L.js → bgtask-badge-DXca8E7c.js} +1 -1
- package/public/dist/assets/bgtask-badge-GRSiNILQ.js +1 -0
- package/public/dist/assets/{employees-C8qufeJl.js → employees-BL4qMxJj.js} +1 -1
- package/public/dist/assets/iframe-renderer-BUSk0Rw9.js +1 -0
- package/public/dist/assets/{iframe-renderer-CZ67aeTO.js → iframe-renderer-DUI0LYBy.js} +2 -2
- package/public/dist/assets/{manager-CLXT60M5.js → manager-B-gpf-3j.js} +3 -3
- package/public/dist/assets/{memory-lWramLVw.js → memory-B_Y0L0KD.js} +1 -1
- package/public/dist/assets/memory-CX6YahTc.js +1 -0
- package/public/dist/assets/message-history-Det7u76S.js +1 -0
- package/public/dist/assets/{message-history-2NUN3UxM.js → message-history-Dl8dJzez.js} +1 -1
- package/public/dist/assets/{provider-icons-stsNmQKx.js → provider-icons-VDfahiUp.js} +3 -2
- package/public/dist/assets/{render-CsF-ojLe.js → render-BI1aqKoc.js} +1 -1
- package/public/dist/assets/{settings-BMLowRCh.js → settings-B0Sj4sUH.js} +1 -1
- package/public/dist/assets/settings-C7NutP6X.js +1 -0
- package/public/dist/assets/settings-core-CyX-px6_.js +100 -0
- package/public/dist/assets/settings-core-DVpFmrhY.js +1 -0
- package/public/dist/assets/{sidebar-gKjYLv49.js → sidebar-DOR9fTgN.js} +3 -3
- package/public/dist/assets/skills-BWhKreQ2.js +1 -0
- package/public/dist/assets/{skills-CKTbomdm.js → skills-wt0fkV9Y.js} +1 -1
- package/public/dist/assets/slash-commands-BZbqTg3v.js +20 -0
- package/public/dist/assets/slash-commands-Di4NDA4w.js +1 -0
- package/public/dist/assets/{trace-drawer-C3G4mmB1.js → trace-drawer-kMYzaVFW.js} +1 -1
- package/public/dist/assets/ui-BghexWrB.js +1 -0
- package/public/dist/assets/{ui-CVVC_flX.js → ui-D4D5HUfo.js} +1 -1
- package/public/dist/index.html +62 -1
- package/public/dist/manager/index.html +1 -1
- package/public/index.html +61 -0
- package/public/js/features/command-info.ts +1 -0
- package/public/js/features/help-content.ts +8 -0
- package/public/js/features/settings-channel.ts +5 -1
- package/public/js/features/settings-core.ts +2 -0
- package/public/js/features/settings-slack.ts +74 -0
- package/public/js/features/settings-types.ts +5 -1
- package/public/js/features/settings.ts +1 -0
- package/public/js/features/transport-status-row.ts +15 -3
- package/public/js/main.ts +19 -0
- package/public/js/provider-icons.ts +4 -1
- package/public/js/ws.ts +1 -1
- package/public/locales/en.json +21 -0
- package/public/locales/ja.json +21 -0
- package/public/locales/ko.json +21 -0
- package/public/locales/zh.json +21 -0
- package/public/manager/src/settings/SettingsShell.tsx +1 -0
- package/public/manager/src/settings/SettingsSidebar.tsx +1 -0
- package/public/manager/src/settings/pages/ChannelsSlack.tsx +323 -0
- package/public/manager/src/settings/pages/components/ActiveChannelToggle.tsx +2 -1
- package/public/manager/src/settings/pages/components/TransportStatusChips.tsx +13 -4
- package/public/manager/src/settings/types.ts +1 -0
- package/scripts/check-redaction-sinks.mjs +276 -0
- package/scripts/pi-rpc-probe.mts +361 -0
- package/scripts/release-gates.mjs +83 -0
- package/scripts/release-preview.sh +8 -1
- package/scripts/release.sh +13 -2
- package/scripts/sync-electron-version.cjs +93 -0
- package/public/dist/assets/ChannelsDiscord-Bt1_rtNC.js +0 -1
- package/public/dist/assets/ChannelsTelegram-BLV0m1oq.js +0 -1
- package/public/dist/assets/TransportStatusChips-Bld0yXi7.js +0 -1
- package/public/dist/assets/app-iSJhsP20.js +0 -55
- package/public/dist/assets/bgtask-badge-CSkSsoB6.js +0 -1
- package/public/dist/assets/iframe-renderer-DXdo0YXN.js +0 -1
- package/public/dist/assets/memory-DeKUlD2M.js +0 -1
- package/public/dist/assets/message-history-CWTQ2woA.js +0 -1
- package/public/dist/assets/settings-CDjs7hTT.js +0 -1
- package/public/dist/assets/settings-core-Cs_oq-b3.js +0 -99
- package/public/dist/assets/settings-core-D-TOh1a6.js +0 -1
- package/public/dist/assets/skills-GuIfNASs.js +0 -1
- package/public/dist/assets/slash-commands-BtZa093n.js +0 -20
- package/public/dist/assets/slash-commands-DGJKfpMT.js +0 -1
- package/public/dist/assets/ui-DJg5Q_NJ.js +0 -1
- /package/public/dist/assets/{DashboardMeta-B7CVqXcU.js → DashboardMeta-DennaaA_.js} +0 -0
- /package/public/dist/assets/{Display-BF-rACK6.js → Display-hGuSn_W5.js} +0 -0
- /package/public/dist/assets/{Employees-D3hnciP0.js → Employees-B5YXk5ma.js} +0 -0
- /package/public/dist/assets/{Heartbeat-D4Pn5O3O.js → Heartbeat-vDGhPfct.js} +0 -0
- /package/public/dist/assets/{Mcp-SfytKWGX.js → Mcp-BHWnJ6SP.js} +0 -0
- /package/public/dist/assets/{Memory-DNxBOQ7N.js → Memory-B_UZ-iCA.js} +0 -0
- /package/public/dist/assets/{ModelProvider-CXwtlG7l.js → ModelProvider-CgUvs6pE.js} +0 -0
- /package/public/dist/assets/{Network-DISUhige.js → Network-AWpSkALD.js} +0 -0
- /package/public/dist/assets/{Profile-B8yBO3Ju.js → Profile-DnIE2ios.js} +0 -0
- /package/public/dist/assets/{Prompts-5lNQ5qOm.js → Prompts-B9aKLall.js} +0 -0
- /package/public/dist/assets/{SpeechKeys-BepaIHBa.js → SpeechKeys-K4Be_o7z.js} +0 -0
- /package/public/dist/assets/{TelegramHub--DNjRAwW.js → TelegramHub-CFwSkzHP.js} +0 -0
- /package/public/dist/assets/{TerminalPanel-DQovYfwz.js → TerminalPanel-CdlFZHAK.js} +0 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
// ─── Canonical Folding ───────────────────────────────
|
|
2
|
+
// Turns a string into the form its eventual reader would see — escapes
|
|
3
|
+
// decoded, invisible characters removed, compatibility characters folded —
|
|
4
|
+
// while remembering where every surviving character came from.
|
|
5
|
+
//
|
|
6
|
+
// The offset map is the point of this module. Finding a secret in the folded
|
|
7
|
+
// copy and then deleting that literal from the original fails twice over: an
|
|
8
|
+
// escape spliced INSIDE the secret means the literal is not there at all, and
|
|
9
|
+
// a run that legitimately appears elsewhere gets destroyed with it. Ranges
|
|
10
|
+
// carry a match back to exactly the bytes it came from.
|
|
11
|
+
//
|
|
12
|
+
// COORDINATE SYSTEM: UTF-16 code units, everywhere. Regex indices,
|
|
13
|
+
// String.length and slice offsets all speak code units, so the map must too.
|
|
14
|
+
// Walking a normalized character by code POINT desynchronized the map the
|
|
15
|
+
// moment NFKC produced an astral pair.
|
|
16
|
+
/**
|
|
17
|
+
* Unicode characters that render as nothing. Splicing one into a token hides
|
|
18
|
+
* it from a naive matcher while leaving the token usable — the character
|
|
19
|
+
* disappears on copy, or is stripped by the next parser in the chain.
|
|
20
|
+
*
|
|
21
|
+
* Cc/Cf covers the format controls (zero-width space and joiners, word joiner,
|
|
22
|
+
* soft hyphen, bidi marks, BOM) plus the C0/C1 control characters.
|
|
23
|
+
*/
|
|
24
|
+
// Cc/Cf covers the format controls (zero-width space and joiners, word joiner,
|
|
25
|
+
// soft hyphen, bidi marks, BOM) and the C0/C1 controls. The explicit additions
|
|
26
|
+
// are default-ignorable code points that fall outside those categories: the
|
|
27
|
+
// combining grapheme joiner renders as nothing yet is Mn, Mongolian free
|
|
28
|
+
// variation selectors are Cf but its vowel separator is Zs, and the Khmer
|
|
29
|
+
// viramas behave the same way in practice.
|
|
30
|
+
const INVISIBLE_CHARS = /[\p{Cc}\p{Cf}\u034F\u17B4\u17B5\u180B-\u180E\uFE00-\uFE0F]/gu;
|
|
31
|
+
/**
|
|
32
|
+
* Fold a string to the form an attacker's target would see, so matching does
|
|
33
|
+
* not have to enumerate spellings.
|
|
34
|
+
*
|
|
35
|
+
* Chasing spellings one at a time does not converge: `%62ot`, then `%2562ot`,
|
|
36
|
+
* then U+2060 between the letters, then U+00AD, then `b`. Each round added
|
|
37
|
+
* an alternation and the next found another. Folding turns them into one shape.
|
|
38
|
+
*
|
|
39
|
+
* Decoding never throws: a malformed escape is left as written.
|
|
40
|
+
*/
|
|
41
|
+
export function canonicalize(input) {
|
|
42
|
+
let current = {
|
|
43
|
+
text: input,
|
|
44
|
+
origin: Array.from({ length: input.length }, (_, i) => i),
|
|
45
|
+
end: Array.from({ length: input.length }, (_, i) => i + 1),
|
|
46
|
+
};
|
|
47
|
+
current = stripInvisible(current);
|
|
48
|
+
// Fold to a FIXED POINT. Decoding strictly shrinks — an escape is always
|
|
49
|
+
// longer than the character it denotes — so this terminates on its own,
|
|
50
|
+
// and there is no round cap to nest past.
|
|
51
|
+
//
|
|
52
|
+
// The work budget bounds CPU instead, and reaching it is reported rather
|
|
53
|
+
// than swallowed: a caller that gets `exhausted` must not conclude the
|
|
54
|
+
// text was clean. A cap that silently gives up is how depth 513 leaked.
|
|
55
|
+
let budget = decodeBudgetFor(input);
|
|
56
|
+
for (;;) {
|
|
57
|
+
if (budget <= 0)
|
|
58
|
+
return { ...current, exhausted: true };
|
|
59
|
+
budget -= current.text.length;
|
|
60
|
+
const next = stripInvisible(decodeOnce(current));
|
|
61
|
+
if (next.text === current.text)
|
|
62
|
+
break;
|
|
63
|
+
current = next;
|
|
64
|
+
}
|
|
65
|
+
return current;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Total characters the fold may process, across all rounds.
|
|
69
|
+
*
|
|
70
|
+
* Bounding rounds does not bound cost: each round rescans the whole string, so
|
|
71
|
+
* a 43 KB input nested 512 deep burned three quarters of a second. Charging
|
|
72
|
+
* every round against one budget makes the ceiling proportional to the work
|
|
73
|
+
* actually done.
|
|
74
|
+
*/
|
|
75
|
+
function decodeBudgetFor(input) {
|
|
76
|
+
return Math.max(input.length * 8, 64 * 1024);
|
|
77
|
+
}
|
|
78
|
+
function stripInvisible(folded) {
|
|
79
|
+
const text = [];
|
|
80
|
+
const origin = [];
|
|
81
|
+
const end = [];
|
|
82
|
+
for (let i = 0; i < folded.text.length; i += 1) {
|
|
83
|
+
const char = folded.text[i];
|
|
84
|
+
INVISIBLE_CHARS.lastIndex = 0;
|
|
85
|
+
if (INVISIBLE_CHARS.test(char))
|
|
86
|
+
continue;
|
|
87
|
+
// NFKC per character, so the map stays aligned where it matters:
|
|
88
|
+
// fullwidth bot folds to bot, and a fullwidth colon to ':'.
|
|
89
|
+
//
|
|
90
|
+
// Iterate CODE UNITS, not code points. `for..of` yields whole code
|
|
91
|
+
// points, so a character whose NFKC expansion is astral (U+FA6C becomes
|
|
92
|
+
// U+242EE, two units) pushed one entry where the string contributes
|
|
93
|
+
// two. Every later offset then sat one short, which left the first
|
|
94
|
+
// character of a secret behind and ate the character after it —
|
|
95
|
+
// regex indices and String.length are code units throughout.
|
|
96
|
+
const normalized = char.normalize('NFKC');
|
|
97
|
+
for (let unit = 0; unit < normalized.length; unit += 1) {
|
|
98
|
+
text.push(normalized[unit]);
|
|
99
|
+
origin.push(folded.origin[i]);
|
|
100
|
+
end.push(folded.end[i]);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return { text: text.join(''), origin, end };
|
|
104
|
+
}
|
|
105
|
+
/** Replace a slice of the folded text, keeping the map consistent. */
|
|
106
|
+
function spliceFolded(folded, from, to, replacement) {
|
|
107
|
+
const sourceStart = folded.origin[from];
|
|
108
|
+
const sourceEnd = folded.end[to - 1];
|
|
109
|
+
return {
|
|
110
|
+
text: [...replacement],
|
|
111
|
+
origin: replacement.split('').map(() => sourceStart),
|
|
112
|
+
end: replacement.split('').map(() => sourceEnd),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* One round of the escape forms that reach these sinks: percent-encoding
|
|
117
|
+
* (including multi-byte UTF-8 sequences), JSON/JS `\uXXXX`, and HTML numeric
|
|
118
|
+
* entities. A log line is rendered by something downstream, and each of those
|
|
119
|
+
* renderers turns its own escape back into the character.
|
|
120
|
+
*/
|
|
121
|
+
function decodeOnce(folded) {
|
|
122
|
+
// All three escape families in one alternation, so a single left-to-right
|
|
123
|
+
// pass can rebuild the offset map. The HTML entity's semicolon is optional:
|
|
124
|
+
// browsers accept `bot` and so must this.
|
|
125
|
+
// Named references are here for the same reason the numeric ones are: a
|
|
126
|
+
// renderer turns `:` back into ':', which restores the separator the
|
|
127
|
+
// token matcher looks for.
|
|
128
|
+
const ESCAPE = /(?:%[0-9A-Fa-f]{2})+|\\u([0-9A-Fa-f]{4})|&#(x?)([0-9A-Fa-f]+);?|&([A-Za-z][A-Za-z0-9]{1,31});/gi;
|
|
129
|
+
const text = [];
|
|
130
|
+
const origin = [];
|
|
131
|
+
const end = [];
|
|
132
|
+
let cursor = 0;
|
|
133
|
+
const copyRange = (from, to) => {
|
|
134
|
+
for (let i = from; i < to; i += 1) {
|
|
135
|
+
text.push(folded.text[i]);
|
|
136
|
+
origin.push(folded.origin[i]);
|
|
137
|
+
end.push(folded.end[i]);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
for (const match of folded.text.matchAll(ESCAPE)) {
|
|
141
|
+
const at = match.index ?? 0;
|
|
142
|
+
copyRange(cursor, at);
|
|
143
|
+
const decoded = decodeEscape(match);
|
|
144
|
+
// Push one element at a time. `push(...array)` passes every element as
|
|
145
|
+
// an argument, which overflows the stack once a hostile input produces
|
|
146
|
+
// enough of them.
|
|
147
|
+
const spliced = spliceFolded(folded, at, at + match[0].length, decoded);
|
|
148
|
+
for (let i = 0; i < spliced.text.length; i += 1) {
|
|
149
|
+
text.push(spliced.text[i]);
|
|
150
|
+
origin.push(spliced.origin[i]);
|
|
151
|
+
end.push(spliced.end[i]);
|
|
152
|
+
}
|
|
153
|
+
cursor = at + match[0].length;
|
|
154
|
+
}
|
|
155
|
+
copyRange(cursor, folded.text.length);
|
|
156
|
+
return { text: text.join(''), origin, end };
|
|
157
|
+
}
|
|
158
|
+
function decodeEscape(match) {
|
|
159
|
+
const whole = match[0];
|
|
160
|
+
if (whole.startsWith('%')) {
|
|
161
|
+
try {
|
|
162
|
+
// decodeURIComponent handles multi-byte UTF-8; a malformed run
|
|
163
|
+
// throws, and is then left exactly as written.
|
|
164
|
+
return decodeURIComponent(whole);
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
return whole;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (match[1] !== undefined) {
|
|
171
|
+
const code = Number.parseInt(match[1], 16);
|
|
172
|
+
return Number.isFinite(code) ? String.fromCharCode(code) : whole;
|
|
173
|
+
}
|
|
174
|
+
const digits = match[3];
|
|
175
|
+
if (digits === undefined) {
|
|
176
|
+
const name = match[4];
|
|
177
|
+
if (name === undefined)
|
|
178
|
+
return whole;
|
|
179
|
+
return NAMED_ENTITIES[name.toLowerCase()] ?? whole;
|
|
180
|
+
}
|
|
181
|
+
const code = Number.parseInt(digits, match[2] ? 16 : 10);
|
|
182
|
+
return Number.isFinite(code) && code > 0 && code <= 0x10ffff
|
|
183
|
+
? String.fromCodePoint(code)
|
|
184
|
+
: whole;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Named references that can rebuild a credential once a renderer expands them.
|
|
188
|
+
*
|
|
189
|
+
* Only the characters that matter to detection are listed — the separator, the
|
|
190
|
+
* escape introducers, and the delimiters a URL needs. A full HTML entity table
|
|
191
|
+
* would add hundreds of letters that change nothing here.
|
|
192
|
+
*/
|
|
193
|
+
const NAMED_ENTITIES = {
|
|
194
|
+
colon: ':',
|
|
195
|
+
amp: '&',
|
|
196
|
+
percnt: '%',
|
|
197
|
+
sol: '/',
|
|
198
|
+
bsol: '\\',
|
|
199
|
+
lowbar: '_',
|
|
200
|
+
hyphen: '-',
|
|
201
|
+
period: '.',
|
|
202
|
+
num: '#',
|
|
203
|
+
quest: '?',
|
|
204
|
+
equals: '=',
|
|
205
|
+
commat: '@',
|
|
206
|
+
nbsp: ' ',
|
|
207
|
+
zwnj: '\u200C',
|
|
208
|
+
zwj: '\u200D',
|
|
209
|
+
};
|
|
210
|
+
//# sourceMappingURL=fold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fold.js","sourceRoot":"","sources":["../../../src/messaging/fold.ts"],"names":[],"mappings":"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"}
|