@chibitek/chibi 0.1.157 → 0.1.160

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.
Files changed (107) hide show
  1. package/dist/assets/{abnfDiagram-O67JEVCF-BkYbog6D.js → abnfDiagram-O67JEVCF-CpuRvzQ3.js} +1 -1
  2. package/dist/assets/{arc-QwTuMsxp.js → arc-ko1e0R6h.js} +1 -1
  3. package/dist/assets/{architectureDiagram-NJMV4G6O-GdicO2PQ.js → architectureDiagram-NJMV4G6O-OZ3SsOOa.js} +1 -1
  4. package/dist/assets/{blockDiagram-BEXU5L5S-Dkr29TFF.js → blockDiagram-BEXU5L5S-DLRkBkjs.js} +1 -1
  5. package/dist/assets/{c4Diagram-YGBWAQC7-Dz_3dstx.js → c4Diagram-YGBWAQC7-e8Q3qMnw.js} +1 -1
  6. package/dist/assets/channel-Lp7erhx-.js +1 -0
  7. package/dist/assets/{chunk-2Q5K7J3B-CGsfu-PI.js → chunk-2Q5K7J3B-hCDqaM4Q.js} +1 -1
  8. package/dist/assets/{chunk-3FUC2YCW-CDqI37_6.js → chunk-3FUC2YCW-Dy3Pahu-.js} +2 -2
  9. package/dist/assets/{chunk-5VM5RSS4-DnmSuyTb.js → chunk-5VM5RSS4-QMK3iFBF.js} +1 -1
  10. package/dist/assets/{chunk-GTNCS2PH-Dh7tXcJT.js → chunk-GTNCS2PH-6fyp9ERp.js} +1 -1
  11. package/dist/assets/{chunk-GWA4HPMP-D_SM1ZrY.js → chunk-GWA4HPMP-DWvOhTaO.js} +1 -1
  12. package/dist/assets/{chunk-JWPE2WC7-DmeMuTsI.js → chunk-JWPE2WC7-DgohMW2S.js} +1 -1
  13. package/dist/assets/{chunk-NETBCI7D-R1UT9b5f.js → chunk-NETBCI7D-sRGeD2Y7.js} +1 -1
  14. package/dist/assets/{chunk-WEXAMYUT-DpPfU1yO.js → chunk-WEXAMYUT-CZslD_VF.js} +1 -1
  15. package/dist/assets/{chunk-XXDRQBXY-DlihfTkM.js → chunk-XXDRQBXY-D7ocO3VN.js} +1 -1
  16. package/dist/assets/{classDiagram-v2-NBCMYWYE-BlTV6lSC.js → classDiagram-v2-NBCMYWYE-T1lLqHHW.js} +1 -1
  17. package/dist/assets/{cose-bilkent-JH36ORCC-Br1kPFWw.js → cose-bilkent-JH36ORCC-BdeLiJr3.js} +1 -1
  18. package/dist/assets/{cynefin-OW5HDTMX-BqPp3ZMd.js → cynefin-OW5HDTMX-BydCA0pv.js} +1 -1
  19. package/dist/assets/{cynefinDiagram-VND7K2PF-DFfs_k8-.js → cynefinDiagram-VND7K2PF-DBxckjwQ.js} +1 -1
  20. package/dist/assets/{dagre-6A5THRUB-Ch3xIJA7.js → dagre-6A5THRUB-CAsvq6Zk.js} +1 -1
  21. package/dist/assets/{diagram-22UHCM2B-DIHUD87N.js → diagram-22UHCM2B-DTwH3rA_.js} +1 -1
  22. package/dist/assets/{diagram-3UASUU5V-CAgQQdeF.js → diagram-3UASUU5V-BNYj1bey.js} +1 -1
  23. package/dist/assets/{diagram-ATOU4E4O-9HVKodrI.js → diagram-ATOU4E4O-CihwYFxb.js} +1 -1
  24. package/dist/assets/{diagram-CDSNMT55-DU2kDq_h.js → diagram-CDSNMT55-nouwk3s2.js} +1 -1
  25. package/dist/assets/{diagram-MLGK6HIB-D-qTAhHD.js → diagram-MLGK6HIB-BoKewJeA.js} +1 -1
  26. package/dist/assets/{diagram-MPIPVDR6-C31SnI9P.js → diagram-MPIPVDR6-CrE1m9DQ.js} +1 -1
  27. package/dist/assets/{ebnfDiagram-ZINNZB2B-BHrdiBVd.js → ebnfDiagram-ZINNZB2B-DRj0aU4Y.js} +1 -1
  28. package/dist/assets/{elk-276RUBZZ-DWyljRo5.js → elk-276RUBZZ-Do0JzCG5.js} +1 -1
  29. package/dist/assets/{erDiagram-OPXOYQCR-DyY59XPp.js → erDiagram-OPXOYQCR-CRsI9pXb.js} +1 -1
  30. package/dist/assets/{flowDiagram-KWPJA3E3-BevMIeAy.js → flowDiagram-KWPJA3E3-dtD6wm3G.js} +1 -1
  31. package/dist/assets/{ganttDiagram-FUAMR5RP-Ct18WHf4.js → ganttDiagram-FUAMR5RP-Cn7KyLCo.js} +1 -1
  32. package/dist/assets/{gitGraphDiagram-X574FWY7-yhixO1N3.js → gitGraphDiagram-X574FWY7-CGH_VWzq.js} +1 -1
  33. package/dist/assets/index-B2fJMh8N.css +1 -0
  34. package/dist/assets/{index-ziyH_uer.js → index-BIcziktH.js} +253 -250
  35. package/dist/assets/{index-BEJ8EKQt.js → index-Bk8iAodB.js} +1 -1
  36. package/dist/assets/{infoDiagram-VRGFBTTK-CYa-r_S5.js → infoDiagram-VRGFBTTK-CQKsYTCL.js} +1 -1
  37. package/dist/assets/{ishikawaDiagram-OU5B5YK6-CnxwM7gY.js → ishikawaDiagram-OU5B5YK6-D5catDe0.js} +1 -1
  38. package/dist/assets/{journeyDiagram-ZHPQQLJL-RKQfXBrp.js → journeyDiagram-ZHPQQLJL-KjY8mki9.js} +1 -1
  39. package/dist/assets/{kanban-definition-PNTS6WVX-CSlRDIF6.js → kanban-definition-PNTS6WVX-BKCyJtge.js} +1 -1
  40. package/dist/assets/{linear-Ch19KVyt.js → linear-B-_obUkq.js} +1 -1
  41. package/dist/assets/{mermaid.core-Bek7I_t6.js → mermaid.core-DlSzuDKt.js} +5 -5
  42. package/dist/assets/{mindmap-definition-NLK3R4M7-B_LiP8su.js → mindmap-definition-NLK3R4M7-BFQSaYKh.js} +1 -1
  43. package/dist/assets/{pegDiagram-GJSIUBJH-DhzQeiZf.js → pegDiagram-GJSIUBJH-l51izlev.js} +1 -1
  44. package/dist/assets/{pieDiagram-5QR66LMP-D-BYNKHS.js → pieDiagram-5QR66LMP-6NEXRoZX.js} +1 -1
  45. package/dist/assets/{quadrantDiagram-O4NWA36T-DnCm0heP.js → quadrantDiagram-O4NWA36T-BCC9XlOe.js} +1 -1
  46. package/dist/assets/{railroadDiagram-XR7U4H2S-COqgYnhn.js → railroadDiagram-XR7U4H2S-Dd4TmJ86.js} +1 -1
  47. package/dist/assets/{requirementDiagram-PLB6GJNP-Dvt72ajf.js → requirementDiagram-PLB6GJNP-C1E5DaDb.js} +1 -1
  48. package/dist/assets/{sankeyDiagram-IPEJSGJF-CisC9nbp.js → sankeyDiagram-IPEJSGJF-Ci6r7abb.js} +1 -1
  49. package/dist/assets/{sequenceDiagram-PO4LG4MO-BO8xqvxa.js → sequenceDiagram-PO4LG4MO-BJ-I6WOh.js} +1 -1
  50. package/dist/assets/{sizeCapture-INFHLROL-DLk1jBzf.js → sizeCapture-INFHLROL-Cs5QbLOP.js} +1 -1
  51. package/dist/assets/{stateDiagram-v2-GCMORJYK-C_wutSE7.js → stateDiagram-v2-GCMORJYK-Bw--rdvq.js} +1 -1
  52. package/dist/assets/{swimlanes-2SLR337P-hqo1UlEi.js → swimlanes-2SLR337P-B1O9IEz5.js} +1 -1
  53. package/dist/assets/swimlanesDiagram-TC7HE7FX-C6wGgYKP.js +8 -0
  54. package/dist/assets/{timeline-definition-EJHVYXUP-C_DJldPg.js → timeline-definition-EJHVYXUP-CTZ7DXaw.js} +1 -1
  55. package/dist/assets/{usecaseDiagram-POWQR4AR-CsidVXMA.js → usecaseDiagram-POWQR4AR-DjwgNG0H.js} +1 -1
  56. package/dist/assets/{vennDiagram-UO4OBE2U-Bs-IIqn_.js → vennDiagram-UO4OBE2U-DrdJG55h.js} +1 -1
  57. package/dist/assets/{wardleyDiagram-VNRHLVJA-CXEUyxaj.js → wardleyDiagram-VNRHLVJA-HVq776nz.js} +1 -1
  58. package/dist/assets/{xychartDiagram-PMCCYNJV-B9qvmm4P.js → xychartDiagram-PMCCYNJV-DPf9VEua.js} +1 -1
  59. package/dist/index.html +2 -2
  60. package/dist-server/connector-proxy.js +205 -0
  61. package/dist-server/container-mcp.js +150 -96
  62. package/dist-server/drivers/agents-proxy.js +81 -81
  63. package/dist-server/index.js +7054 -6099
  64. package/dist-server/openmausbot.js +940 -727
  65. package/dist-server/pair-cli.js +940 -727
  66. package/dist-server/server/attachment-mimes.js +58 -0
  67. package/dist-server/server/attachments.js +28 -67
  68. package/dist-server/server/avatar-image.js +1 -0
  69. package/dist-server/server/avatar-subscription.js +74 -0
  70. package/dist-server/server/cli.js +5 -4
  71. package/dist-server/server/colima-docker.js +136 -0
  72. package/dist-server/server/composio.js +1051 -0
  73. package/dist-server/server/connector-proxy.js +249 -0
  74. package/dist-server/server/container-computer.js +31 -63
  75. package/dist-server/server/container-mcp.js +5 -0
  76. package/dist-server/server/drivers/claude-message.js +12 -0
  77. package/dist-server/server/drivers/claude.js +9 -12
  78. package/dist-server/server/drivers/codex-image.js +141 -0
  79. package/dist-server/server/drivers/codex.js +6 -9
  80. package/dist-server/server/drivers/openai-chat.js +13 -2
  81. package/dist-server/server/engine-failover.js +62 -12
  82. package/dist-server/server/engine-failure.js +2 -2
  83. package/dist-server/server/harness-import/history.js +5 -5
  84. package/dist-server/server/harness-import/test-fixtures.js +1 -1
  85. package/dist-server/server/index.js +75 -36
  86. package/dist-server/server/mcp-public-registry.js +325 -0
  87. package/dist-server/server/message-reactions.js +11 -0
  88. package/dist-server/server/model-evidence-context.js +18 -0
  89. package/dist-server/server/model-evidence.js +145 -0
  90. package/dist-server/server/port-in-use.js +21 -0
  91. package/dist-server/server/session-fallback.js +76 -0
  92. package/dist-server/server/vault/routes.js +43 -0
  93. package/dist-server/server/vault/runtime.js +48 -0
  94. package/dist-server/server/vault/store.js +177 -0
  95. package/dist-server/shared/connector-availability.js +12 -0
  96. package/dist-server/shared/desktop-private-port.js +1 -0
  97. package/dist-server/shared/emoji-catalog.json +1 -0
  98. package/dist-server/shared/emoji.js +27 -0
  99. package/dist-server/shared/mascot-bodies.js +9 -1
  100. package/dist-server/shared/model-evidence.js +25 -0
  101. package/dist-server/shared/subscription-bots.js +3 -0
  102. package/dist-server/shared/vault.js +59 -0
  103. package/dist-server/vps-container-mcp.js +86 -84
  104. package/package.json +1 -1
  105. package/dist/assets/channel-D2y0i2ps.js +0 -1
  106. package/dist/assets/index-DGWeJcck.css +0 -1
  107. package/dist/assets/swimlanesDiagram-TC7HE7FX-D15JqTL9.js +0 -8
