@chibitek/chibi 0.1.161 → 0.1.168
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-Bb-Unz3V.js → abnfDiagram-O67JEVCF-DUyzT6Xq.js} +1 -1
- package/dist/assets/{arc-HBMH7B4K.js → arc-B4-kO642.js} +1 -1
- package/dist/assets/{architectureDiagram-NJMV4G6O-CYwkb2PE.js → architectureDiagram-NJMV4G6O-DgKdnNL2.js} +1 -1
- package/dist/assets/{blockDiagram-BEXU5L5S-DPYYNxBH.js → blockDiagram-BEXU5L5S-B6oV3kDr.js} +1 -1
- package/dist/assets/{c4Diagram-YGBWAQC7-DZ9hKDlA.js → c4Diagram-YGBWAQC7-Dp0E43jx.js} +1 -1
- package/dist/assets/channel-BidDehbw.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-OKrUlts6.js → chunk-2Q5K7J3B-Cfv1WVUo.js} +1 -1
- package/dist/assets/{chunk-3FUC2YCW-Tuur0lqz.js → chunk-3FUC2YCW-_-STY2yO.js} +2 -2
- package/dist/assets/{chunk-5VM5RSS4-BL8QOZeP.js → chunk-5VM5RSS4-C6MZm1cm.js} +1 -1
- package/dist/assets/{chunk-GTNCS2PH-DMi8-ixt.js → chunk-GTNCS2PH-C__aVIJy.js} +1 -1
- package/dist/assets/{chunk-GWA4HPMP-Dd7yNJ0G.js → chunk-GWA4HPMP-fSrARJuB.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-g2dOoIMX.js → chunk-JWPE2WC7-CJioJB6h.js} +1 -1
- package/dist/assets/{chunk-NETBCI7D-Cum7feOh.js → chunk-NETBCI7D-o6MBGCq_.js} +1 -1
- package/dist/assets/{chunk-WEXAMYUT-BzCC1jc4.js → chunk-WEXAMYUT-O-TFLbdc.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-Ck63jUMo.js → chunk-XXDRQBXY-DYS9CQbl.js} +1 -1
- package/dist/assets/{classDiagram-v2-NBCMYWYE-DFSuRVMZ.js → classDiagram-v2-NBCMYWYE-BC4bSH09.js} +1 -1
- package/dist/assets/{cose-bilkent-JH36ORCC-CegRj_kY.js → cose-bilkent-JH36ORCC-7NKuC3-C.js} +1 -1
- package/dist/assets/{cynefin-OW5HDTMX-cZS_kt1A.js → cynefin-OW5HDTMX-CuWv5cOw.js} +1 -1
- package/dist/assets/{cynefinDiagram-VND7K2PF-DfQa9Rht.js → cynefinDiagram-VND7K2PF-D_l_JrG5.js} +1 -1
- package/dist/assets/{dagre-6A5THRUB-DJ9qftJu.js → dagre-6A5THRUB-D7eucSmr.js} +1 -1
- package/dist/assets/{diagram-22UHCM2B-KXUGUahJ.js → diagram-22UHCM2B-CADR5v1e.js} +1 -1
- package/dist/assets/{diagram-3UASUU5V-BudCYrCp.js → diagram-3UASUU5V-DF_fBOZn.js} +1 -1
- package/dist/assets/{diagram-ATOU4E4O-Du2O03NS.js → diagram-ATOU4E4O-DE5p59WH.js} +1 -1
- package/dist/assets/{diagram-CDSNMT55-DXybXGYf.js → diagram-CDSNMT55-vthvYooA.js} +1 -1
- package/dist/assets/{diagram-MLGK6HIB-DfrknXGE.js → diagram-MLGK6HIB-ByMHy4S-.js} +1 -1
- package/dist/assets/{diagram-MPIPVDR6-C29FmaJm.js → diagram-MPIPVDR6-C9hKBUnO.js} +1 -1
- package/dist/assets/{ebnfDiagram-ZINNZB2B-BF9wS0Nz.js → ebnfDiagram-ZINNZB2B-Djv6hWEl.js} +1 -1
- package/dist/assets/{elk-276RUBZZ-B2Fah1VF.js → elk-276RUBZZ-CmUjf18z.js} +1 -1
- package/dist/assets/{erDiagram-OPXOYQCR-Di3q4bpF.js → erDiagram-OPXOYQCR-DkmXQUok.js} +1 -1
- package/dist/assets/{flowDiagram-KWPJA3E3-D1UiqwbF.js → flowDiagram-KWPJA3E3-6pz2poYn.js} +1 -1
- package/dist/assets/{ganttDiagram-FUAMR5RP-BjZqMt7o.js → ganttDiagram-FUAMR5RP-Cx9Fbw75.js} +1 -1
- package/dist/assets/{gitGraphDiagram-X574FWY7-DiZtdip7.js → gitGraphDiagram-X574FWY7-BR5MsYkP.js} +1 -1
- package/dist/assets/{index-dbQveHan.js → index-BoF5cGZq.js} +1 -1
- package/dist/assets/index-COwCaN7p.css +1 -0
- package/dist/assets/{index-XFwW09vd.js → index-Ckv52eaP.js} +191 -192
- package/dist/assets/{infoDiagram-VRGFBTTK-BJUJCgio.js → infoDiagram-VRGFBTTK-DoF183Am.js} +1 -1
- package/dist/assets/{ishikawaDiagram-OU5B5YK6-BX0XdHUx.js → ishikawaDiagram-OU5B5YK6-4T_-hM1-.js} +1 -1
- package/dist/assets/{journeyDiagram-ZHPQQLJL-Bg904IIx.js → journeyDiagram-ZHPQQLJL-Ca0T3Ngd.js} +1 -1
- package/dist/assets/{kanban-definition-PNTS6WVX-hkZMFMHZ.js → kanban-definition-PNTS6WVX-DNp_DAr9.js} +1 -1
- package/dist/assets/{linear-Bh29RTbQ.js → linear-COUoS2bF.js} +1 -1
- package/dist/assets/{mermaid.core-aqB1jW_w.js → mermaid.core-DQHowMIV.js} +5 -5
- package/dist/assets/{mindmap-definition-NLK3R4M7-D5GMV-Zd.js → mindmap-definition-NLK3R4M7-CMgO1Mkh.js} +1 -1
- package/dist/assets/{pegDiagram-GJSIUBJH-7_wFtkFH.js → pegDiagram-GJSIUBJH-BCVCZbsq.js} +1 -1
- package/dist/assets/{pieDiagram-5QR66LMP-DXtZBQ4f.js → pieDiagram-5QR66LMP-DxaMlX62.js} +1 -1
- package/dist/assets/{quadrantDiagram-O4NWA36T-C1v3ydTF.js → quadrantDiagram-O4NWA36T-qUD0pkur.js} +1 -1
- package/dist/assets/{railroadDiagram-XR7U4H2S-CLmhiOXg.js → railroadDiagram-XR7U4H2S-Dc6rcAJB.js} +1 -1
- package/dist/assets/{requirementDiagram-PLB6GJNP-BKxI2rh_.js → requirementDiagram-PLB6GJNP-DMTfI_lR.js} +1 -1
- package/dist/assets/{sankeyDiagram-IPEJSGJF-gKK-Qs7b.js → sankeyDiagram-IPEJSGJF-B0BWZys8.js} +1 -1
- package/dist/assets/{sequenceDiagram-PO4LG4MO-BT94Uowp.js → sequenceDiagram-PO4LG4MO-DZVt17mL.js} +1 -1
- package/dist/assets/{sizeCapture-INFHLROL-RDJL6sCM.js → sizeCapture-INFHLROL-BFQztpNW.js} +1 -1
- package/dist/assets/{stateDiagram-v2-GCMORJYK-DqHMzv-J.js → stateDiagram-v2-GCMORJYK-GeFCVCDr.js} +1 -1
- package/dist/assets/{swimlanes-2SLR337P-B-NN0ql6.js → swimlanes-2SLR337P-DTqQXTvP.js} +1 -1
- package/dist/assets/swimlanesDiagram-TC7HE7FX-CRQqFEdH.js +8 -0
- package/dist/assets/{timeline-definition-EJHVYXUP-C51S9tpN.js → timeline-definition-EJHVYXUP-BoiNrkP7.js} +1 -1
- package/dist/assets/{usecaseDiagram-POWQR4AR-DyfNMmhq.js → usecaseDiagram-POWQR4AR-CdfsSO2g.js} +1 -1
- package/dist/assets/{vennDiagram-UO4OBE2U-D924r33S.js → vennDiagram-UO4OBE2U-CHc_Fn1O.js} +1 -1
- package/dist/assets/{wardleyDiagram-VNRHLVJA-DXSfsjUr.js → wardleyDiagram-VNRHLVJA-Bv3KWVEF.js} +1 -1
- package/dist/assets/{xychartDiagram-PMCCYNJV-mYX9tnBU.js → xychartDiagram-PMCCYNJV-CQFknLPS.js} +1 -1
- package/dist/handbook/atomic-handbook.html +5 -0
- package/dist/index.html +2 -2
- package/dist-server/container-mcp.js +12 -6
- package/dist-server/drivers/agents-proxy.js +65 -41
- package/dist-server/index.js +5302 -4653
- package/dist-server/openmausbot.js +506 -288
- package/dist-server/pair-cli.js +506 -288
- package/dist-server/server/auto-approve.js +4 -1
- package/dist-server/server/brand.js +11 -0
- package/dist-server/server/config.js +19 -24
- package/dist-server/server/connection-credential.js +59 -0
- package/dist-server/server/container-computer.js +5 -26
- package/dist-server/server/credential-card-request.js +52 -0
- package/dist-server/server/dictation.js +6 -3
- package/dist-server/server/drivers/agents-call.js +3 -23
- package/dist-server/server/drivers/agents-catalog.js +2 -20
- package/dist-server/server/drivers/agents-credential.js +57 -0
- package/dist-server/server/drivers/builtIn.js +9 -1
- package/dist-server/server/drivers/claude-elicitation.js +76 -0
- package/dist-server/server/drivers/claude-stdin.js +47 -0
- package/dist-server/server/drivers/claude.js +23 -39
- package/dist-server/server/drivers/codex-elicitation.js +93 -0
- package/dist-server/server/drivers/codex.js +41 -107
- package/dist-server/server/engine-platform-fleet.js +32 -0
- package/dist-server/server/external-room.js +24 -0
- package/dist-server/server/index.js +105 -116
- package/dist-server/server/mcp-elicitation.js +120 -0
- package/dist-server/server/mcp-http.js +52 -2
- package/dist-server/server/mcp-probe.js +3 -0
- package/dist-server/server/peer-roster.js +43 -0
- package/dist-server/server/phone-secret.js +12 -4
- package/dist-server/server/routes/dictation.js +6 -1
- package/dist-server/server/routine-mochii-sync.js +252 -0
- package/dist-server/server/system-prompt.js +1 -1
- package/dist-server/server/text-actions.js +25 -0
- package/dist-server/shared/credential-request.js +15 -6
- package/dist-server/shared/engine-platforms.js +19 -0
- package/dist-server/vps-container-mcp.js +12 -6
- package/package.json +1 -1
- package/dist/assets/channel-Nx85fHZ4.js +0 -1
- package/dist/assets/index-B2fJMh8N.css +0 -1
- package/dist/assets/swimlanesDiagram-TC7HE7FX-BO2gR34z.js +0 -8
|
@@ -9,6 +9,12 @@ import readline from "node:readline";
|
|
|
9
9
|
|
|
10
10
|
// shared/credential-request.ts
|
|
11
11
|
var CREDENTIAL_TARGETS = {
|
|
12
|
+
connectionSecret: {
|
|
13
|
+
label: "Connection credential",
|
|
14
|
+
description: "A password, API key or token for the named connection.",
|
|
15
|
+
placeholder: "Enter the credential",
|
|
16
|
+
helpUrl: ""
|
|
17
|
+
},
|
|
12
18
|
xaiApiKey: {
|
|
13
19
|
label: "xAI API key",
|
|
14
20
|
description: "Used by the built-in Grok provider.",
|
|
@@ -50,6 +56,63 @@ function isCredentialTargetId(value) {
|
|
|
50
56
|
return typeof value === "string" && Object.prototype.hasOwnProperty.call(CREDENTIAL_TARGETS, value);
|
|
51
57
|
}
|
|
52
58
|
|
|
59
|
+
// server/drivers/agents-credential.ts
|
|
60
|
+
async function requestCredential(args, BOT_ID, THREAD_ID, api) {
|
|
61
|
+
const credentialId = args.credential_id;
|
|
62
|
+
if (!isCredentialTargetId(credentialId)) {
|
|
63
|
+
return { text: "request_credential needs a supported credential_id.", isError: true };
|
|
64
|
+
}
|
|
65
|
+
const reason = typeof args.reason === "string" ? args.reason.trim().slice(0, 240) : "";
|
|
66
|
+
const r = await api("/api/internal/request-credential", {
|
|
67
|
+
method: "POST",
|
|
68
|
+
body: JSON.stringify({
|
|
69
|
+
fromBotId: BOT_ID,
|
|
70
|
+
fromThreadId: THREAD_ID,
|
|
71
|
+
credentialId,
|
|
72
|
+
...credentialId === "connectionSecret" ? { connection: args.connection } : {},
|
|
73
|
+
...reason ? { reason } : {}
|
|
74
|
+
})
|
|
75
|
+
});
|
|
76
|
+
if (r.error) return { text: String(r.error), isError: true };
|
|
77
|
+
if (r.alreadyConfigured) {
|
|
78
|
+
return { text: `${r.label ?? CREDENTIAL_TARGETS[credentialId].label} is already configured. Continue the task.` };
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
text: `A secure ${r.label ?? CREDENTIAL_TARGETS[credentialId].label} request is ready. The desktop app and a freshly QR-paired mobile app show its secure entry card; older mobile pairings explain how to pair again or finish on the computer. End this turn; Atomic will resume the task after the user saves or declines. Never ask them to paste the key into chat.`
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
var credentialTool = {
|
|
85
|
+
name: "request_credential",
|
|
86
|
+
description: "Ask for a password, API key or token through Atomic's secure credential flow. Use connectionSecret with connection details for any HTTPS MCP service, or a built-in credential_id for a provider. The desktop app and a freshly QR-paired mobile app show a secure entry card; older mobile pairings show how to pair again or finish on the computer. Never claim a secure field opened unless this request succeeds, and never ask the user to paste a secret into chat. The secret is saved by the desktop app and is never returned to you. After calling this tool, end the turn; Atomic resumes the task after the user saves or declines.",
|
|
87
|
+
inputSchema: {
|
|
88
|
+
type: "object",
|
|
89
|
+
properties: {
|
|
90
|
+
credential_id: {
|
|
91
|
+
type: "string",
|
|
92
|
+
enum: Object.keys(CREDENTIAL_TARGETS),
|
|
93
|
+
description: "The credential the current task requires."
|
|
94
|
+
},
|
|
95
|
+
connection: {
|
|
96
|
+
type: "object",
|
|
97
|
+
description: "Required for connectionSecret. The person reviews this HTTPS MCP destination before entering a password, API key or token. Never include the secret here.",
|
|
98
|
+
properties: {
|
|
99
|
+
name: { type: "string", description: "MCP server name." },
|
|
100
|
+
url: { type: "string", description: "Official HTTPS MCP URL, without credentials or query parameters." },
|
|
101
|
+
header: { type: "string", description: "Credential header name, for example x-api-key or Authorization." },
|
|
102
|
+
prefix: { type: "string", enum: ["Bearer "], description: "Only when the service requires a Bearer token." }
|
|
103
|
+
},
|
|
104
|
+
required: ["name", "url", "header"],
|
|
105
|
+
additionalProperties: false
|
|
106
|
+
},
|
|
107
|
+
reason: {
|
|
108
|
+
type: "string",
|
|
109
|
+
description: "Optional short, non-sensitive explanation of why the task needs it."
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
required: ["credential_id"]
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
53
116
|
// server/agent-tool-policy.ts
|
|
54
117
|
var READ_ONLY_AGENT_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
55
118
|
"list_bots",
|
|
@@ -523,25 +586,7 @@ var toolDefinitions = (externalRuntime) => [
|
|
|
523
586
|
required: ["room_id", "action"]
|
|
524
587
|
}
|
|
525
588
|
},
|
|
526
|
-
|
|
527
|
-
name: "request_credential",
|
|
528
|
-
description: "Ask the user for a supported API key through Atomic's secure credential flow. The desktop app and a freshly QR-paired mobile app show a secure entry card; older mobile pairings show how to pair again or finish on the computer. Never claim a secure field opened unless this request succeeds, and never ask the user to paste a secret into chat. The secret is saved by the desktop app and is never returned to you. After calling this tool, end the turn; Atomic resumes the task after the user saves or declines.",
|
|
529
|
-
inputSchema: {
|
|
530
|
-
type: "object",
|
|
531
|
-
properties: {
|
|
532
|
-
credential_id: {
|
|
533
|
-
type: "string",
|
|
534
|
-
enum: Object.keys(CREDENTIAL_TARGETS),
|
|
535
|
-
description: "The credential the current task requires."
|
|
536
|
-
},
|
|
537
|
-
reason: {
|
|
538
|
-
type: "string",
|
|
539
|
-
description: "Optional short, non-sensitive explanation of why the task needs it."
|
|
540
|
-
}
|
|
541
|
-
},
|
|
542
|
-
required: ["credential_id"]
|
|
543
|
-
}
|
|
544
|
-
},
|
|
589
|
+
credentialTool,
|
|
545
590
|
{
|
|
546
591
|
name: "marketplace_search",
|
|
547
592
|
description: "Find an app or service the person wants connected in Atomic's Marketplace: official servers Atomic connects, and official apps through their Claude account. Then call open_marketplace. Never offer to build a connection or a community server.",
|
|
@@ -17118,28 +17163,7 @@ ${lines.join("\n")}` };
|
|
|
17118
17163
|
const message = typeof r.message === "string" ? r.message : `Updated room ${roomId}.`;
|
|
17119
17164
|
return { text: message };
|
|
17120
17165
|
}
|
|
17121
|
-
if (name === "request_credential")
|
|
17122
|
-
const credentialId = args.credential_id;
|
|
17123
|
-
if (!isCredentialTargetId(credentialId)) {
|
|
17124
|
-
return { text: "request_credential needs a supported credential_id.", isError: true };
|
|
17125
|
-
}
|
|
17126
|
-
const reason = typeof args.reason === "string" ? args.reason.trim().slice(0, 240) : "";
|
|
17127
|
-
const r = await api("/api/internal/request-credential", {
|
|
17128
|
-
method: "POST",
|
|
17129
|
-
body: JSON.stringify({
|
|
17130
|
-
fromBotId: BOT_ID,
|
|
17131
|
-
fromThreadId: THREAD_ID,
|
|
17132
|
-
credentialId,
|
|
17133
|
-
...reason ? { reason } : {}
|
|
17134
|
-
})
|
|
17135
|
-
});
|
|
17136
|
-
if (r.alreadyConfigured) {
|
|
17137
|
-
return { text: `${r.label ?? CREDENTIAL_TARGETS[credentialId].label} is already configured. Continue the task.` };
|
|
17138
|
-
}
|
|
17139
|
-
return {
|
|
17140
|
-
text: `A secure ${r.label ?? CREDENTIAL_TARGETS[credentialId].label} request is ready. The desktop app and a freshly QR-paired mobile app show its secure entry card; older mobile pairings explain how to pair again or finish on the computer. End this turn; Atomic will resume the task after the user saves or declines. Never ask them to paste the key into chat.`
|
|
17141
|
-
};
|
|
17142
|
-
}
|
|
17166
|
+
if (name === "request_credential") return requestCredential(args, BOT_ID, THREAD_ID, api);
|
|
17143
17167
|
if (name === "list_routines") {
|
|
17144
17168
|
const query = new URLSearchParams({ fromBotId: BOT_ID, fromThreadId: THREAD_ID });
|
|
17145
17169
|
const r = await api(`/api/internal/routines?${query.toString()}`);
|