@chibitek/chibi 0.1.173 → 0.1.175
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/assets/{abnfDiagram-O67JEVCF-DaA9WpZw.js → abnfDiagram-O67JEVCF-CjXTIXBz.js} +1 -1
- package/dist/assets/{arc-DJ4Kdvv6.js → arc-1QgG2iO9.js} +1 -1
- package/dist/assets/{architectureDiagram-NJMV4G6O-B975BUTv.js → architectureDiagram-NJMV4G6O-CzCo4hRJ.js} +1 -1
- package/dist/assets/{blockDiagram-BEXU5L5S-CXOOfLy7.js → blockDiagram-BEXU5L5S-DhrHIUjL.js} +1 -1
- package/dist/assets/{c4Diagram-YGBWAQC7-CorqQ94E.js → c4Diagram-YGBWAQC7-gOjFoY7Z.js} +1 -1
- package/dist/assets/channel-DB0DMkPD.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-CPFHpKez.js → chunk-2Q5K7J3B-B9bsMZTt.js} +1 -1
- package/dist/assets/{chunk-3FUC2YCW-CrzBuB3A.js → chunk-3FUC2YCW-D6qIOfLe.js} +2 -2
- package/dist/assets/{chunk-5VM5RSS4-DXJTBdvO.js → chunk-5VM5RSS4-DCixOiOi.js} +1 -1
- package/dist/assets/{chunk-GTNCS2PH-B0TxALG4.js → chunk-GTNCS2PH-Bh52Az-G.js} +1 -1
- package/dist/assets/{chunk-GWA4HPMP-BL44uVOP.js → chunk-GWA4HPMP-Dbs4EZ88.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-CxSklH7P.js → chunk-JWPE2WC7-jReoeHz2.js} +1 -1
- package/dist/assets/{chunk-NETBCI7D-_Lb-D8AY.js → chunk-NETBCI7D-CF3H0lZo.js} +1 -1
- package/dist/assets/{chunk-WEXAMYUT-Dz5jp0xb.js → chunk-WEXAMYUT-DetCJmJX.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-C-cd9N0r.js → chunk-XXDRQBXY-CigsN-8U.js} +1 -1
- package/dist/assets/{classDiagram-v2-NBCMYWYE-DtQ1781-.js → classDiagram-v2-NBCMYWYE-D8ZcMUWM.js} +1 -1
- package/dist/assets/{cose-bilkent-JH36ORCC-CHzWXNdH.js → cose-bilkent-JH36ORCC-BnqFoYIa.js} +1 -1
- package/dist/assets/{cynefin-OW5HDTMX-lHbKcf1S.js → cynefin-OW5HDTMX-DWSSGPqP.js} +1 -1
- package/dist/assets/{cynefinDiagram-VND7K2PF-BxY6MCKD.js → cynefinDiagram-VND7K2PF-Doo-ZQ5E.js} +1 -1
- package/dist/assets/{dagre-6A5THRUB-C2SBw-Mo.js → dagre-6A5THRUB-Bje_N-ue.js} +1 -1
- package/dist/assets/{diagram-22UHCM2B-BwIAlmAU.js → diagram-22UHCM2B-osEfxfGj.js} +1 -1
- package/dist/assets/{diagram-3UASUU5V-i6fBkckD.js → diagram-3UASUU5V-D0ybINw1.js} +1 -1
- package/dist/assets/{diagram-ATOU4E4O-DwedCbB_.js → diagram-ATOU4E4O-DwS59waF.js} +1 -1
- package/dist/assets/{diagram-CDSNMT55-BISF-AQC.js → diagram-CDSNMT55-stDTabsA.js} +1 -1
- package/dist/assets/{diagram-MLGK6HIB-ImgdRRxp.js → diagram-MLGK6HIB-COdtBBj4.js} +1 -1
- package/dist/assets/{diagram-MPIPVDR6-CxlAwPCS.js → diagram-MPIPVDR6-S32r0-4f.js} +1 -1
- package/dist/assets/{ebnfDiagram-ZINNZB2B-sVJkymKa.js → ebnfDiagram-ZINNZB2B-CZxbMOzV.js} +1 -1
- package/dist/assets/{elk-276RUBZZ-DU1vyX4w.js → elk-276RUBZZ-PzYOam0u.js} +1 -1
- package/dist/assets/{erDiagram-OPXOYQCR-CnCmL1Ve.js → erDiagram-OPXOYQCR-D0HBOTqF.js} +1 -1
- package/dist/assets/{flowDiagram-KWPJA3E3-DME2uLJf.js → flowDiagram-KWPJA3E3-1d8rftXL.js} +1 -1
- package/dist/assets/{ganttDiagram-FUAMR5RP-CJQNW9ts.js → ganttDiagram-FUAMR5RP-CWn83VOd.js} +1 -1
- package/dist/assets/{gitGraphDiagram-X574FWY7-D88_Y9tg.js → gitGraphDiagram-X574FWY7-CkLyRxvr.js} +1 -1
- package/dist/assets/{index-U9LN4GhF.js → index-BcBNl1Sc.js} +175 -175
- package/dist/assets/index-D17LLrYN.css +1 -0
- package/dist/assets/{index-ChmZZe7i.js → index-DfdDXEfq.js} +1 -1
- package/dist/assets/{infoDiagram-VRGFBTTK-CxWEf3NI.js → infoDiagram-VRGFBTTK-BmAsjOaa.js} +1 -1
- package/dist/assets/{ishikawaDiagram-OU5B5YK6-B_YoNVjF.js → ishikawaDiagram-OU5B5YK6-B9d57hp_.js} +1 -1
- package/dist/assets/{journeyDiagram-ZHPQQLJL-ZYuBE2Bm.js → journeyDiagram-ZHPQQLJL-II3Kse3X.js} +1 -1
- package/dist/assets/{kanban-definition-PNTS6WVX-jmY_M4Qf.js → kanban-definition-PNTS6WVX-DtovCoCx.js} +1 -1
- package/dist/assets/{linear-kKUF6ayN.js → linear-BnH8vI1-.js} +1 -1
- package/dist/assets/{mermaid.core-DC5051S_.js → mermaid.core-BExpGmRM.js} +5 -5
- package/dist/assets/{mindmap-definition-NLK3R4M7-C5knfygJ.js → mindmap-definition-NLK3R4M7-CSGJyaor.js} +1 -1
- package/dist/assets/{pegDiagram-GJSIUBJH-Ex6iedL2.js → pegDiagram-GJSIUBJH-BFgKWA7i.js} +1 -1
- package/dist/assets/{pieDiagram-5QR66LMP-Dv38Ox0D.js → pieDiagram-5QR66LMP-Dl3FAvDB.js} +1 -1
- package/dist/assets/{quadrantDiagram-O4NWA36T-CwOEor8N.js → quadrantDiagram-O4NWA36T-DafRWmMB.js} +1 -1
- package/dist/assets/{railroadDiagram-XR7U4H2S-DVgqz5MR.js → railroadDiagram-XR7U4H2S-CHJ7SyyJ.js} +1 -1
- package/dist/assets/{requirementDiagram-PLB6GJNP-BxiuYo52.js → requirementDiagram-PLB6GJNP-DJzpaN8z.js} +1 -1
- package/dist/assets/{sankeyDiagram-IPEJSGJF--vq_1flP.js → sankeyDiagram-IPEJSGJF-BKqi0qaK.js} +1 -1
- package/dist/assets/{sequenceDiagram-PO4LG4MO-9hLpfPA6.js → sequenceDiagram-PO4LG4MO-Bdc2LKBx.js} +1 -1
- package/dist/assets/{sizeCapture-INFHLROL-BeGMkj9s.js → sizeCapture-INFHLROL-CIuw2Jav.js} +1 -1
- package/dist/assets/{stateDiagram-v2-GCMORJYK-BnNOMugb.js → stateDiagram-v2-GCMORJYK-CocMnCmt.js} +1 -1
- package/dist/assets/{swimlanes-2SLR337P-C1YG6Jq-.js → swimlanes-2SLR337P-D7Kw4SfT.js} +1 -1
- package/dist/assets/swimlanesDiagram-TC7HE7FX-Bq7WUTaZ.js +8 -0
- package/dist/assets/{timeline-definition-EJHVYXUP-Co7OtwGA.js → timeline-definition-EJHVYXUP-DEXnhdui.js} +1 -1
- package/dist/assets/{usecaseDiagram-POWQR4AR-BYHFARv3.js → usecaseDiagram-POWQR4AR-CJTa0bWM.js} +1 -1
- package/dist/assets/{vennDiagram-UO4OBE2U-C-sdhL3h.js → vennDiagram-UO4OBE2U-CKphfio6.js} +1 -1
- package/dist/assets/{wardleyDiagram-VNRHLVJA-wf8ZNrmQ.js → wardleyDiagram-VNRHLVJA-COQ5I4oG.js} +1 -1
- package/dist/assets/{xychartDiagram-PMCCYNJV-BjRlkVGv.js → xychartDiagram-PMCCYNJV-BqlgNUIm.js} +1 -1
- package/dist/index.html +2 -2
- package/dist-server/container-mcp.js +1 -0
- package/dist-server/index.js +1305 -747
- package/dist-server/openmausbot.js +3 -2
- package/dist-server/pair-cli.js +3 -2
- package/dist-server/server/about-me-sync.js +172 -0
- package/dist-server/server/config.js +1 -1
- package/dist-server/server/dictation.js +8 -0
- package/dist-server/server/drivers/claude.js +4 -4
- package/dist-server/server/icm-context.js +0 -22
- package/dist-server/server/index.js +26 -31
- package/dist-server/server/oauth-account-core.js +153 -0
- package/dist-server/server/oauth-account-tools.js +7 -348
- package/dist-server/server/oauth-calendar-tools.js +551 -0
- package/dist-server/server/paw/service.js +2 -1
- package/dist-server/server/paw/workspace.js +2 -1
- package/dist-server/server/vault/routes.js +20 -0
- package/dist-server/server/vault/store.js +24 -0
- package/dist-server/shared/oauth-providers.js +2 -1
- package/dist-server/shared/vault-csv.js +94 -0
- package/dist-server/vps-container-mcp.js +1 -0
- package/package.json +1 -1
- package/dist/assets/channel-sBYHnjxz.js +0 -1
- package/dist/assets/index-COwCaN7p.css +0 -1
- package/dist/assets/swimlanesDiagram-TC7HE7FX-9DghUs7S.js +0 -8
|
@@ -9,7 +9,8 @@ export const OAUTH_PROVIDER_IDS = ["google", "microsoft"];
|
|
|
9
9
|
* docs/chibitek/google-verification/scope-map.md):
|
|
10
10
|
* gmail gmail_search, gmail_read gmail.readonly (restricted)
|
|
11
11
|
* gmailSend gmail_create_draft, gmail_send_draft gmail.compose (restricted)
|
|
12
|
-
* calendar calendar_list_events, calendar_create_event
|
|
12
|
+
* calendar calendar_list_events, calendar_get_event, calendar_create_event,
|
|
13
|
+
* calendar_update_event, calendar_delete_event calendar.events (sensitive)
|
|
13
14
|
* drive drive_search, drive_read drive.readonly (restricted)
|
|
14
15
|
* drive.file cannot serve drive_search: it only reaches files Atomic created
|
|
15
16
|
* or the person picked in Google's file picker. */
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { vaultOrigin } from "./vault.js";
|
|
2
|
+
export class VaultCsvError extends Error {
|
|
3
|
+
}
|
|
4
|
+
/** RFC 4180: quoted fields, doubled quotes, commas and newlines inside quotes. */
|
|
5
|
+
export function parseCsv(text) {
|
|
6
|
+
const rows = [];
|
|
7
|
+
let row = [];
|
|
8
|
+
let field = "";
|
|
9
|
+
let quoted = false;
|
|
10
|
+
const s = text.replace(/^/, "");
|
|
11
|
+
for (let i = 0; i < s.length; i++) {
|
|
12
|
+
const c = s[i];
|
|
13
|
+
if (quoted) {
|
|
14
|
+
if (c === '"' && s[i + 1] === '"') {
|
|
15
|
+
field += '"';
|
|
16
|
+
i++;
|
|
17
|
+
}
|
|
18
|
+
else if (c === '"')
|
|
19
|
+
quoted = false;
|
|
20
|
+
else
|
|
21
|
+
field += c;
|
|
22
|
+
}
|
|
23
|
+
else if (c === '"')
|
|
24
|
+
quoted = true;
|
|
25
|
+
else if (c === ",") {
|
|
26
|
+
row.push(field);
|
|
27
|
+
field = "";
|
|
28
|
+
}
|
|
29
|
+
else if (c === "\n" || c === "\r") {
|
|
30
|
+
if (c === "\r" && s[i + 1] === "\n")
|
|
31
|
+
i++;
|
|
32
|
+
row.push(field);
|
|
33
|
+
rows.push(row);
|
|
34
|
+
row = [];
|
|
35
|
+
field = "";
|
|
36
|
+
}
|
|
37
|
+
else
|
|
38
|
+
field += c;
|
|
39
|
+
}
|
|
40
|
+
if (field || row.length) {
|
|
41
|
+
row.push(field);
|
|
42
|
+
rows.push(row);
|
|
43
|
+
}
|
|
44
|
+
return rows.filter((r) => r.some((cell) => cell.trim()));
|
|
45
|
+
}
|
|
46
|
+
// Header names used by Chrome, Edge, Safari/Apple Passwords, Firefox,
|
|
47
|
+
// 1Password, Bitwarden, LastPass, Dashlane, Proton Pass, NordPass, RoboForm.
|
|
48
|
+
// Earlier names win, so a "username" column beats an "email" column.
|
|
49
|
+
const COLUMNS = {
|
|
50
|
+
url: ["url", "login_uri", "website", "web site", "uri", "login url"],
|
|
51
|
+
username: ["username", "login_username", "user name", "login", "user", "login name", "email", "e-mail"],
|
|
52
|
+
password: ["password", "login_password", "pwd", "pass"],
|
|
53
|
+
name: ["name", "title", "account"],
|
|
54
|
+
type: ["type"],
|
|
55
|
+
};
|
|
56
|
+
/** Logins from a password manager's CSV export. Notes, TOTP seeds and custom
|
|
57
|
+
* fields are dropped: they can hold secrets and hints are not secret. Rows
|
|
58
|
+
* without a website, username and password, or that are not logins, are
|
|
59
|
+
* counted in `skipped`. Imported items are private to the person (no bots). */
|
|
60
|
+
export function vaultLoginsFromCsv(text) {
|
|
61
|
+
const [header, ...rows] = parseCsv(text);
|
|
62
|
+
if (!header)
|
|
63
|
+
return { logins: [], skipped: 0 };
|
|
64
|
+
const names = header.map((cell) => cell.trim().toLowerCase());
|
|
65
|
+
const col = (key) => {
|
|
66
|
+
for (const name of COLUMNS[key]) {
|
|
67
|
+
const index = names.indexOf(name);
|
|
68
|
+
if (index >= 0)
|
|
69
|
+
return index;
|
|
70
|
+
}
|
|
71
|
+
return -1;
|
|
72
|
+
};
|
|
73
|
+
const at = { url: col("url"), username: col("username"), password: col("password"), name: col("name"), type: col("type") };
|
|
74
|
+
if (at.url < 0 || at.password < 0 || at.username < 0)
|
|
75
|
+
throw new VaultCsvError("This CSV has no website, username and password columns.");
|
|
76
|
+
const logins = [];
|
|
77
|
+
let skipped = 0;
|
|
78
|
+
for (const row of rows) {
|
|
79
|
+
const cell = (index) => (index >= 0 ? row[index] ?? "" : "").trim();
|
|
80
|
+
const type = cell(at.type).toLowerCase();
|
|
81
|
+
const raw = cell(at.url).split(/[\s,]+/)[0] ?? "";
|
|
82
|
+
// Old entries saved as http:// or a bare domain are filled over HTTPS.
|
|
83
|
+
const website = vaultOrigin(/^[a-z][a-z0-9+.-]*:\/\//i.test(raw) ? raw.replace(/^http:\/\//i, "https://") : `https://${raw}`);
|
|
84
|
+
const username = cell(at.username);
|
|
85
|
+
const password = row[at.password] ?? "";
|
|
86
|
+
if ((type && type !== "login") || !raw || !website || !username || !password || username.length > 320 || password.length > 4096) {
|
|
87
|
+
skipped++;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const label = (cell(at.name) || new URL(website).hostname).slice(0, 200);
|
|
91
|
+
logins.push({ kind: "login", label, hints: "", botIds: [], expiresAt: null, website, username, password });
|
|
92
|
+
}
|
|
93
|
+
return { logins, skipped };
|
|
94
|
+
}
|
|
@@ -17055,6 +17055,7 @@ var appConfigSchema = external_exports.object({
|
|
|
17055
17055
|
icm: external_exports.object({
|
|
17056
17056
|
enabled: external_exports.boolean().optional(),
|
|
17057
17057
|
aboutMePrefilled: external_exports.boolean().optional(),
|
|
17058
|
+
// no longer read (About me syncs with PAW); kept so older configs parse
|
|
17058
17059
|
path: external_exports.string().trim().max(4096).refine(
|
|
17059
17060
|
(value) => !["\r", "\n", "\0"].some((character) => value.includes(character)),
|
|
17060
17061
|
"Use a folder path without control characters"
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{U as a,C as n}from"./mermaid.core-DC5051S_.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
|