@@ -0,0 +1,27 @@
1
+ import data from "./emoji-catalog.json" with { type: "json" };
2
+ // Unicode Emoji 18.0, fully-qualified sequences. Native fonts supply the artwork.
3
+ // Source: https://unicode.org/Public/18.0.0/emoji/emoji-test.txt
4
+ // License: emoji-LICENSE.txt. Keep sequences intact, including ZWJ and modifiers.
5
+ export const emojiCatalog = data;
6
+ export const quickEmoji = ["👍", "👎", "❤️", "😂", "🎉"];
7
+ const known = new Set(emojiCatalog.flatMap(([emoji]) => [emoji, emoji.replaceAll("\uFE0F", "")]));
8
+ export function isReactionEmoji(value) {
9
+ return typeof value === "string" && value.length <= 64 && known.has(value);
10
+ }
11
+ export function findEmoji(query, category = "") {
12
+ const words = query.toLocaleLowerCase().trim().split(/\s+/).filter(Boolean);
13
+ return emojiCatalog.filter(([emoji, name, group]) => (!category || category === group) &&
14
+ words.every(word => emoji.includes(word) || name.toLocaleLowerCase().includes(word)));
15
+ }
16
+ export const nativeEmojiFont = '"Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", emoji, sans-serif';
17
+ const withoutTone = (emoji) => emoji.replace(/[\u{1F3FB}-\u{1F3FF}]/gu, "");
18
+ const tones = new Map();
19
+ for (const entry of emojiCatalog) {
20
+ const base = withoutTone(entry[0]);
21
+ const family = tones.get(base) ?? [];
22
+ family.push(entry);
23
+ tones.set(base, family);
24
+ }
25
+ export function emojiSkinTones(emoji) {
26
+ return tones.get(withoutTone(emoji)) ?? [];
27
+ }
@@ -15,7 +15,7 @@
15
15
  */
