nolo-cli 0.7.0 → 0.8.0-alpha.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/_executeModel-CPDNUUQV.js +198 -0
- package/action-PAXRPJJF.js +27 -0
- package/addContentAction-CZVWF3QZ.js +25 -0
- package/addDialogAgentAction-CCIDTPHC.js +67 -0
- package/agentDeleteCommand-OSUMJMZM.js +323 -0
- package/agentEmailCommands-OQTJIPQU.js +621 -0
- package/agentListCommands-FATQEUYT.js +219 -0
- package/agentMachineCommands-6LZWF4GL.js +421 -0
- package/agentPullCommand-O2MTUAFR.js +122 -0
- package/agentRecordCommands-TIHFU65Z.js +89 -0
- package/agentRunCommand-R64Y3HCH.js +102 -0
- package/agentRunControl-K4VKNEHF.js +57 -0
- package/agentRuntimeLocal-6PIWAHLQ.js +99 -0
- package/agentSlice-TP4VARJF.js +41 -0
- package/authCommand-WXMD3IPR.js +574 -0
- package/authCommands-X74AFDTC.js +26 -0
- package/chunk-2EISRLRC.js +238 -0
- package/chunk-2FTTDCD4.js +675 -0
- package/chunk-2MALU52L.js +51 -0
- package/chunk-2TPUKEU7.js +1078 -0
- package/chunk-3ASDTTEI.js +1774 -0
- package/chunk-3EUW3WEO.js +8 -0
- package/chunk-3LY4F7SV.js +9293 -0
- package/chunk-4CQLVGRV.js +50 -0
- package/chunk-4IJYA27C.js +342 -0
- package/chunk-4SN6J65J.js +38 -0
- package/chunk-4VNS5WPM.js +42 -0
- package/chunk-572EKYLF.js +792 -0
- package/chunk-5MIDPSSK.js +206 -0
- package/chunk-5MMAK75Q.js +15 -0
- package/chunk-5VV37AT4.js +222 -0
- package/chunk-63W5N6P3.js +150 -0
- package/chunk-6A5EF6IR.js +929 -0
- package/chunk-6HYVJV7B.js +102 -0
- package/chunk-6P2WX5IA.js +3631 -0
- package/chunk-6WD3OOJS.js +20 -0
- package/chunk-ATNTHIZI.js +13 -0
- package/chunk-AUGHVUFE.js +69 -0
- package/chunk-AVMKZHBC.js +85 -0
- package/chunk-AZPCASRE.js +36 -0
- package/chunk-BNMT7YY5.js +34 -0
- package/chunk-BR2WP3DF.js +548 -0
- package/chunk-BSTNFPHD.js +231 -0
- package/chunk-BU4OPIXC.js +171 -0
- package/chunk-CF2WZF4N.js +134 -0
- package/chunk-CF7PE763.js +10 -0
- package/chunk-CKOJQDKR.js +198 -0
- package/chunk-CM54RSSA.js +206 -0
- package/chunk-CWMSB67P.js +34 -0
- package/chunk-DA2OEKS6.js +27 -0
- package/chunk-DFFIZ25G.js +30 -0
- package/chunk-DWLEOOGR.js +8 -0
- package/chunk-DZ3XJVET.js +231 -0
- package/chunk-EHLHSX7R.js +1433 -0
- package/chunk-ELRRLDWI.js +478 -0
- package/chunk-EYEEHCU4.js +3066 -0
- package/chunk-FQZWM5YX.js +628 -0
- package/chunk-G3SUCT4W.js +8 -0
- package/chunk-G5H7RNFL.js +807 -0
- package/chunk-GAKEBQD6.js +30 -0
- package/chunk-GBRG75BQ.js +86 -0
- package/chunk-H2RMRZJE.js +113 -0
- package/chunk-H33743XH.js +25 -0
- package/chunk-HD63YREL.js +19 -0
- package/chunk-HEIIIZBX.js +104 -0
- package/chunk-HNMXYYJR.js +12 -0
- package/chunk-HOMYP7GZ.js +2152 -0
- package/chunk-HZFOMJRA.js +4300 -0
- package/chunk-IAXBCTTE.js +175 -0
- package/chunk-IDZTNRP2.js +85 -0
- package/chunk-IHHA5Y2S.js +9013 -0
- package/chunk-ISNCLGUZ.js +146 -0
- package/chunk-IYQV26RA.js +138 -0
- package/chunk-J4576WMJ.js +91 -0
- package/chunk-JBTJAPUF.js +35 -0
- package/chunk-JZPBVBIY.js +94 -0
- package/chunk-KQHGZWSV.js +63 -0
- package/chunk-KUG52IAP.js +8 -0
- package/chunk-KX6YBIHG.js +8 -0
- package/chunk-LCBAMY2M.js +60 -0
- package/chunk-LM25IZBJ.js +902 -0
- package/chunk-LM6IYQ3F.js +16 -0
- package/chunk-M76ECQRD.js +13658 -0
- package/chunk-MRC4Q34M.js +188 -0
- package/chunk-NEMRK4EK.js +944 -0
- package/chunk-NXZGF7F7.js +2878 -0
- package/chunk-OF5H3QWS.js +300 -0
- package/chunk-OLZBQWZU.js +6 -0
- package/chunk-OOYVBFM7.js +191 -0
- package/chunk-OWOHNGCN.js +50 -0
- package/chunk-PN7AFLOK.js +3401 -0
- package/chunk-POCFIDGQ.js +562 -0
- package/chunk-Q6WACBKB.js +1949 -0
- package/chunk-QFV2OAIM.js +421 -0
- package/chunk-QJ6V2NIN.js +1447 -0
- package/chunk-QSJ3HFEF.js +8 -0
- package/chunk-QUWDTOUP.js +190 -0
- package/chunk-QYXLLLGL.js +4519 -0
- package/chunk-ROWQEJRP.js +139 -0
- package/chunk-S7Z2HMCN.js +25 -0
- package/chunk-TDIQFT2F.js +301 -0
- package/chunk-TILFE6LV.js +381 -0
- package/chunk-TKOUBWBO.js +24674 -0
- package/chunk-TYH5JE6N.js +27158 -0
- package/chunk-U4TRT5V4.js +246 -0
- package/chunk-U6VC4MU4.js +8 -0
- package/chunk-UAD2WT54.js +64 -0
- package/chunk-USZMK5UT.js +105 -0
- package/chunk-VEJLAVTC.js +2052 -0
- package/chunk-VF4K2QE6.js +21 -0
- package/chunk-VHBWHNVT.js +59 -0
- package/chunk-VIDPVFP3.js +20 -0
- package/chunk-VP4WJWKW.js +8882 -0
- package/chunk-VQ2AJRGD.js +148 -0
- package/chunk-W4NVOSFF.js +37 -0
- package/chunk-WWC7I6TA.js +8 -0
- package/chunk-X7W4TNB4.js +1550 -0
- package/chunk-XDVAYP26.js +537 -0
- package/chunk-XKIMRZO2.js +221 -0
- package/chunk-Y5GCAMGP.js +9 -0
- package/chunk-YWPXYBY7.js +360 -0
- package/chunk-Z4NR32XR.js +50 -0
- package/chunk-ZNFJWEN4.js +56 -0
- package/cliExecutor-DNE7TCC4.js +36 -0
- package/clipboardy-BVE3LVEH.js +12001 -0
- package/createAgentAutomationAction-KLKS2HGU.js +864 -0
- package/createDialogAction-Z33JMBF5.js +52 -0
- package/createPageAction-AQVNOAAI.js +169 -0
- package/db-HCJ5PRB5.js +271 -0
- package/dbSlice-C4UJLRZP.js +59 -0
- package/deleteFile-4SKGPHOZ.js +41 -0
- package/dialogCommands-W5PD6MZU.js +59 -0
- package/dialogSlice-RBJYVSAR.js +146 -0
- package/docCreateCommands-MM34S4Z3.js +215 -0
- package/docDeleteCommands-JJTU722V.js +176 -0
- package/docReadCommands-GLYDMCTU.js +129 -0
- package/docStore-5TYME4DO.js +96 -0
- package/docUpdateCommands-ZCGQ7URR.js +313 -0
- package/fetchMessages-JOCYIFKL.js +16 -0
- package/getPricing-PWPJ6MNV.js +30 -0
- package/handleSendMessageAction-KA2MRW6E.js +183 -0
- package/index.js +184 -112288
- package/lib-FYYBQIXS.js +19839 -0
- package/localDialogRead-D3BELSTF.js +26 -0
- package/localFirstLog-DHNOY2NA.js +19 -0
- package/localRuntimeAuthority-TEGCOWX4.js +471 -0
- package/localRuntimeDb-LGDF6FQP.js +12 -0
- package/machineCommands-ZB5WUSPF.js +774 -0
- package/machineInfo-M6KB6HZN.js +10 -0
- package/machineWsRunDispatch-GWCAPPCM.js +105 -0
- package/memoryCommands-O4MIPIWQ.js +476 -0
- package/models-XLEOET3E.js +9 -0
- package/offlineMarxistsAgentCommand-BCPJITJL.js +242 -0
- package/package.json +3 -25
- package/read-RIJCIVKX.js +17 -0
- package/readDocTool-GZD2N3LO.js +16 -0
- package/readlineWorkspace-FEDY44AA.js +5357 -0
- package/removeDialogAgentAction-CXLST3N6.js +72 -0
- package/runAgentClientLoop-W4NKE64V.js +288 -0
- package/runtimeDoctorCommands-LRHLPDRC.js +289 -0
- package/setDialogExtraReferencesAction-LP6VYGU7.js +59 -0
- package/setPrimaryDialogAgentAction-D3GGH23T.js +79 -0
- package/settingSlice-J4I3Z5H7.js +198 -0
- package/skillSummaryMarker-42HKSXYY.js +9 -0
- package/slateToRenderMarkdown-Y5IYN73U.js +7 -0
- package/slateUtils-2M7MUTWX.js +19 -0
- package/spaceCommands-LC4FDAKE.js +450 -0
- package/spaceSlice-32XOGBEF.js +145 -0
- package/streamAgentChatTurn-YQW32AQH.js +4503 -0
- package/tableCommands-GOFP7QKA.js +1286 -0
- package/toolApiClient-QI3YBNWB.js +26 -0
- package/tools-XGTFRYD7.js +83 -0
- package/understanding-HCSFPE7R.js +318 -0
- package/updateCommands-VOSPKXFF.js +31 -0
- package/updateDialogTitleAction-4LHQDNHQ.js +185 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import {
|
|
2
|
+
toErrorMessage
|
|
3
|
+
} from "./chunk-HNMXYYJR.js";
|
|
4
|
+
|
|
5
|
+
// packages/create/editor/transforms/slateToSimplifiedMarkdown.ts
|
|
6
|
+
function renderTextNode(node) {
|
|
7
|
+
if (!node || typeof node.text !== "string") return "";
|
|
8
|
+
let text = node.text;
|
|
9
|
+
if (!text) return "";
|
|
10
|
+
if (node.bold) text = `**${text}**`;
|
|
11
|
+
if (node.italic) text = `*${text}*`;
|
|
12
|
+
if (node.strikethrough) text = `~~${text}~~`;
|
|
13
|
+
return text;
|
|
14
|
+
}
|
|
15
|
+
function renderPlainText(node, options = {}) {
|
|
16
|
+
if (!node) return "";
|
|
17
|
+
if (typeof node.text === "string") return renderTextNode(node);
|
|
18
|
+
if (!Array.isArray(node.children)) return "";
|
|
19
|
+
return node.children.map((child) => renderPlainText(child, options)).join("");
|
|
20
|
+
}
|
|
21
|
+
function renderTable(node, listDepth, options) {
|
|
22
|
+
const rows = Array.isArray(node.children) ? node.children : [];
|
|
23
|
+
if (rows.length === 0) return "";
|
|
24
|
+
const alignments = Array.isArray(node.columns) ? node.columns.map((column) => column?.align || "left") : [];
|
|
25
|
+
const renderedRows = rows.map(
|
|
26
|
+
(row) => (Array.isArray(row?.children) ? row.children : []).map((cell) => {
|
|
27
|
+
const content = renderPlainText(cell, options).replace(/\n+/g, " ").trim();
|
|
28
|
+
return content || " ";
|
|
29
|
+
})
|
|
30
|
+
);
|
|
31
|
+
const header = renderedRows[0] || [];
|
|
32
|
+
const divider = header.map((_, index) => {
|
|
33
|
+
const align = alignments[index];
|
|
34
|
+
if (align === "center") return ":---:";
|
|
35
|
+
if (align === "right") return "---:";
|
|
36
|
+
return "---";
|
|
37
|
+
});
|
|
38
|
+
const body = renderedRows.slice(1);
|
|
39
|
+
const allRows = [header, divider, ...body].map((cells) => `| ${cells.join(" | ")} |`).join("\n");
|
|
40
|
+
return `${allRows}
|
|
41
|
+
|
|
42
|
+
`;
|
|
43
|
+
}
|
|
44
|
+
function renderListItem(node, listDepth, ordered, start, index, options = {}) {
|
|
45
|
+
const indentation = " ".repeat(listDepth);
|
|
46
|
+
const marker = node.checked === true ? "- [x]" : node.checked === false ? "- [ ]" : ordered ? `${start + index}.` : "-";
|
|
47
|
+
const segments = Array.isArray(node.children) ? node.children : [];
|
|
48
|
+
const renderedSegments = segments.flatMap((child) => {
|
|
49
|
+
const rendered = renderNode(child, listDepth + 1, options).trimEnd();
|
|
50
|
+
return rendered ? [rendered] : [];
|
|
51
|
+
});
|
|
52
|
+
if (renderedSegments.length === 0) {
|
|
53
|
+
return `${indentation}${marker}
|
|
54
|
+
`;
|
|
55
|
+
}
|
|
56
|
+
const [first, ...rest] = renderedSegments;
|
|
57
|
+
const lines = first.split("\n");
|
|
58
|
+
const firstLine = lines.shift() || "";
|
|
59
|
+
const restFirst = lines.map((line) => `${indentation} ${line}`).join("\n");
|
|
60
|
+
const restBlocks = rest.map((block) => `${indentation} ${block}`).join("\n");
|
|
61
|
+
return [
|
|
62
|
+
`${indentation}${marker} ${firstLine}`,
|
|
63
|
+
restFirst,
|
|
64
|
+
restBlocks
|
|
65
|
+
].filter(Boolean).join("\n") + "\n";
|
|
66
|
+
}
|
|
67
|
+
function renderNode(node, listDepth = 0, options = {}) {
|
|
68
|
+
if (!node) return "";
|
|
69
|
+
const indentation = " ".repeat(listDepth);
|
|
70
|
+
switch (node.type) {
|
|
71
|
+
case "heading-one":
|
|
72
|
+
return `# ${node.children.map((n) => renderNode(n, listDepth, options)).join("")}
|
|
73
|
+
|
|
74
|
+
`;
|
|
75
|
+
case "heading-two":
|
|
76
|
+
return `## ${node.children.map((n) => renderNode(n, listDepth, options)).join("")}
|
|
77
|
+
|
|
78
|
+
`;
|
|
79
|
+
case "heading-three":
|
|
80
|
+
return `### ${node.children.map((n) => renderNode(n, listDepth, options)).join("")}
|
|
81
|
+
|
|
82
|
+
`;
|
|
83
|
+
case "heading-four":
|
|
84
|
+
return `#### ${node.children.map((n) => renderNode(n, listDepth, options)).join("")}
|
|
85
|
+
|
|
86
|
+
`;
|
|
87
|
+
case "heading-five":
|
|
88
|
+
return `##### ${node.children.map((n) => renderNode(n, listDepth, options)).join("")}
|
|
89
|
+
|
|
90
|
+
`;
|
|
91
|
+
case "heading-six":
|
|
92
|
+
return `###### ${node.children.map((n) => renderNode(n, listDepth, options)).join("")}
|
|
93
|
+
|
|
94
|
+
`;
|
|
95
|
+
case "paragraph":
|
|
96
|
+
return `${node.children.map((n) => renderNode(n, listDepth, options)).join("")}
|
|
97
|
+
|
|
98
|
+
`;
|
|
99
|
+
case "list":
|
|
100
|
+
return node.children.map(
|
|
101
|
+
(item, index) => renderListItem(item, listDepth, !!node.ordered, node.start || 1, index, options)
|
|
102
|
+
).join("");
|
|
103
|
+
case "list-item":
|
|
104
|
+
return renderListItem(node, listDepth, false, 1, 0, options);
|
|
105
|
+
case "quote":
|
|
106
|
+
const content = node.children.map((n) => renderNode(n, listDepth, options)).join("").trim();
|
|
107
|
+
return `> ${content.replace(/\n/g, "\n> ")}
|
|
108
|
+
|
|
109
|
+
`;
|
|
110
|
+
case "code-block":
|
|
111
|
+
const code = node.children.map(
|
|
112
|
+
(line) => (line.children || []).map((text) => text.text).join("")
|
|
113
|
+
).join("\n");
|
|
114
|
+
return "```" + (node.language || "") + "\n" + code + "\n```\n\n";
|
|
115
|
+
case "link":
|
|
116
|
+
const linkText = node.children.map((n) => renderNode(n, listDepth, options)).join("");
|
|
117
|
+
return `[${linkText}](${node.url})`;
|
|
118
|
+
case "table":
|
|
119
|
+
return renderTable(node, listDepth, options);
|
|
120
|
+
case "code-inline":
|
|
121
|
+
return `\`${node.children.map((n) => renderNode(n, listDepth, options)).join("")}\``;
|
|
122
|
+
case "mention": {
|
|
123
|
+
if (options.mentionResolver) {
|
|
124
|
+
return options.mentionResolver(node);
|
|
125
|
+
}
|
|
126
|
+
const label = node.label || node.resourceId || "mention";
|
|
127
|
+
const resourceType = node.resourceType || "unknown";
|
|
128
|
+
const resourceId = node.resourceId || "unknown";
|
|
129
|
+
return `@[${resourceType}:${resourceId}|${label}]`;
|
|
130
|
+
}
|
|
131
|
+
case "image": {
|
|
132
|
+
const alt = node.alt || "";
|
|
133
|
+
const title = node.title ? ` "${node.title}"` : "";
|
|
134
|
+
return ``;
|
|
135
|
+
}
|
|
136
|
+
case "html-inline":
|
|
137
|
+
return typeof node.html === "string" ? node.html : "";
|
|
138
|
+
case "html-block":
|
|
139
|
+
return typeof node.html === "string" ? `${node.html}
|
|
140
|
+
|
|
141
|
+
` : "";
|
|
142
|
+
case "thematic-break":
|
|
143
|
+
return "---\n\n";
|
|
144
|
+
default:
|
|
145
|
+
return renderTextNode(node) || (node.children ? node.children.map((child) => renderNode(child, listDepth, options)).join("") : "");
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
function slateToSimplifiedMarkdown(nodes, options = {}) {
|
|
149
|
+
if (!nodes || nodes.length === 0) {
|
|
150
|
+
return "";
|
|
151
|
+
}
|
|
152
|
+
return nodes.map((node) => renderNode(node, 0, options)).join("").trim() + "\n";
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// packages/ai/tools/readDocTool.ts
|
|
156
|
+
var readDocFunctionSchema = {
|
|
157
|
+
name: "readDoc",
|
|
158
|
+
description: [
|
|
159
|
+
"\u8BFB\u53D6\u6307\u5B9A\u9875\u9762\u7684\u5185\u5BB9\uFF0C\u5E76\u5C06\u7ED3\u6784\u5316\u7684\u6570\u636E\u8F6C\u6362\u4E3A Markdown \u683C\u5F0F\u8FD4\u56DE\u3002",
|
|
160
|
+
"\u5982\u679C\u4F60\u62FF\u5230\u4E86\u9875\u9762\u7684 dbKey\uFF08\u5982 page-xxx\uFF09\uFF0C\u8BF7\u4F7F\u7528\u6B64\u5DE5\u5177\u67E5\u770B\u9875\u9762\u5185\u5BB9\u3002"
|
|
161
|
+
].join("\n"),
|
|
162
|
+
parameters: {
|
|
163
|
+
type: "object",
|
|
164
|
+
properties: {
|
|
165
|
+
id: {
|
|
166
|
+
type: "string",
|
|
167
|
+
description: "\u9875\u9762/\u6587\u6863\u7684\u6570\u636E\u5E93\u952E\uFF08dbKey\uFF09\uFF0C\u4F8B\u5982 page-xxx\u3002"
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
required: ["id"]
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
var readPageFunctionSchema = {
|
|
174
|
+
...readDocFunctionSchema,
|
|
175
|
+
name: "readPage"
|
|
176
|
+
};
|
|
177
|
+
var buildReadDocResult = (pageData) => {
|
|
178
|
+
const markdownContent = slateToSimplifiedMarkdown(pageData.slateData || []);
|
|
179
|
+
const rawData = {
|
|
180
|
+
success: true,
|
|
181
|
+
id: pageData.dbKey,
|
|
182
|
+
title: pageData.title,
|
|
183
|
+
content: markdownContent,
|
|
184
|
+
metadata: {
|
|
185
|
+
spaceId: pageData.spaceId,
|
|
186
|
+
created: pageData.created
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
const displayData = `\u5DF2\u6210\u529F\u8BFB\u53D6\u9875\u9762\u300A${pageData.title}\u300B\u3002
|
|
190
|
+
|
|
191
|
+
\u5185\u5BB9\u5982\u4E0B\uFF1A
|
|
192
|
+
|
|
193
|
+
${markdownContent}`;
|
|
194
|
+
return { rawData, displayData };
|
|
195
|
+
};
|
|
196
|
+
async function readDocFunc(args, thunkApi) {
|
|
197
|
+
const id = args.id ?? args.doc ?? args.docKey ?? args.pageKey ?? args.key;
|
|
198
|
+
if (!id || !id.toLowerCase().startsWith("page-")) {
|
|
199
|
+
throw new Error(`\u65E0\u6548\u7684\u9875\u9762 ID: ${id}\u3002\u9875\u9762 ID \u901A\u5E38\u4EE5 "page-" \u5F00\u5934\u3002`);
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
const { readAction } = await import("./read-RIJCIVKX.js");
|
|
203
|
+
const pageData = await readAction({ dbKey: id }, thunkApi);
|
|
204
|
+
if (!pageData) {
|
|
205
|
+
throw new Error(`\u672A\u627E\u5230 ID \u4E3A ${id} \u7684\u9875\u9762\u3002`);
|
|
206
|
+
}
|
|
207
|
+
return buildReadDocResult(pageData);
|
|
208
|
+
} catch (error) {
|
|
209
|
+
throw new Error(`\u8BFB\u53D6\u9875\u9762\u65F6\u51FA\u9519: ${toErrorMessage(error)}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
var readPageFunc = readDocFunc;
|
|
213
|
+
|
|
214
|
+
export {
|
|
215
|
+
slateToSimplifiedMarkdown,
|
|
216
|
+
readDocFunctionSchema,
|
|
217
|
+
readPageFunctionSchema,
|
|
218
|
+
buildReadDocResult,
|
|
219
|
+
readDocFunc,
|
|
220
|
+
readPageFunc
|
|
221
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// packages/core/positiveFiniteNumberOrFallback.ts
|
|
2
|
+
function parsePositiveFiniteNumberOrFallback(value, fallback) {
|
|
3
|
+
const parsed = Number(value);
|
|
4
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export {
|
|
8
|
+
parsePositiveFiniteNumberOrFallback
|
|
9
|
+
};
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import {
|
|
2
|
+
readDbRecord,
|
|
3
|
+
writeAgentRecord
|
|
4
|
+
} from "./chunk-FQZWM5YX.js";
|
|
5
|
+
import {
|
|
6
|
+
buildSkillSummaryMarker
|
|
7
|
+
} from "./chunk-VF4K2QE6.js";
|
|
8
|
+
import {
|
|
9
|
+
buildSkillDocMarkdown
|
|
10
|
+
} from "./chunk-NXZGF7F7.js";
|
|
11
|
+
import {
|
|
12
|
+
createSpaceKey
|
|
13
|
+
} from "./chunk-UAD2WT54.js";
|
|
14
|
+
import {
|
|
15
|
+
parseUserIdFromAuthToken,
|
|
16
|
+
readOption,
|
|
17
|
+
resolveAuthToken,
|
|
18
|
+
resolveServerUrl
|
|
19
|
+
} from "./chunk-ISNCLGUZ.js";
|
|
20
|
+
import {
|
|
21
|
+
require_index_umd
|
|
22
|
+
} from "./chunk-PN7AFLOK.js";
|
|
23
|
+
import {
|
|
24
|
+
asTrimmedLowercaseString
|
|
25
|
+
} from "./chunk-QSJ3HFEF.js";
|
|
26
|
+
import {
|
|
27
|
+
DEFAULT_LOCAL_API_ORIGIN
|
|
28
|
+
} from "./chunk-4SN6J65J.js";
|
|
29
|
+
import {
|
|
30
|
+
NOLO_CLUSTER_SERVERS
|
|
31
|
+
} from "./chunk-LCBAMY2M.js";
|
|
32
|
+
import {
|
|
33
|
+
normalizeServerOrigin
|
|
34
|
+
} from "./chunk-CF7PE763.js";
|
|
35
|
+
import {
|
|
36
|
+
__toESM
|
|
37
|
+
} from "./chunk-4VNS5WPM.js";
|
|
38
|
+
|
|
39
|
+
// packages/cli/docPageHelpers.ts
|
|
40
|
+
var import_ulid = __toESM(require_index_umd(), 1);
|
|
41
|
+
import { readFileSync } from "node:fs";
|
|
42
|
+
function getCliArg(args, flag) {
|
|
43
|
+
const idx = args.indexOf(flag);
|
|
44
|
+
return idx !== -1 ? args[idx + 1] : void 0;
|
|
45
|
+
}
|
|
46
|
+
function readBodyArg(args, fallback = "") {
|
|
47
|
+
const bodyFile = getCliArg(args, "--body-file");
|
|
48
|
+
if (bodyFile !== void 0) {
|
|
49
|
+
return readFileSync(bodyFile, "utf8");
|
|
50
|
+
}
|
|
51
|
+
return getCliArg(args, "--body") ?? fallback;
|
|
52
|
+
}
|
|
53
|
+
function textToSlate(text) {
|
|
54
|
+
return text.split("\n").map((line) => ({
|
|
55
|
+
type: "paragraph",
|
|
56
|
+
children: [{ text: line }]
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
function createPageId() {
|
|
60
|
+
return (0, import_ulid.ulid)();
|
|
61
|
+
}
|
|
62
|
+
function buildPageKey(userId, pageId) {
|
|
63
|
+
return `page-${userId}-${pageId}`;
|
|
64
|
+
}
|
|
65
|
+
function buildPageRecord(args) {
|
|
66
|
+
const { dbKey, pageId, title, spaceId, content, existing, meta, slateData } = args;
|
|
67
|
+
const now = Date.now();
|
|
68
|
+
const createdAt = typeof existing?.createdAt === "number" ? existing.createdAt : now;
|
|
69
|
+
const created = typeof existing?.created === "string" ? existing.created : new Date(createdAt).toISOString();
|
|
70
|
+
const nextRecord = {
|
|
71
|
+
...existing ?? {},
|
|
72
|
+
id: existing?.id ?? pageId,
|
|
73
|
+
dbKey,
|
|
74
|
+
type: "page",
|
|
75
|
+
title,
|
|
76
|
+
spaceId,
|
|
77
|
+
content,
|
|
78
|
+
updatedAt: now,
|
|
79
|
+
createdAt,
|
|
80
|
+
created
|
|
81
|
+
};
|
|
82
|
+
if (meta !== void 0) {
|
|
83
|
+
if (meta === null) {
|
|
84
|
+
delete nextRecord.meta;
|
|
85
|
+
} else {
|
|
86
|
+
nextRecord.meta = meta;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (slateData !== void 0) {
|
|
90
|
+
if (slateData === null) {
|
|
91
|
+
delete nextRecord.slateData;
|
|
92
|
+
} else {
|
|
93
|
+
nextRecord.slateData = slateData;
|
|
94
|
+
}
|
|
95
|
+
} else if (!existing?.slateData) {
|
|
96
|
+
nextRecord.slateData = textToSlate(content);
|
|
97
|
+
}
|
|
98
|
+
return nextRecord;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// packages/cli/docSkillHelpers.ts
|
|
102
|
+
function normalizeSkillSeed(input) {
|
|
103
|
+
return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
|
|
104
|
+
}
|
|
105
|
+
function deterministicId(prefix, seed) {
|
|
106
|
+
let h = 2166136261;
|
|
107
|
+
for (let i = 0; i < seed.length; i++) {
|
|
108
|
+
h ^= seed.charCodeAt(i);
|
|
109
|
+
h = h * 16777619 >>> 0;
|
|
110
|
+
}
|
|
111
|
+
const suffix = h.toString(36).toUpperCase().padStart(14, "0");
|
|
112
|
+
return (prefix + suffix).slice(0, 26);
|
|
113
|
+
}
|
|
114
|
+
function buildSkillDocId(input) {
|
|
115
|
+
return deterministicId("01SK", normalizeSkillSeed(input) || input);
|
|
116
|
+
}
|
|
117
|
+
function buildSkillPageKey(userId, skillId) {
|
|
118
|
+
return buildPageKey(userId, skillId);
|
|
119
|
+
}
|
|
120
|
+
function buildSkillPageRecord(args) {
|
|
121
|
+
const {
|
|
122
|
+
dbKey,
|
|
123
|
+
skillId,
|
|
124
|
+
title,
|
|
125
|
+
spaceId,
|
|
126
|
+
body,
|
|
127
|
+
skillConfig,
|
|
128
|
+
evalConfig,
|
|
129
|
+
workflowConfig,
|
|
130
|
+
existing
|
|
131
|
+
} = args;
|
|
132
|
+
return {
|
|
133
|
+
...buildPageRecord({
|
|
134
|
+
dbKey,
|
|
135
|
+
pageId: skillId,
|
|
136
|
+
title,
|
|
137
|
+
spaceId,
|
|
138
|
+
content: buildSkillDocMarkdown({
|
|
139
|
+
body,
|
|
140
|
+
skillConfig,
|
|
141
|
+
evalConfig,
|
|
142
|
+
workflowConfig
|
|
143
|
+
}),
|
|
144
|
+
existing,
|
|
145
|
+
meta: {
|
|
146
|
+
...existing?.meta ?? {},
|
|
147
|
+
kind: "skill",
|
|
148
|
+
skillConfig,
|
|
149
|
+
...evalConfig ? { evalConfig } : {},
|
|
150
|
+
...workflowConfig ? { workflowConfig } : {}
|
|
151
|
+
},
|
|
152
|
+
slateData: null
|
|
153
|
+
})
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function parseJsonArg(raw, fallback) {
|
|
157
|
+
if (raw === void 0) return fallback;
|
|
158
|
+
return JSON.parse(raw);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// packages/cli/docSpaceHelpers.ts
|
|
162
|
+
async function ensurePageAttachedToSpace(params) {
|
|
163
|
+
const { baseUrl, userId, authToken, spaceId, contentKey, title, skillSummary } = params;
|
|
164
|
+
const spaceKey = createSpaceKey.space(spaceId);
|
|
165
|
+
const spaceRecord = await readDbRecord({
|
|
166
|
+
dbKey: spaceKey,
|
|
167
|
+
authToken,
|
|
168
|
+
fetchImpl: fetch,
|
|
169
|
+
serverUrl: baseUrl
|
|
170
|
+
});
|
|
171
|
+
const now = Date.now();
|
|
172
|
+
await writeAgentRecord({
|
|
173
|
+
agentKey: spaceKey,
|
|
174
|
+
authToken,
|
|
175
|
+
fetchImpl: fetch,
|
|
176
|
+
serverUrl: baseUrl,
|
|
177
|
+
userId,
|
|
178
|
+
record: {
|
|
179
|
+
...spaceRecord,
|
|
180
|
+
contents: {
|
|
181
|
+
...spaceRecord.contents ?? {},
|
|
182
|
+
[contentKey]: {
|
|
183
|
+
...spaceRecord.contents?.[contentKey] ?? {},
|
|
184
|
+
title,
|
|
185
|
+
type: "page",
|
|
186
|
+
contentKey,
|
|
187
|
+
...skillSummary !== void 0 ? { skillSummary } : {},
|
|
188
|
+
updatedAt: now,
|
|
189
|
+
createdAt: spaceRecord.contents?.[contentKey]?.createdAt ?? now
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
updatedAt: now
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
async function removePageFromSpace(params) {
|
|
197
|
+
const { baseUrl, userId, authToken, spaceId, contentKey } = params;
|
|
198
|
+
const spaceKey = createSpaceKey.space(spaceId);
|
|
199
|
+
const spaceRecord = await readDbRecord({
|
|
200
|
+
dbKey: spaceKey,
|
|
201
|
+
authToken,
|
|
202
|
+
fetchImpl: fetch,
|
|
203
|
+
serverUrl: baseUrl
|
|
204
|
+
});
|
|
205
|
+
const nextContents = { ...spaceRecord.contents ?? {} };
|
|
206
|
+
delete nextContents[contentKey];
|
|
207
|
+
await writeAgentRecord({
|
|
208
|
+
agentKey: spaceKey,
|
|
209
|
+
authToken,
|
|
210
|
+
fetchImpl: fetch,
|
|
211
|
+
serverUrl: baseUrl,
|
|
212
|
+
userId,
|
|
213
|
+
record: {
|
|
214
|
+
...spaceRecord,
|
|
215
|
+
contents: nextContents,
|
|
216
|
+
updatedAt: Date.now()
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// packages/cli/docCommandShared.ts
|
|
222
|
+
function hasHelpArg(args) {
|
|
223
|
+
return args.includes("--help") || args.includes("-h");
|
|
224
|
+
}
|
|
225
|
+
function hasFlag(args, flag) {
|
|
226
|
+
return args.includes(flag);
|
|
227
|
+
}
|
|
228
|
+
function normalizeBaseUrl(base) {
|
|
229
|
+
return normalizeServerOrigin(base);
|
|
230
|
+
}
|
|
231
|
+
function localBaseFromEnv(env) {
|
|
232
|
+
return normalizeBaseUrl(env.SCRIPT_LOCAL_BASE_URL || DEFAULT_LOCAL_API_ORIGIN);
|
|
233
|
+
}
|
|
234
|
+
function targetToBase(target, env) {
|
|
235
|
+
const normalized = asTrimmedLowercaseString(target);
|
|
236
|
+
if (normalized === "local") return localBaseFromEnv(env);
|
|
237
|
+
if (normalized === "main") return normalizeBaseUrl(NOLO_CLUSTER_SERVERS[0]);
|
|
238
|
+
if (normalized === "us") return normalizeBaseUrl(NOLO_CLUSTER_SERVERS[1]);
|
|
239
|
+
return normalizeBaseUrl(target);
|
|
240
|
+
}
|
|
241
|
+
function parseSyncTargets(raw, env) {
|
|
242
|
+
if (!raw) return void 0;
|
|
243
|
+
return raw.split(",").map((value) => value.trim()).filter(Boolean).filter((value) => value !== "none").map((value) => targetToBase(value, env));
|
|
244
|
+
}
|
|
245
|
+
function isLocalBaseUrl(baseUrl) {
|
|
246
|
+
try {
|
|
247
|
+
const hostname = new URL(baseUrl).hostname;
|
|
248
|
+
return hostname === "localhost" || hostname === "127.0.0.1";
|
|
249
|
+
} catch {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
function resolveWriteTargets(args, env) {
|
|
254
|
+
const explicitSync = parseSyncTargets(readOption(args, "--sync"), env);
|
|
255
|
+
const targets = hasFlag(args, "--local-only") ? [localBaseFromEnv(env)] : explicitSync ?? [resolveServerUrl(args, env)];
|
|
256
|
+
const filtered = hasFlag(args, "--no-local") ? targets.filter((target) => !isLocalBaseUrl(target)) : targets;
|
|
257
|
+
return Array.from(new Set(filtered.map(normalizeBaseUrl)));
|
|
258
|
+
}
|
|
259
|
+
function readTitle(args) {
|
|
260
|
+
const valueFlags = /* @__PURE__ */ new Set([
|
|
261
|
+
"--title",
|
|
262
|
+
"--name",
|
|
263
|
+
"--description",
|
|
264
|
+
"--body",
|
|
265
|
+
"--body-file",
|
|
266
|
+
"--space",
|
|
267
|
+
"--id",
|
|
268
|
+
"--key",
|
|
269
|
+
"--kind",
|
|
270
|
+
"--sync",
|
|
271
|
+
"--tools",
|
|
272
|
+
"--required-skills",
|
|
273
|
+
"--recommended-skills",
|
|
274
|
+
"--preferred-agents",
|
|
275
|
+
"--trigger-mode",
|
|
276
|
+
"--budget-tier",
|
|
277
|
+
"--prompt-patch",
|
|
278
|
+
"--token",
|
|
279
|
+
"--server"
|
|
280
|
+
]);
|
|
281
|
+
return readOption(args, "--title") ?? args.find((value, index) => {
|
|
282
|
+
if (index === 0) return false;
|
|
283
|
+
if (valueFlags.has(args[index - 1])) return false;
|
|
284
|
+
return !value.startsWith("-");
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
function resolveDocKind(args, fallback) {
|
|
288
|
+
if (hasFlag(args, "--page") || readOption(args, "--kind") === "page") return "page";
|
|
289
|
+
return fallback;
|
|
290
|
+
}
|
|
291
|
+
function requireTokenUser(args, env, dryRun) {
|
|
292
|
+
const authToken = resolveAuthToken(args, env);
|
|
293
|
+
const userId = parseUserIdFromAuthToken(authToken) || env.USER_ID || "";
|
|
294
|
+
if (!authToken && !dryRun) {
|
|
295
|
+
throw new Error("doc command requires an auth token. Pass --token or set AUTH_TOKEN.");
|
|
296
|
+
}
|
|
297
|
+
if (!userId && !dryRun) {
|
|
298
|
+
throw new Error("auth token does not contain userId. Pass a user-scoped token.");
|
|
299
|
+
}
|
|
300
|
+
return {
|
|
301
|
+
authToken,
|
|
302
|
+
userId: userId || "dry-run"
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
async function writePageRecord(args) {
|
|
306
|
+
await writeAgentRecord({
|
|
307
|
+
agentKey: args.dbKey,
|
|
308
|
+
authToken: args.authToken,
|
|
309
|
+
fetchImpl: fetch,
|
|
310
|
+
serverUrl: args.serverUrl,
|
|
311
|
+
userId: args.userId,
|
|
312
|
+
record: args.record
|
|
313
|
+
});
|
|
314
|
+
if (args.spaceId) {
|
|
315
|
+
await ensurePageAttachedToSpace({
|
|
316
|
+
baseUrl: args.serverUrl,
|
|
317
|
+
userId: args.userId,
|
|
318
|
+
authToken: args.authToken,
|
|
319
|
+
spaceId: args.spaceId,
|
|
320
|
+
contentKey: args.dbKey,
|
|
321
|
+
title: args.title,
|
|
322
|
+
skillSummary: args.skillSummary
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
async function readPageRecord(args) {
|
|
327
|
+
return readDbRecord({
|
|
328
|
+
dbKey: args.dbKey,
|
|
329
|
+
authToken: args.authToken,
|
|
330
|
+
fetchImpl: fetch,
|
|
331
|
+
serverUrl: args.serverUrl
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
function buildSkillSummaryForRecord(record) {
|
|
335
|
+
const meta = record?.meta;
|
|
336
|
+
const skillConfig = meta?.skillConfig;
|
|
337
|
+
if (!skillConfig) return void 0;
|
|
338
|
+
return buildSkillSummaryMarker(meta);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
export {
|
|
342
|
+
readBodyArg,
|
|
343
|
+
createPageId,
|
|
344
|
+
buildPageKey,
|
|
345
|
+
buildPageRecord,
|
|
346
|
+
buildSkillDocId,
|
|
347
|
+
buildSkillPageKey,
|
|
348
|
+
buildSkillPageRecord,
|
|
349
|
+
parseJsonArg,
|
|
350
|
+
removePageFromSpace,
|
|
351
|
+
hasHelpArg,
|
|
352
|
+
hasFlag,
|
|
353
|
+
resolveWriteTargets,
|
|
354
|
+
readTitle,
|
|
355
|
+
resolveDocKind,
|
|
356
|
+
requireTokenUser,
|
|
357
|
+
writePageRecord,
|
|
358
|
+
readPageRecord,
|
|
359
|
+
buildSkillSummaryForRecord
|
|
360
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {
|
|
2
|
+
asOptionalTrimmedString
|
|
3
|
+
} from "./chunk-G3SUCT4W.js";
|
|
4
|
+
|
|
5
|
+
// packages/chat/dialog/dialogAgents.ts
|
|
6
|
+
var normalizeAgentId = (value) => asOptionalTrimmedString(value) ?? null;
|
|
7
|
+
var dedupeAgentIds = (agentIds) => {
|
|
8
|
+
const seen = /* @__PURE__ */ new Set();
|
|
9
|
+
const result = [];
|
|
10
|
+
for (const agentId of agentIds) {
|
|
11
|
+
const normalized = normalizeAgentId(agentId);
|
|
12
|
+
if (!normalized || seen.has(normalized)) continue;
|
|
13
|
+
seen.add(normalized);
|
|
14
|
+
result.push(normalized);
|
|
15
|
+
}
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
var getDialogAgentIds = (dialogConfig) => {
|
|
19
|
+
if (!dialogConfig) return [];
|
|
20
|
+
const primaryAgentKey = normalizeAgentId(dialogConfig.primaryAgentKey);
|
|
21
|
+
if (Array.isArray(dialogConfig.cybots)) {
|
|
22
|
+
return dedupeAgentIds([primaryAgentKey, ...dialogConfig.cybots]);
|
|
23
|
+
}
|
|
24
|
+
if (primaryAgentKey) {
|
|
25
|
+
return [primaryAgentKey];
|
|
26
|
+
}
|
|
27
|
+
const legacyAgentId = normalizeAgentId(dialogConfig.llmId);
|
|
28
|
+
if (legacyAgentId) {
|
|
29
|
+
return [legacyAgentId];
|
|
30
|
+
}
|
|
31
|
+
return [];
|
|
32
|
+
};
|
|
33
|
+
var getPrimaryDialogAgentId = (dialogConfig) => getDialogAgentIds(dialogConfig)[0] ?? null;
|
|
34
|
+
var addDialogAgentIds = (existingAgentIds, nextAgentIds) => {
|
|
35
|
+
const merged = [...existingAgentIds, ...nextAgentIds];
|
|
36
|
+
return merged.filter((id, index) => merged.indexOf(id) === index);
|
|
37
|
+
};
|
|
38
|
+
var replacePrimaryDialogAgentId = (existingAgentIds, nextPrimaryAgentId) => [
|
|
39
|
+
nextPrimaryAgentId,
|
|
40
|
+
...existingAgentIds.filter((id) => id !== nextPrimaryAgentId)
|
|
41
|
+
];
|
|
42
|
+
var removeDialogAgentId = (existingAgentIds, agentIdToRemove) => existingAgentIds.filter((id) => id !== agentIdToRemove);
|
|
43
|
+
|
|
44
|
+
export {
|
|
45
|
+
getDialogAgentIds,
|
|
46
|
+
getPrimaryDialogAgentId,
|
|
47
|
+
addDialogAgentIds,
|
|
48
|
+
replacePrimaryDialogAgentId,
|
|
49
|
+
removeDialogAgentId
|
|
50
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// packages/agent-runtime/runtimeDecision.ts
|
|
2
|
+
function uniqueCapabilities(capabilities) {
|
|
3
|
+
return [...new Set(capabilities.filter(Boolean))];
|
|
4
|
+
}
|
|
5
|
+
function localMissingCapabilities(input) {
|
|
6
|
+
const missing = [...input.missingLocalCapabilities ?? []];
|
|
7
|
+
if (!input.hasLocalAgentConfig) missing.push("agent-config");
|
|
8
|
+
if (!input.hasLocalProvider) missing.push("provider");
|
|
9
|
+
if (!input.hasLocalPersistence) missing.push("persistence");
|
|
10
|
+
if (input.requiresServer) missing.push("server-required");
|
|
11
|
+
if (input.host === "web") missing.push("local-host-adapter");
|
|
12
|
+
return uniqueCapabilities(missing);
|
|
13
|
+
}
|
|
14
|
+
function resolveAgentRuntimeDecision(input) {
|
|
15
|
+
const requestedMode = input.requestedMode ?? "auto";
|
|
16
|
+
const missingLocalCapabilities = localMissingCapabilities(input);
|
|
17
|
+
const localRunnable = missingLocalCapabilities.length === 0;
|
|
18
|
+
if (requestedMode === "server") {
|
|
19
|
+
return {
|
|
20
|
+
mode: "server",
|
|
21
|
+
runnable: input.serverFallbackAvailable,
|
|
22
|
+
reason: input.serverFallbackAvailable ? "server runtime was requested" : "server runtime was requested but no server fallback is available",
|
|
23
|
+
missingLocalCapabilities,
|
|
24
|
+
syncAfterRun: false
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (requestedMode === "local") {
|
|
28
|
+
return {
|
|
29
|
+
mode: "local",
|
|
30
|
+
runnable: localRunnable,
|
|
31
|
+
reason: localRunnable ? "local runtime was requested and all local capabilities are available" : "local runtime was requested but local capabilities are missing",
|
|
32
|
+
missingLocalCapabilities,
|
|
33
|
+
syncAfterRun: localRunnable && Boolean(input.syncRequested)
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (localRunnable) {
|
|
37
|
+
return {
|
|
38
|
+
mode: "local",
|
|
39
|
+
runnable: true,
|
|
40
|
+
reason: "local runtime capabilities are available",
|
|
41
|
+
missingLocalCapabilities,
|
|
42
|
+
syncAfterRun: Boolean(input.syncRequested)
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
mode: "server",
|
|
47
|
+
runnable: input.serverFallbackAvailable,
|
|
48
|
+
reason: input.serverFallbackAvailable ? "local runtime capabilities are missing; using server fallback" : "local runtime capabilities are missing and no server fallback is available",
|
|
49
|
+
missingLocalCapabilities,
|
|
50
|
+
syncAfterRun: false
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export {
|
|
55
|
+
resolveAgentRuntimeDecision
|
|
56
|
+
};
|