16
16
  import { z } from "zod";
17
17
  /** Every selectable body id, in the order the picker shows them. */
18
- export const MASCOT_BODY_IDS = ["cursor", "blob", "circle", "squircle", "capsule", "drop", "shield", "hexagon", "diamond", "star"];
18
+ export const MASCOT_BODY_IDS = ["cursor", "blob", "circle", "squircle", "capsule", "drop", "shield", "hexagon", "diamond", "star", "panes"];
19
19
  export const mascotBodySchema = z.enum(MASCOT_BODY_IDS);
20
20
  /** The shipped mascot, and the fallback for any unrecognised value. */
21
21
  export const DEFAULT_MASCOT_BODY = "cursor";
@@ -100,6 +100,14 @@ export const MASCOT_BODIES = {
100
100
  clip: "<path d=\"M100 2C110.56054 20.13133 121.12108 38.26266 131.68163 56.39398C152.18893 60.83477 172.69623 65.27555 193.20354 69.71633C179.22301 85.3629 165.24248 101.00946 151.26195 116.65602C153.37562 137.5319 155.48929 158.40778 157.60295 179.28367C138.40197 170.82244 119.20098 162.36122 100 153.9C80.79902 162.36122 61.59803 170.82244 42.39705 179.28367C44.51071 158.40778 46.62438 137.5319 48.73805 116.65602C34.75752 101.00946 20.77699 85.3629 6.79646 69.71633C27.30377 65.27555 47.81107 60.83477 68.31837 56.39398C78.87892 38.26266 89.43946 20.13133 100 2Z\"/>",
101
101
  anchor: { x: 113.82, y: 125.43, scale: 0.791 },
102
102
  },
103
+ panes: {
104
+ id: "panes",
105
+ name: "Panes",
106
+ fit: "translate(-2.3321 -2.3321) scale(1.166026)",
107
+ body: "<path fill=\"{{GRADIENT}}\" d=\"M42 2C56 2 70 2 84 2C92 2 92 32 100 32C108 32 108 2 116 2C130 2 144 2 158 2C180.09139 2 198 19.90861 198 42C198 56 198 70 198 84C198 92 168 92 168 100C168 108 198 108 198 116C198 130 198 144 198 158C198 180.09139 180.09139 198 158 198C144 198 130 198 116 198C108 198 108 168 100 168C92 168 92 198 84 198C70 198 56 198 42 198C19.90861 198 2 180.09139 2 158C2 144 2 130 2 116C2 108 32 108 32 100C32 92 2 92 2 84C2 70 2 56 2 42C2 19.90861 19.90861 2 42 2Z\"/>",
108
+ clip: "<path d=\"M42 2C56 2 70 2 84 2C92 2 92 32 100 32C108 32 108 2 116 2C130 2 144 2 158 2C180.09139 2 198 19.90861 198 42C198 56 198 70 198 84C198 92 168 92 168 100C168 108 198 108 198 116C198 130 198 144 198 158C198 180.09139 180.09139 198 158 198C144 198 130 198 116 198C108 198 108 168 100 168C92 168 92 198 84 198C70 198 56 198 42 198C19.90861 198 2 180.09139 2 158C2 144 2 130 2 116C2 108 32 108 32 100C32 92 2 92 2 84C2 70 2 56 2 42C2 19.90861 19.90861 2 42 2Z\"/>",
109
+ anchor: { x: 113.82, y: 102.65, scale: 0.791 },
110
+ },
103
111
  };
104
112
  /** Runtime-safe read of an untrusted persisted or streamed body id. */
105
113
  export function botMascotBody(value) {
@@ -0,0 +1,25 @@
1
+ export function modelEvidenceMetrics(rows) {
2
+ const turns = new Set(rows.map(row => row.logicalTurnId));
3
+ const fallbacks = new Set(rows.filter(row => row.kind === "fallback").map(row => row.logicalTurnId));
4
+ const calls = new Map();
5
+ for (const row of rows)
6
+ if (row.callId && (row.kind === "call" || row.kind === "evidence")) {
7
+ const key = `${row.attemptId}:${row.callId}`;
8
+ const old = calls.get(key);
9
+ if (!old || row.level === "response-reported" || old.level !== "response-reported")
10
+ calls.set(key, row);
11
+ }
12
+ const confirmed = [...calls.values()].filter(row => row.level === "response-reported" && row.reportedModel);
13
+ const comparable = confirmed.filter(row => row.model);
14
+ const mismatches = comparable.filter(row => row.model !== row.reportedModel);
15
+ const counts = {};
16
+ for (const row of confirmed) {
17
+ const key = `${row.provider}: ${row.reportedModel}`;
18
+ counts[key] = (counts[key] ?? 0) + 1;
19
+ }
20
+ return { turns: turns.size, observedCalls: calls.size, confirmedCalls: confirmed.length, counts,
21
+ confirmationCoverage: calls.size ? confirmed.length / calls.size : null,
22
+ comparableCalls: comparable.length, mismatches: mismatches.length,
23
+ mismatchRate: comparable.length ? mismatches.length / comparable.length : null,
24
+ fallbackTurns: fallbacks.size, fallbackFrequency: turns.size ? fallbacks.size / turns.size : null };
25
+ }
@@ -88,6 +88,9 @@ export function subscriptionProviderForEngine(engine) {
88
88
  export function isProviderModel(provider, model) {
89
89
  return provider.ownModels ? provider.ownModels.test(model) : true;
90
90
  }
91
+ /** Turns one conversation of a company subscription bot may run on another
92
+ * provider's subscription when its own has no account free (server/session-fallback.ts). */
93
+ export const SESSION_FALLBACK_TURNS = 50;
91
94
  export function isSubscriptionBot(bot) {
92
95
  const value = bot?.subscription;
93
96
  return Boolean(value && typeof value.instanceId === "string" && subscriptionProvider(value.provider));
@@ -0,0 +1,59 @@
1
+ import { z } from "zod";
2
+ /** Only absolute HTTPS origins can receive a saved item. Paths never broaden
3
+ * authority to sibling domains, frames, ports or subdomains. */
4
+ export function vaultOrigin(raw) {
5
+ if (raw.length > 2048 || [...raw].some((c) => c.charCodeAt(0) <= 32 || c.charCodeAt(0) === 127) || raw.includes("\\"))
6
+ return null;
7
+ try {
8
+ const url = new URL(raw);
9
+ if (url.protocol !== "https:" || !url.hostname || url.username || url.password || url.hostname.endsWith("."))
10
+ return null;
11
+ return url.origin;
12
+ }
13
+ catch {
14
+ return null;
15
+ }
16
+ }
17
+ const text = (max) => z.string().max(max);
18
+ const origin = z.string().refine((value) => vaultOrigin(value) !== null).transform((value) => vaultOrigin(value));
19
+ const address = z.object({
20
+ name: text(200), line1: text(300), line2: text(300), city: text(200),
21
+ region: text(200), postalCode: text(40), country: text(100),
22
+ }).strict();
23
+ const base = {
24
+ label: z.string().trim().min(1).max(200), hints: text(1000),
25
+ botIds: z.array(z.string().uuid()).max(100).refine((ids) => new Set(ids).size === ids.length),
26
+ expiresAt: z.number().int().positive().max(Number.MAX_SAFE_INTEGER).nullable(),
27
+ };
28
+ /** Reject unknown fields rather than accidentally persisting secrets in
29
+ * metadata. CVC is deliberately absent: it belongs to a single secure use. */
30
+ export const vaultInputSchema = z.discriminatedUnion("kind", [
31
+ z.object({ ...base, kind: z.literal("login"), website: origin,
32
+ username: z.string().min(1).max(320), password: z.string().min(1).max(4096),
33
+ }).strict(),
34
+ z.object({ ...base, kind: z.literal("card"), origins: z.array(origin).min(1).max(50),
35
+ number: z.string().regex(/^\d{12,19}$/), expiryMonth: z.number().int().min(1).max(12),
36
+ expiryYear: z.number().int().min(2000).max(9999), billing: address,
37
+ }).strict(),
38
+ z.object({ ...base, kind: z.literal("contact"), origins: z.array(origin).min(1).max(50),
39
+ address, email: z.union([z.literal(""), z.string().email().max(320)]), phone: text(80),
40
+ }).strict(),
41
+ ]);
42
+ /** Explicit allowlist. Never spread a stored item into a response. */
43
+ export function vaultMetadata(item) {
44
+ return {
45
+ id: item.id, kind: item.kind, label: item.label, hints: item.hints,
46
+ botIds: [...item.botIds], expiresAt: item.expiresAt,
47
+ origins: item.kind === "login" ? [item.website] : [...item.origins],
48
+ ...(item.kind === "login" ? { username: item.username } : {}),
49
+ ...(item.kind === "card" ? { lastFour: item.number.slice(-4), expiryMonth: item.expiryMonth, expiryYear: item.expiryYear, billing: { ...item.billing } } : {}),
50
+ ...(item.kind === "contact" ? { address: { ...item.address }, email: item.email, phone: item.phone } : {}),
51
+ createdAt: item.createdAt, updatedAt: item.updatedAt,
52
+ };
53
+ }
54
+ export function vaultUseAllowed(item, actor, now) {
55
+ const destination = vaultOrigin(actor.destination);
56
+ return Number.isSafeInteger(now) && now >= 0 && item.ownerId === actor.ownerId && item.botIds.includes(actor.botId)
57
+ && (item.expiresAt === null || now < item.expiresAt) && destination !== null
58
+ && (item.kind === "login" ? item.website === destination : item.origins.includes(destination));
59
+ }