openmates 0.15.0-alpha.30 → 0.15.0-alpha.32
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/{chunk-XG7OFIXM.js → chunk-4UXNJ2I6.js} +1049 -61
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +115 -2
- package/dist/index.js +1 -1
- package/package.json +2 -1
|
@@ -3908,6 +3908,25 @@ function normalizeUnixSeconds(value, fallback) {
|
|
|
3908
3908
|
}
|
|
3909
3909
|
return value > 1e10 ? Math.floor(value / 1e3) : Math.floor(value);
|
|
3910
3910
|
}
|
|
3911
|
+
function defaultIdeaBucketProcessingWindowId(date = /* @__PURE__ */ new Date()) {
|
|
3912
|
+
return date.toISOString().slice(0, 10);
|
|
3913
|
+
}
|
|
3914
|
+
function defaultIdeaBucketScheduledSendAt(nowSeconds2) {
|
|
3915
|
+
const date = new Date(nowSeconds2 * 1e3);
|
|
3916
|
+
const sendAt = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + 1, 9, 0, 0) / 1e3;
|
|
3917
|
+
return Math.floor(sendAt);
|
|
3918
|
+
}
|
|
3919
|
+
function buildIdeaBucketMarkdown(prompt, ideas) {
|
|
3920
|
+
const blocks = ideas.map((idea) => [
|
|
3921
|
+
`----- Idea ${idea.index} -----`,
|
|
3922
|
+
idea.content.trim(),
|
|
3923
|
+
"-----------------"
|
|
3924
|
+
].join("\n"));
|
|
3925
|
+
return [prompt.trim(), ...blocks].join("\n\n");
|
|
3926
|
+
}
|
|
3927
|
+
function shouldWaitForTeamAi(message, teamId) {
|
|
3928
|
+
return !teamId || message.toLowerCase().includes("@openmates");
|
|
3929
|
+
}
|
|
3911
3930
|
function getClientMessagesVersionForSync(cached) {
|
|
3912
3931
|
if (cached.messages.length === 0) return 0;
|
|
3913
3932
|
const messagesVersion = typeof cached.details.messages_v === "number" ? cached.details.messages_v : 0;
|
|
@@ -4583,6 +4602,9 @@ var MEMORY_TYPE_REGISTRY = {
|
|
|
4583
4602
|
properties: { url: { type: "string" }, notes: { type: "string" } }
|
|
4584
4603
|
}
|
|
4585
4604
|
};
|
|
4605
|
+
var IDEABUCKET_DEFAULT_PROCESSING_PROMPT = `These are my captured ideas for today. Please process them, group related thoughts, suggest next actions, and ask clarifying questions where needed:
|
|
4606
|
+
|
|
4607
|
+
If an idea requires deeper work, create or suggest sub-chats for focused research, planning, todos, docs, or implementation.`;
|
|
4586
4608
|
function reconcileAuthoritativeChats(chats, evidence) {
|
|
4587
4609
|
const deletedIds = new Set(evidence.deleted_chat_ids ?? []);
|
|
4588
4610
|
const authoritativeIds = evidence.authoritative && evidence.authoritative_chat_ids ? new Set(evidence.authoritative_chat_ids) : null;
|
|
@@ -4980,7 +5002,7 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
4980
5002
|
}
|
|
4981
5003
|
async approveTeamAccessRequest(teamId, accessRequestId, encryptedTeamKey) {
|
|
4982
5004
|
this.requireSession();
|
|
4983
|
-
const response = await this.http.post(`/v1/teams/${encodeURIComponent(teamId)}/access-requests/${encodeURIComponent(accessRequestId)}/approve`, { encrypted_team_key: encryptedTeamKey, approved_at: Math.floor(Date.now() / 1e3) }, this.getCliRequestHeaders());
|
|
5005
|
+
const response = await this.http.post(`/v1/teams/${encodeURIComponent(teamId)}/access-requests/${encodeURIComponent(accessRequestId)}/approve`, { ...encryptedTeamKey ? { encrypted_team_key: encryptedTeamKey } : {}, approved_at: Math.floor(Date.now() / 1e3) }, this.getCliRequestHeaders());
|
|
4984
5006
|
if (!response.ok || !response.data.membership) throw new Error(`Team access approval failed with HTTP ${response.status}`);
|
|
4985
5007
|
return response.data.membership;
|
|
4986
5008
|
}
|
|
@@ -5066,7 +5088,7 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
5066
5088
|
this.getCliRequestHeaders()
|
|
5067
5089
|
);
|
|
5068
5090
|
if (!response.ok) throw new Error(`${workspaceType} move failed with HTTP ${response.status}`);
|
|
5069
|
-
return response.data;
|
|
5091
|
+
return { success: true, ...response.data };
|
|
5070
5092
|
}
|
|
5071
5093
|
async getAnonymousFreeUsageStatus() {
|
|
5072
5094
|
const response = await this.http.get("/v1/anonymous/free-usage/status");
|
|
@@ -5762,7 +5784,8 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
5762
5784
|
await ws.sendAsync("update_draft", {
|
|
5763
5785
|
chat_id: params.chatId,
|
|
5764
5786
|
encrypted_draft_md: params.encryptedDraftMd,
|
|
5765
|
-
encrypted_draft_preview: params.encryptedDraftPreview ?? null
|
|
5787
|
+
encrypted_draft_preview: params.encryptedDraftPreview ?? null,
|
|
5788
|
+
...params.extraPayload ?? {}
|
|
5766
5789
|
});
|
|
5767
5790
|
const response = await receipt;
|
|
5768
5791
|
const draftV = Number(response.payload.draft_v ?? 0);
|
|
@@ -5782,6 +5805,78 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
5782
5805
|
ws.close();
|
|
5783
5806
|
}
|
|
5784
5807
|
}
|
|
5808
|
+
async addIdeaBucketText(params) {
|
|
5809
|
+
const ideaText = params.text.trim();
|
|
5810
|
+
if (!ideaText) throw new Error("IdeaBucket text capture requires non-empty text.");
|
|
5811
|
+
const now = Math.floor(Date.now() / 1e3);
|
|
5812
|
+
const chatId = params.chatId ?? randomUUID5();
|
|
5813
|
+
const bucketId = params.bucketId ?? defaultIdeaBucketProcessingWindowId();
|
|
5814
|
+
const processingWindowId = bucketId;
|
|
5815
|
+
const scheduledSendAt = params.scheduledSendAt ?? defaultIdeaBucketScheduledSendAt(now);
|
|
5816
|
+
const version = params.version ?? now;
|
|
5817
|
+
const prompt = params.prompt ?? IDEABUCKET_DEFAULT_PROCESSING_PROMPT;
|
|
5818
|
+
const markdown = buildIdeaBucketMarkdown(prompt, [{ index: 1, content: ideaText }]);
|
|
5819
|
+
const preview = `IdeaBucket ${processingWindowId}: ${ideaText.slice(0, 120)}`;
|
|
5820
|
+
const serverProcessablePayload = JSON.stringify({
|
|
5821
|
+
prompt,
|
|
5822
|
+
processing_window_id: processingWindowId,
|
|
5823
|
+
ideas: [{ index: 1, type: "text", text: ideaText }]
|
|
5824
|
+
});
|
|
5825
|
+
const payloadHash = createHash7("sha256").update(serverProcessablePayload).digest("hex");
|
|
5826
|
+
const masterKey = this.getMasterKeyBytes();
|
|
5827
|
+
const encryptedDraftMd = await encryptWithAesGcmCombined(markdown, masterKey);
|
|
5828
|
+
const encryptedPreview = await encryptWithAesGcmCombined(preview, masterKey);
|
|
5829
|
+
const encryptedFutureUserMessage = await encryptWithAesGcmCombined(markdown, masterKey);
|
|
5830
|
+
const encryptedSystemEvent = await encryptWithAesGcmCombined(JSON.stringify({
|
|
5831
|
+
type: "ideabucket_triggered_send",
|
|
5832
|
+
processing_window_id: processingWindowId,
|
|
5833
|
+
source: "openmates_cli"
|
|
5834
|
+
}), masterKey);
|
|
5835
|
+
const serverCacheCiphertext = await encryptWithAesGcmCombined(serverProcessablePayload, masterKey);
|
|
5836
|
+
const encrypted = await this.saveEncryptedDraft({
|
|
5837
|
+
chatId,
|
|
5838
|
+
encryptedDraftMd,
|
|
5839
|
+
encryptedDraftPreview: encryptedPreview,
|
|
5840
|
+
extraPayload: {
|
|
5841
|
+
ideabucket: true,
|
|
5842
|
+
ideabucket_processing_window_id: processingWindowId,
|
|
5843
|
+
ideabucket_processing_version: version,
|
|
5844
|
+
scheduled_send_at: scheduledSendAt,
|
|
5845
|
+
server_vault_encrypted_processing_payload: serverCacheCiphertext,
|
|
5846
|
+
client_encrypted_future_user_message: encryptedFutureUserMessage,
|
|
5847
|
+
client_encrypted_ideabucket_system_event: encryptedSystemEvent,
|
|
5848
|
+
payload_hash: payloadHash
|
|
5849
|
+
}
|
|
5850
|
+
});
|
|
5851
|
+
return {
|
|
5852
|
+
chatId,
|
|
5853
|
+
bucketId,
|
|
5854
|
+
processingWindowId,
|
|
5855
|
+
scheduledSendAt,
|
|
5856
|
+
draftV: encrypted.draftV,
|
|
5857
|
+
processingPayloadSynced: true,
|
|
5858
|
+
payloadHash,
|
|
5859
|
+
markdown,
|
|
5860
|
+
preview
|
|
5861
|
+
};
|
|
5862
|
+
}
|
|
5863
|
+
async getIdeaBucketStatus(bucketId) {
|
|
5864
|
+
this.requireSession();
|
|
5865
|
+
const path = bucketId ? `/v1/ideabucket/buckets/${encodeURIComponent(bucketId)}` : "/v1/ideabucket/buckets";
|
|
5866
|
+
const response = await this.http.get(path, this.getCliRequestHeaders());
|
|
5867
|
+
if (!response.ok) throw new Error(`IdeaBucket status failed with HTTP ${response.status}`);
|
|
5868
|
+
return response.data;
|
|
5869
|
+
}
|
|
5870
|
+
async processIdeaBucketBucket(bucketId, options = {}) {
|
|
5871
|
+
this.requireSession();
|
|
5872
|
+
const response = await this.http.post(
|
|
5873
|
+
`/v1/ideabucket/buckets/${encodeURIComponent(bucketId)}/process`,
|
|
5874
|
+
{ now: options.now === true },
|
|
5875
|
+
this.getCliRequestHeaders()
|
|
5876
|
+
);
|
|
5877
|
+
if (!response.ok) throw new Error(`IdeaBucket process failed with HTTP ${response.status}`);
|
|
5878
|
+
return response.data;
|
|
5879
|
+
}
|
|
5785
5880
|
async listDrafts(forceRefresh = false) {
|
|
5786
5881
|
if (forceRefresh) await this.reconcileDraftVersions();
|
|
5787
5882
|
const cache = await this.ensureSynced(forceRefresh);
|
|
@@ -6307,6 +6402,7 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
6307
6402
|
}
|
|
6308
6403
|
async sendMessage(params) {
|
|
6309
6404
|
const teamId = this.resolveTeamContext({ teamId: params.teamId, personal: params.personal });
|
|
6405
|
+
const shouldWaitForAi = shouldWaitForTeamAi(params.message, teamId);
|
|
6310
6406
|
let chatId;
|
|
6311
6407
|
if (!params.chatId) {
|
|
6312
6408
|
chatId = randomUUID5();
|
|
@@ -6488,7 +6584,7 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
6488
6584
|
if (encryptedEmbeds.length > 0) {
|
|
6489
6585
|
messagePayload.encrypted_embeds = encryptedEmbeds;
|
|
6490
6586
|
}
|
|
6491
|
-
let precollectedResponse = params.precollectResponse && params.incognito ? ws.collectAiResponse(messageId, chatId, { onStream: params.onStream, timeoutMs: params.responseTimeoutMs }) : null;
|
|
6587
|
+
let precollectedResponse = params.precollectResponse && params.incognito && shouldWaitForAi ? ws.collectAiResponse(messageId, chatId, { onStream: params.onStream, timeoutMs: params.responseTimeoutMs }) : null;
|
|
6492
6588
|
if (!params.incognito && chatKeyBytes && encryptedChatKey) {
|
|
6493
6589
|
const protocolVersion = 1;
|
|
6494
6590
|
const chatKeyVersion = 1;
|
|
@@ -6568,7 +6664,7 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
6568
6664
|
terminalExpectedMessagesV = ackPayload.committed_messages_v;
|
|
6569
6665
|
}
|
|
6570
6666
|
}
|
|
6571
|
-
if (params.precollectResponse && !params.incognito) {
|
|
6667
|
+
if (params.precollectResponse && !params.incognito && shouldWaitForAi) {
|
|
6572
6668
|
precollectedResponse = ws.collectAiResponse(messageId, chatId, {
|
|
6573
6669
|
onStream: params.onStream,
|
|
6574
6670
|
timeoutMs: params.responseTimeoutMs,
|
|
@@ -6781,7 +6877,9 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
6781
6877
|
onSubChatEvent: handleSubChatEvent,
|
|
6782
6878
|
onAppSettingsMemoriesRequest: handleAppSettingsMemoriesRequest
|
|
6783
6879
|
};
|
|
6784
|
-
if (
|
|
6880
|
+
if (!shouldWaitForAi) {
|
|
6881
|
+
ws.close();
|
|
6882
|
+
} else if (params.incognito) {
|
|
6785
6883
|
try {
|
|
6786
6884
|
const resp = await (precollectedResponse ?? ws.collectAiResponse(messageId, chatId, {
|
|
6787
6885
|
...streamOpts,
|
|
@@ -9009,7 +9107,7 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
9009
9107
|
*/
|
|
9010
9108
|
async sdkGetMemories(teamId) {
|
|
9011
9109
|
const response = await this.http.get(
|
|
9012
|
-
`/v1/
|
|
9110
|
+
`/v1/teams/${encodeURIComponent(teamId)}/memories`,
|
|
9013
9111
|
this.getCliRequestHeaders()
|
|
9014
9112
|
);
|
|
9015
9113
|
if (!response.ok) throw new Error(`Team memory list failed with HTTP ${response.status}`);
|
|
@@ -14195,10 +14293,114 @@ import { decode as toonDecode } from "@toon-format/toon";
|
|
|
14195
14293
|
import { createHash as createHash8, randomBytes as randomBytes4, randomUUID as randomUUID6 } from "crypto";
|
|
14196
14294
|
import { chmodSync as chmodSync2, existsSync as existsSync5, mkdirSync as mkdirSync3, readFileSync as readFileSync4, writeFileSync as writeFileSync3 } from "fs";
|
|
14197
14295
|
import { homedir as homedir4 } from "os";
|
|
14198
|
-
import { dirname, join as join3 } from "path";
|
|
14296
|
+
import { dirname as dirname2, join as join3 } from "path";
|
|
14297
|
+
|
|
14298
|
+
// src/designIcons.ts
|
|
14299
|
+
import { mkdir, writeFile } from "fs/promises";
|
|
14300
|
+
import { dirname, extname } from "path";
|
|
14301
|
+
import { Resvg } from "@resvg/resvg-js";
|
|
14302
|
+
var ICON_SEGMENT_PATTERN = /^[a-z0-9][a-z0-9._-]*$/i;
|
|
14303
|
+
var ICON_PATH_PATTERN = /^\/v1\/apps\/design\/icons\/iconify\/([a-z0-9][a-z0-9._-]*)\/([a-z0-9][a-z0-9._-]*)\.svg$/i;
|
|
14304
|
+
var HEX_COLOR_PATTERN = /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;
|
|
14305
|
+
var DEFAULT_PNG_SIZE = 256;
|
|
14306
|
+
var MAX_PNG_SIZE = 4096;
|
|
14307
|
+
async function exportDesignIcon(request) {
|
|
14308
|
+
const svgPath = resolveDesignIconSvgPath(request);
|
|
14309
|
+
const format = resolveDesignIconFormat(request.format, request.outputPath);
|
|
14310
|
+
const color = normalizeDesignIconColor(request.color);
|
|
14311
|
+
if (color && request.palette === true && request.allowPaletteRecolor !== true) {
|
|
14312
|
+
throw new Error("Palette icons cannot be recolored unless allowPaletteRecolor is true");
|
|
14313
|
+
}
|
|
14314
|
+
const fetched = await request.fetchSvg(svgPath);
|
|
14315
|
+
const svg = applyDesignIconColor(decodeFetchedSvg(fetched), color);
|
|
14316
|
+
const data = format === "svg" ? new TextEncoder().encode(svg) : renderDesignIconPng(svg, request);
|
|
14317
|
+
const result = {
|
|
14318
|
+
format,
|
|
14319
|
+
contentType: format === "svg" ? "image/svg+xml" : "image/png",
|
|
14320
|
+
data,
|
|
14321
|
+
svg,
|
|
14322
|
+
svgPath,
|
|
14323
|
+
outputPath: request.outputPath
|
|
14324
|
+
};
|
|
14325
|
+
if (request.outputPath) {
|
|
14326
|
+
await writeExportFile(request.outputPath, data);
|
|
14327
|
+
}
|
|
14328
|
+
return result;
|
|
14329
|
+
}
|
|
14330
|
+
function resolveDesignIconSvgPath(options) {
|
|
14331
|
+
if (options.svgPath) {
|
|
14332
|
+
const trimmed = options.svgPath.trim();
|
|
14333
|
+
if (!ICON_PATH_PATTERN.test(trimmed)) {
|
|
14334
|
+
throw new Error("svgPath must be an OpenMates Design Iconify SVG path");
|
|
14335
|
+
}
|
|
14336
|
+
return trimmed;
|
|
14337
|
+
}
|
|
14338
|
+
const prefix = options.prefix?.trim();
|
|
14339
|
+
const name = options.name?.trim();
|
|
14340
|
+
if (!prefix || !name) {
|
|
14341
|
+
throw new Error("Provide either svgPath or both prefix and name");
|
|
14342
|
+
}
|
|
14343
|
+
if (!ICON_SEGMENT_PATTERN.test(prefix) || !ICON_SEGMENT_PATTERN.test(name)) {
|
|
14344
|
+
throw new Error("Icon prefix and name may contain only letters, numbers, dots, underscores, and dashes");
|
|
14345
|
+
}
|
|
14346
|
+
return `/v1/apps/design/icons/iconify/${encodeURIComponent(prefix)}/${encodeURIComponent(name)}.svg`;
|
|
14347
|
+
}
|
|
14348
|
+
function normalizeDesignIconColor(color) {
|
|
14349
|
+
if (color === void 0) return void 0;
|
|
14350
|
+
const trimmed = color.trim();
|
|
14351
|
+
if (!HEX_COLOR_PATTERN.test(trimmed)) {
|
|
14352
|
+
throw new Error("Icon color must be a hex color such as #111827");
|
|
14353
|
+
}
|
|
14354
|
+
return trimmed;
|
|
14355
|
+
}
|
|
14356
|
+
function applyDesignIconColor(svg, color) {
|
|
14357
|
+
if (!color) return svg;
|
|
14358
|
+
const withCurrentColor = svg.replace(/\bcurrentColor\b/g, color);
|
|
14359
|
+
return withCurrentColor.replace(/<svg\b([^>]*)>/i, (match, attrs) => {
|
|
14360
|
+
if (/\scolor\s*=/.test(attrs)) {
|
|
14361
|
+
return match.replace(/\scolor\s*=\s*(['"])[^'"]*\1/i, ` color="${color}"`);
|
|
14362
|
+
}
|
|
14363
|
+
return `<svg${attrs} color="${color}">`;
|
|
14364
|
+
});
|
|
14365
|
+
}
|
|
14366
|
+
function resolveDesignIconFormat(format, outputPath) {
|
|
14367
|
+
if (format) return format;
|
|
14368
|
+
const extension = outputPath ? extname(outputPath).toLowerCase() : ".svg";
|
|
14369
|
+
return extension === ".png" ? "png" : "svg";
|
|
14370
|
+
}
|
|
14371
|
+
function decodeFetchedSvg(value) {
|
|
14372
|
+
if (typeof value === "string") return value;
|
|
14373
|
+
return new TextDecoder().decode(value);
|
|
14374
|
+
}
|
|
14375
|
+
function renderDesignIconPng(svg, options) {
|
|
14376
|
+
const width = normalizePngSize(options.width, "width");
|
|
14377
|
+
const height = normalizePngSize(options.height, "height");
|
|
14378
|
+
const size = normalizePngSize(options.size, "size") ?? DEFAULT_PNG_SIZE;
|
|
14379
|
+
const fitTo = width ? { mode: "width", value: width } : height ? { mode: "height", value: height } : { mode: "width", value: size };
|
|
14380
|
+
return new Uint8Array(new Resvg(svg, { fitTo, logLevel: "off" }).render().asPng());
|
|
14381
|
+
}
|
|
14382
|
+
function normalizePngSize(value, label) {
|
|
14383
|
+
if (value === void 0) return void 0;
|
|
14384
|
+
if (!Number.isInteger(value) || value <= 0 || value > MAX_PNG_SIZE) {
|
|
14385
|
+
throw new Error(`PNG ${label} must be an integer from 1 to ${MAX_PNG_SIZE}`);
|
|
14386
|
+
}
|
|
14387
|
+
return value;
|
|
14388
|
+
}
|
|
14389
|
+
async function writeExportFile(path, data) {
|
|
14390
|
+
const directory = dirname(path);
|
|
14391
|
+
if (directory && directory !== ".") {
|
|
14392
|
+
await mkdir(directory, { recursive: true });
|
|
14393
|
+
}
|
|
14394
|
+
await writeFile(path, data);
|
|
14395
|
+
}
|
|
14396
|
+
|
|
14397
|
+
// src/sdk.ts
|
|
14199
14398
|
var DEFAULT_API_URL2 = "https://api.openmates.org";
|
|
14200
14399
|
var DEFAULT_RECOVERY_POLL_INTERVAL_MS = 500;
|
|
14201
14400
|
var DEFAULT_RECOVERY_TIMEOUT_MS = 6e4;
|
|
14401
|
+
var IDEABUCKET_DEFAULT_PROCESSING_PROMPT2 = `These are my captured ideas for today. Please process them, group related thoughts, suggest next actions, and ask clarifying questions where needed:
|
|
14402
|
+
|
|
14403
|
+
If an idea requires deeper work, create or suggest sub-chats for focused research, planning, todos, docs, or implementation.`;
|
|
14202
14404
|
var OpenMatesConfigError = class extends Error {
|
|
14203
14405
|
constructor(message) {
|
|
14204
14406
|
super(message);
|
|
@@ -14223,10 +14425,12 @@ var OpenMates = class {
|
|
|
14223
14425
|
chats;
|
|
14224
14426
|
connectedAccounts;
|
|
14225
14427
|
docs;
|
|
14428
|
+
design;
|
|
14226
14429
|
drafts;
|
|
14227
14430
|
embeds;
|
|
14228
14431
|
feedback;
|
|
14229
14432
|
inspirations;
|
|
14433
|
+
ideabucket;
|
|
14230
14434
|
apiKeys;
|
|
14231
14435
|
learningMode;
|
|
14232
14436
|
memories;
|
|
@@ -14237,6 +14441,7 @@ var OpenMates = class {
|
|
|
14237
14441
|
settings;
|
|
14238
14442
|
plans;
|
|
14239
14443
|
tasks;
|
|
14444
|
+
teams;
|
|
14240
14445
|
workflows;
|
|
14241
14446
|
apiKey;
|
|
14242
14447
|
apiUrl;
|
|
@@ -14254,10 +14459,12 @@ var OpenMates = class {
|
|
|
14254
14459
|
this.chats = new OpenMatesChats(this);
|
|
14255
14460
|
this.connectedAccounts = new OpenMatesConnectedAccounts(this);
|
|
14256
14461
|
this.docs = new OpenMatesDocs(this);
|
|
14462
|
+
this.design = new OpenMatesDesign(this);
|
|
14257
14463
|
this.drafts = new OpenMatesDrafts(this);
|
|
14258
14464
|
this.embeds = new OpenMatesEmbeds(this);
|
|
14259
14465
|
this.feedback = new OpenMatesFeedback(this);
|
|
14260
14466
|
this.inspirations = new OpenMatesInspirations(this);
|
|
14467
|
+
this.ideabucket = new OpenMatesIdeaBucket(this);
|
|
14261
14468
|
this.apiKeys = new OpenMatesApiKeys(this);
|
|
14262
14469
|
this.learningMode = new OpenMatesLearningMode(this);
|
|
14263
14470
|
this.memories = new OpenMatesMemories(this);
|
|
@@ -14268,6 +14475,7 @@ var OpenMates = class {
|
|
|
14268
14475
|
this.settings = new OpenMatesSettings(this);
|
|
14269
14476
|
this.plans = new OpenMatesPlans(this);
|
|
14270
14477
|
this.tasks = new OpenMatesTasks(this);
|
|
14478
|
+
this.teams = new OpenMatesTeams(this);
|
|
14271
14479
|
this.workflows = new OpenMatesWorkflows(this);
|
|
14272
14480
|
}
|
|
14273
14481
|
async runAppSkill(appId, skillId, input) {
|
|
@@ -14515,7 +14723,7 @@ function loadOrCreateDeviceId(customPath) {
|
|
|
14515
14723
|
if (stored) return stored;
|
|
14516
14724
|
}
|
|
14517
14725
|
const deviceId = randomUUID6();
|
|
14518
|
-
mkdirSync3(
|
|
14726
|
+
mkdirSync3(dirname2(path), { recursive: true, mode: 448 });
|
|
14519
14727
|
writeFileSync3(path, `${deviceId}
|
|
14520
14728
|
`, { encoding: "utf8", mode: 384 });
|
|
14521
14729
|
chmodSync2(path, 384);
|
|
@@ -14838,6 +15046,78 @@ var OpenMatesChats = class {
|
|
|
14838
15046
|
return this.send(message, { saveToAccount: false });
|
|
14839
15047
|
}
|
|
14840
15048
|
};
|
|
15049
|
+
var OpenMatesIdeaBucket = class {
|
|
15050
|
+
client;
|
|
15051
|
+
constructor(client) {
|
|
15052
|
+
this.client = client;
|
|
15053
|
+
}
|
|
15054
|
+
async add(input) {
|
|
15055
|
+
const payload = await this.buildEncryptedAddPayload(input);
|
|
15056
|
+
const bucketId = String(payload.ideabucket_processing_window_id);
|
|
15057
|
+
return this.client.request(
|
|
15058
|
+
`/v1/sdk/ideabucket/buckets/${encodeURIComponent(bucketId)}/add`,
|
|
15059
|
+
payload
|
|
15060
|
+
);
|
|
15061
|
+
}
|
|
15062
|
+
async status(bucketId) {
|
|
15063
|
+
const path = bucketId ? `/v1/sdk/ideabucket/buckets/${encodeURIComponent(bucketId)}` : "/v1/sdk/ideabucket/buckets";
|
|
15064
|
+
return this.client.get(path);
|
|
15065
|
+
}
|
|
15066
|
+
async process(bucketId, options = {}) {
|
|
15067
|
+
return this.client.request(
|
|
15068
|
+
`/v1/sdk/ideabucket/buckets/${encodeURIComponent(bucketId)}/process`,
|
|
15069
|
+
{ now: options.now === true }
|
|
15070
|
+
);
|
|
15071
|
+
}
|
|
15072
|
+
async buildEncryptedAddPayload(input) {
|
|
15073
|
+
const ideaText = input.text.trim();
|
|
15074
|
+
if (!ideaText) throw new OpenMatesConfigError("IdeaBucket add requires non-empty text.");
|
|
15075
|
+
const now = Math.floor(Date.now() / 1e3);
|
|
15076
|
+
const bucketId = input.bucketId ?? new Date(now * 1e3).toISOString().slice(0, 10);
|
|
15077
|
+
const scheduledSendAt = input.scheduledSendAt ?? defaultIdeaBucketScheduledSendAt2(now);
|
|
15078
|
+
const chatId = input.chatId ?? randomUUID6();
|
|
15079
|
+
const prompt = input.prompt ?? IDEABUCKET_DEFAULT_PROCESSING_PROMPT2;
|
|
15080
|
+
const markdown = buildIdeaBucketMarkdown2(prompt, ideaText);
|
|
15081
|
+
const preview = `IdeaBucket ${bucketId}: ${ideaText.slice(0, 120)}`;
|
|
15082
|
+
const serverProcessablePayload = JSON.stringify({
|
|
15083
|
+
prompt,
|
|
15084
|
+
bucket_id: bucketId,
|
|
15085
|
+
processing_window_id: bucketId,
|
|
15086
|
+
ideas: [{ index: 1, type: "text", text: ideaText }]
|
|
15087
|
+
});
|
|
15088
|
+
const payloadHash = createHash8("sha256").update(serverProcessablePayload).digest("hex");
|
|
15089
|
+
const masterKey = await this.client.masterKey();
|
|
15090
|
+
return {
|
|
15091
|
+
chat_id: chatId,
|
|
15092
|
+
encrypted_draft_md: await encryptWithAesGcmCombined(markdown, masterKey),
|
|
15093
|
+
encrypted_draft_preview: await encryptWithAesGcmCombined(preview, masterKey),
|
|
15094
|
+
ideabucket: true,
|
|
15095
|
+
ideabucket_processing_window_id: bucketId,
|
|
15096
|
+
ideabucket_processing_version: now,
|
|
15097
|
+
scheduled_send_at: scheduledSendAt,
|
|
15098
|
+
server_vault_encrypted_processing_payload: await encryptWithAesGcmCombined(serverProcessablePayload, masterKey),
|
|
15099
|
+
client_encrypted_future_user_message: await encryptWithAesGcmCombined(markdown, masterKey),
|
|
15100
|
+
client_encrypted_ideabucket_system_event: await encryptWithAesGcmCombined(JSON.stringify({
|
|
15101
|
+
type: "ideabucket_triggered_send",
|
|
15102
|
+
bucket_id: bucketId,
|
|
15103
|
+
processing_window_id: bucketId,
|
|
15104
|
+
source: "openmates_sdk"
|
|
15105
|
+
}), masterKey),
|
|
15106
|
+
payload_hash: payloadHash
|
|
15107
|
+
};
|
|
15108
|
+
}
|
|
15109
|
+
};
|
|
15110
|
+
function defaultIdeaBucketScheduledSendAt2(nowSeconds2) {
|
|
15111
|
+
const date = new Date(nowSeconds2 * 1e3);
|
|
15112
|
+
return Math.floor(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + 1, 9, 0, 0) / 1e3);
|
|
15113
|
+
}
|
|
15114
|
+
function buildIdeaBucketMarkdown2(prompt, ideaText) {
|
|
15115
|
+
return [prompt.trim(), [
|
|
15116
|
+
"----- Idea 1 -----",
|
|
15117
|
+
ideaText.trim(),
|
|
15118
|
+
"-----------------"
|
|
15119
|
+
].join("\n")].join("\n\n");
|
|
15120
|
+
}
|
|
14841
15121
|
var OpenMatesDrafts = class {
|
|
14842
15122
|
client;
|
|
14843
15123
|
constructor(client) {
|
|
@@ -15130,6 +15410,18 @@ var OpenMatesBilling = class {
|
|
|
15130
15410
|
return this.client.request("/v1/sdk/billing/auto-topup/low-balance", input);
|
|
15131
15411
|
}
|
|
15132
15412
|
};
|
|
15413
|
+
var OpenMatesDesign = class {
|
|
15414
|
+
client;
|
|
15415
|
+
constructor(client) {
|
|
15416
|
+
this.client = client;
|
|
15417
|
+
}
|
|
15418
|
+
async exportIcon(options) {
|
|
15419
|
+
return exportDesignIcon({
|
|
15420
|
+
...options,
|
|
15421
|
+
fetchSvg: async (path) => (await this.client.getRaw(path)).data
|
|
15422
|
+
});
|
|
15423
|
+
}
|
|
15424
|
+
};
|
|
15133
15425
|
var OpenMatesNotifications = class {
|
|
15134
15426
|
client;
|
|
15135
15427
|
constructor(client) {
|
|
@@ -15693,6 +15985,9 @@ var OpenMatesConnectedAccounts = class {
|
|
|
15693
15985
|
this.client = client;
|
|
15694
15986
|
}
|
|
15695
15987
|
async import(input) {
|
|
15988
|
+
if (input.teamId) {
|
|
15989
|
+
throw new OpenMatesConfigError("Team connected accounts are not supported yet.");
|
|
15990
|
+
}
|
|
15696
15991
|
const payload = await decryptConnectedAccountCliTransferPayload(input.payload, input.passcode);
|
|
15697
15992
|
const account = await this.client.get("/v1/sdk/account");
|
|
15698
15993
|
const userId = typeof account.id === "string" ? account.id : "";
|
|
@@ -15707,6 +16002,94 @@ var OpenMatesConnectedAccounts = class {
|
|
|
15707
16002
|
return this.client.request("/v1/sdk/connected-accounts/import", { row });
|
|
15708
16003
|
}
|
|
15709
16004
|
};
|
|
16005
|
+
var OpenMatesTeams = class {
|
|
16006
|
+
client;
|
|
16007
|
+
constructor(client) {
|
|
16008
|
+
this.client = client;
|
|
16009
|
+
}
|
|
16010
|
+
async list() {
|
|
16011
|
+
const result = await this.client.get("/v1/teams");
|
|
16012
|
+
return result.teams ?? [];
|
|
16013
|
+
}
|
|
16014
|
+
async get(teamId) {
|
|
16015
|
+
const result = await this.client.get(`/v1/teams/${encodeURIComponent(teamId)}`);
|
|
16016
|
+
return result.team ?? result;
|
|
16017
|
+
}
|
|
16018
|
+
async create(input) {
|
|
16019
|
+
const result = await this.client.request("/v1/teams", input);
|
|
16020
|
+
return result.team ?? result;
|
|
16021
|
+
}
|
|
16022
|
+
async update(teamId, input) {
|
|
16023
|
+
const result = await this.client.patch(`/v1/teams/${encodeURIComponent(teamId)}`, input);
|
|
16024
|
+
return result.team ?? result;
|
|
16025
|
+
}
|
|
16026
|
+
async delete(teamId) {
|
|
16027
|
+
return this.client.delete(`/v1/teams/${encodeURIComponent(teamId)}`);
|
|
16028
|
+
}
|
|
16029
|
+
async invite(teamId, input) {
|
|
16030
|
+
const result = await this.client.request(`/v1/teams/${encodeURIComponent(teamId)}/invites`, input);
|
|
16031
|
+
return result.invite ?? result;
|
|
16032
|
+
}
|
|
16033
|
+
async acceptInvite(inviteId, input = {}) {
|
|
16034
|
+
return this.client.request(`/v1/team-invites/${encodeURIComponent(inviteId)}/accept`, input);
|
|
16035
|
+
}
|
|
16036
|
+
async declineInvite(inviteId, input = {}) {
|
|
16037
|
+
return this.client.request(`/v1/team-invites/${encodeURIComponent(inviteId)}/decline`, input);
|
|
16038
|
+
}
|
|
16039
|
+
async accessRequests(teamId, status) {
|
|
16040
|
+
const query = status ? `?status=${encodeURIComponent(status)}` : "";
|
|
16041
|
+
const result = await this.client.get(`/v1/teams/${encodeURIComponent(teamId)}/access-requests${query}`);
|
|
16042
|
+
return result.access_requests ?? [];
|
|
16043
|
+
}
|
|
16044
|
+
async approveAccess(teamId, accessRequestId, input = {}) {
|
|
16045
|
+
const result = await this.client.request(`/v1/teams/${encodeURIComponent(teamId)}/access-requests/${encodeURIComponent(accessRequestId)}/approve`, input);
|
|
16046
|
+
return result.membership ?? result;
|
|
16047
|
+
}
|
|
16048
|
+
async rejectAccess(teamId, accessRequestId, input = {}) {
|
|
16049
|
+
return this.client.request(`/v1/teams/${encodeURIComponent(teamId)}/access-requests/${encodeURIComponent(accessRequestId)}/reject`, input);
|
|
16050
|
+
}
|
|
16051
|
+
async removeMember(teamId, memberUserId, input = {}) {
|
|
16052
|
+
return this.client.request(`/v1/teams/${encodeURIComponent(teamId)}/members/${encodeURIComponent(memberUserId)}/remove`, input);
|
|
16053
|
+
}
|
|
16054
|
+
async billing(teamId) {
|
|
16055
|
+
const result = await this.client.get(`/v1/teams/${encodeURIComponent(teamId)}/billing`);
|
|
16056
|
+
return result.billing ?? result;
|
|
16057
|
+
}
|
|
16058
|
+
async addCredits(teamId, input) {
|
|
16059
|
+
const result = await this.client.request(`/v1/teams/${encodeURIComponent(teamId)}/billing/credits`, input);
|
|
16060
|
+
return result.billing ?? result;
|
|
16061
|
+
}
|
|
16062
|
+
async usage(teamId, memberUserId) {
|
|
16063
|
+
const query = memberUserId ? `?member_user_id=${encodeURIComponent(memberUserId)}` : "";
|
|
16064
|
+
const result = await this.client.get(`/v1/teams/${encodeURIComponent(teamId)}/billing/usage${query}`);
|
|
16065
|
+
return result.usage ?? [];
|
|
16066
|
+
}
|
|
16067
|
+
async memories(teamId) {
|
|
16068
|
+
const result = await this.client.get(`/v1/teams/${encodeURIComponent(teamId)}/memories`);
|
|
16069
|
+
return result.memories ?? [];
|
|
16070
|
+
}
|
|
16071
|
+
async move(workspaceType, objectId, teamId) {
|
|
16072
|
+
const routes = {
|
|
16073
|
+
chat: "chats",
|
|
16074
|
+
project: "projects",
|
|
16075
|
+
task: "user-tasks",
|
|
16076
|
+
plan: "user-plans",
|
|
16077
|
+
workflow: "workflows"
|
|
16078
|
+
};
|
|
16079
|
+
const route = routes[workspaceType];
|
|
16080
|
+
if (!route) throw new OpenMatesConfigError("Unsupported team move workspace type");
|
|
16081
|
+
return this.client.request(
|
|
16082
|
+
`/v1/${route}/${encodeURIComponent(objectId)}/move`,
|
|
16083
|
+
{ team_id: teamId, confirmed: true, moved_at: Math.floor(Date.now() / 1e3) }
|
|
16084
|
+
);
|
|
16085
|
+
}
|
|
16086
|
+
async export(teamId, input = {}) {
|
|
16087
|
+
return this.client.request(`/v1/teams/${encodeURIComponent(teamId)}/export`, input);
|
|
16088
|
+
}
|
|
16089
|
+
async import(input) {
|
|
16090
|
+
return this.client.request("/v1/teams/import", input);
|
|
16091
|
+
}
|
|
16092
|
+
};
|
|
15710
16093
|
var OpenMatesLearningMode = class {
|
|
15711
16094
|
client;
|
|
15712
16095
|
constructor(client) {
|
|
@@ -15767,7 +16150,7 @@ import { createInterface as createInterface5 } from "readline/promises";
|
|
|
15767
16150
|
import { stdin as stdin3, stdout as stdout2 } from "process";
|
|
15768
16151
|
import { readFileSync as readFileSync10, realpathSync, writeFileSync as writeFileSync7 } from "fs";
|
|
15769
16152
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
15770
|
-
import { basename as basename3, dirname as
|
|
16153
|
+
import { basename as basename3, dirname as dirname5 } from "path";
|
|
15771
16154
|
import { randomUUID as randomUUID8 } from "crypto";
|
|
15772
16155
|
import WebSocket2 from "ws";
|
|
15773
16156
|
|
|
@@ -16485,7 +16868,7 @@ var OutputRedactor = class {
|
|
|
16485
16868
|
|
|
16486
16869
|
// src/fileEmbed.ts
|
|
16487
16870
|
import { readFileSync as readFileSync5, statSync, existsSync as existsSync6 } from "fs";
|
|
16488
|
-
import { basename, extname, resolve as resolve2 } from "path";
|
|
16871
|
+
import { basename, extname as extname2, resolve as resolve2 } from "path";
|
|
16489
16872
|
import { homedir as homedir5 } from "os";
|
|
16490
16873
|
import { createHash as createHash9 } from "crypto";
|
|
16491
16874
|
var MAX_PER_FILE_SIZE = 100 * 1024 * 1024;
|
|
@@ -16592,7 +16975,7 @@ function isEnvFile(filename) {
|
|
|
16592
16975
|
return lower === ".env" || lower.startsWith(".env.") || lower === ".envrc";
|
|
16593
16976
|
}
|
|
16594
16977
|
function getExt(filename) {
|
|
16595
|
-
const ext =
|
|
16978
|
+
const ext = extname2(filename).toLowerCase();
|
|
16596
16979
|
return ext.startsWith(".") ? ext.slice(1) : ext;
|
|
16597
16980
|
}
|
|
16598
16981
|
function isCodeOrTextFile(filename) {
|
|
@@ -18357,7 +18740,7 @@ import { chmodSync as chmodSync3, closeSync, copyFileSync, cpSync, existsSync as
|
|
|
18357
18740
|
import { createInterface as createInterface3 } from "readline";
|
|
18358
18741
|
import { createInterface as createPromptInterface } from "readline/promises";
|
|
18359
18742
|
import { homedir as homedir6 } from "os";
|
|
18360
|
-
import { dirname as
|
|
18743
|
+
import { dirname as dirname3, join as join4, resolve as resolve3 } from "path";
|
|
18361
18744
|
|
|
18362
18745
|
// src/branding.ts
|
|
18363
18746
|
var OPENMATES_WORDMARK = "OPENMATES";
|
|
@@ -19010,10 +19393,10 @@ async function fetchText(url) {
|
|
|
19010
19393
|
return response.text();
|
|
19011
19394
|
}
|
|
19012
19395
|
function packagedTemplatePath(role) {
|
|
19013
|
-
return join4(
|
|
19396
|
+
return join4(dirname3(new URL(import.meta.url).pathname), "..", "templates", ROLE_TEMPLATE_FILES[role]);
|
|
19014
19397
|
}
|
|
19015
19398
|
function packagedCaddyTemplatePath(role) {
|
|
19016
|
-
return join4(
|
|
19399
|
+
return join4(dirname3(new URL(import.meta.url).pathname), "..", "templates", "caddy", role, "Caddyfile");
|
|
19017
19400
|
}
|
|
19018
19401
|
function fileHash(path) {
|
|
19019
19402
|
if (!existsSync7(path)) return null;
|
|
@@ -19117,7 +19500,7 @@ function defaultCloneBranchForVersion(version) {
|
|
|
19117
19500
|
}
|
|
19118
19501
|
function hasLlmCredentials(envPath) {
|
|
19119
19502
|
if (!existsSync7(envPath)) return false;
|
|
19120
|
-
if (hasLocalAiModels(
|
|
19503
|
+
if (hasLocalAiModels(dirname3(envPath))) return true;
|
|
19121
19504
|
const content = readFileSync6(envPath, "utf-8");
|
|
19122
19505
|
for (const line of content.split("\n")) {
|
|
19123
19506
|
const trimmed = line.trim();
|
|
@@ -19168,7 +19551,7 @@ function imageBackendConfigPath(installPath) {
|
|
|
19168
19551
|
function ensureImageRuntimeConfig(installPath) {
|
|
19169
19552
|
const configPath = imageBackendConfigPath(installPath);
|
|
19170
19553
|
if (existsSync7(configPath)) return;
|
|
19171
|
-
mkdirSync4(
|
|
19554
|
+
mkdirSync4(dirname3(configPath), { recursive: true });
|
|
19172
19555
|
writeFileSync4(configPath, renderFeatureOverrides({ enabled: [], disabled: [] }));
|
|
19173
19556
|
}
|
|
19174
19557
|
function readLocalModelOverlay(path) {
|
|
@@ -19183,7 +19566,7 @@ function readLocalModelOverlay(path) {
|
|
|
19183
19566
|
}
|
|
19184
19567
|
}
|
|
19185
19568
|
function writeLocalModelOverlay(path, overlay) {
|
|
19186
|
-
mkdirSync4(
|
|
19569
|
+
mkdirSync4(dirname3(path), { recursive: true });
|
|
19187
19570
|
writeFileSync4(path, `${JSON.stringify(overlay, null, 2)}
|
|
19188
19571
|
`);
|
|
19189
19572
|
}
|
|
@@ -19242,13 +19625,13 @@ function updateStatusFile(installPath, role) {
|
|
|
19242
19625
|
}
|
|
19243
19626
|
function writeUpdateStatus(installPath, role, status) {
|
|
19244
19627
|
const filePath = updateStatusFile(installPath, role);
|
|
19245
|
-
mkdirSync4(
|
|
19628
|
+
mkdirSync4(dirname3(filePath), { recursive: true, mode: 448 });
|
|
19246
19629
|
writeFileSync4(filePath, `${JSON.stringify({ role, updated_at: (/* @__PURE__ */ new Date()).toISOString(), ...status }, null, 2)}
|
|
19247
19630
|
`, { mode: 384 });
|
|
19248
19631
|
}
|
|
19249
19632
|
function copyIfExists(source, destination) {
|
|
19250
19633
|
if (!existsSync7(source)) return;
|
|
19251
|
-
mkdirSync4(
|
|
19634
|
+
mkdirSync4(dirname3(destination), { recursive: true });
|
|
19252
19635
|
cpSync(source, destination, { recursive: true, force: true });
|
|
19253
19636
|
}
|
|
19254
19637
|
function readEnvMap(installPath) {
|
|
@@ -20699,7 +21082,7 @@ WARNING: This will replace ${appliedPath} with the packaged ${role} Caddyfile.`)
|
|
|
20699
21082
|
const backupPath = `${appliedPath}.openmates-backup-${nowStamp()}`;
|
|
20700
21083
|
const hadExistingCaddyfile = existsSync7(appliedPath);
|
|
20701
21084
|
try {
|
|
20702
|
-
mkdirSync4(
|
|
21085
|
+
mkdirSync4(dirname3(appliedPath), { recursive: true });
|
|
20703
21086
|
if (hadExistingCaddyfile) copyFileSync(appliedPath, backupPath);
|
|
20704
21087
|
copyFileSync(templatePath, appliedPath);
|
|
20705
21088
|
execSync("systemctl reload caddy", { stdio: "inherit" });
|
|
@@ -35945,6 +36328,417 @@ var libraryBookReturnWorkflowChat = {
|
|
|
35945
36328
|
}
|
|
35946
36329
|
};
|
|
35947
36330
|
|
|
36331
|
+
// ../ui/src/demo_chats/data/example_chats/dashboard-sidebar-svg-icons.ts
|
|
36332
|
+
var dashboardSidebarSvgIconsChat = {
|
|
36333
|
+
chat_id: "example-dashboard-sidebar-svg-icons",
|
|
36334
|
+
slug: "dashboard-sidebar-svg-icons",
|
|
36335
|
+
title: "example_chats.dashboard_sidebar_svg_icons.title",
|
|
36336
|
+
summary: "example_chats.dashboard_sidebar_svg_icons.summary",
|
|
36337
|
+
icon: "design",
|
|
36338
|
+
category: "design",
|
|
36339
|
+
keywords: ["SVG icons", "dashboard sidebar", "Iconify", "Tabler Icons", "Remix Icon", "Material Symbols", "design"],
|
|
36340
|
+
follow_up_suggestions: [],
|
|
36341
|
+
messages: [
|
|
36342
|
+
{
|
|
36343
|
+
"id": "495cce69-f6d7-45df-a0bf-aa7569dff4c9",
|
|
36344
|
+
"role": "user",
|
|
36345
|
+
"content": "example_chats.dashboard_sidebar_svg_icons.message_1",
|
|
36346
|
+
"created_at": 1784380324
|
|
36347
|
+
},
|
|
36348
|
+
{
|
|
36349
|
+
"id": "3e7b7da9-6bed-568e-a77b-25dcdd836582",
|
|
36350
|
+
"role": "assistant",
|
|
36351
|
+
"content": "example_chats.dashboard_sidebar_svg_icons.message_2",
|
|
36352
|
+
"created_at": 1784380340,
|
|
36353
|
+
"user_message_id": "495cce69-f6d7-45df-a0bf-aa7569dff4c9",
|
|
36354
|
+
"category": "design",
|
|
36355
|
+
"model_name": "Gemini 3 Flash"
|
|
36356
|
+
}
|
|
36357
|
+
],
|
|
36358
|
+
embeds: [
|
|
36359
|
+
{
|
|
36360
|
+
"embed_id": "955e10f2-2643-4489-a9d0-6ccdad784a58",
|
|
36361
|
+
"type": "sheet",
|
|
36362
|
+
"content": 'type: sheet\napp_id: sheets\nskill_id: sheet\ntable: "| Collection | Style | License |\\n| :--- | :--- | :--- |\\n| **Tabler Icons** | Minimalist Stroke | MIT |\\n| **Remix Icon** | Professional Neutral | Apache 2.0 |\\n| **Material Symbols** | Modern Geometric | Apache 2.0 |\\n| **Boxicons** | Web Friendly | MIT |"\ntitle: ""\nembed_ref: sheet-955e10\nstatus: finished\nrow_count: 4\ncol_count: 3',
|
|
36363
|
+
"parent_embed_id": null,
|
|
36364
|
+
"embed_ids": null
|
|
36365
|
+
},
|
|
36366
|
+
{
|
|
36367
|
+
"embed_id": "8a1a3fb8-55d9-4b2a-9746-8b839f748f0b",
|
|
36368
|
+
"type": "icon_result",
|
|
36369
|
+
"content": 'icon_id: "ri:home-line"\nprefix: ri\nname: home-line\ndisplay_name: Home Line\ncollection_name: Remix Icon\ncollection_category: UI 24px\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/cyberalien/RemixIcon/blob/master/License"\nauthor_name: Remix Design\nauthor_url: "https://github.com/cyberalien/RemixIcon"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ri/home-line.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-line-vDv\napp_id: design\nskill_id: search_icons',
|
|
36370
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36371
|
+
"embed_ids": null
|
|
36372
|
+
},
|
|
36373
|
+
{
|
|
36374
|
+
"embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36375
|
+
"type": "app_skill_use",
|
|
36376
|
+
"content": "app_id: design\nskill_id: search_icons\nresult_count: 20\nembed_ids: 7af01409-8900-4512-808c-7ccccfc33e08|1e6080e5-d856-4d5f-bfbb-0b180e393277|d12b7e45-d9ed-49aa-9fe4-2cd53f4831ea|820aef48-ddeb-4d6c-b701-aaa072e722df|06faa994-047b-48ee-a07e-381dc747cbb7|2e88c915-9a87-47c0-80cd-09521e737597|aac59ece-3361-41ae-a669-d0b55919e086|b6282388-6a40-47f1-a307-3df121df52ce|372bef22-d0ee-405c-92af-aa0959c37000|71718c5a-e055-44c2-8222-f6ccecdb141e|6cd050ef-1052-4c04-9b96-65ae0e41b3a6|6a86b245-92b6-4fe6-ac02-12028a05d6d0|8088d00c-6358-4beb-896f-83a3b6c960fb|ba22a4bb-59bb-448e-a90b-b47792252ae2|69143f9c-d9f4-43fa-a3ae-1b79da548cf7|7e88c868-a968-4225-9056-472157fc5f8d|e7d6a11c-118e-44d4-987c-a306dcddd0dd|34452085-11fe-4291-8b41-abe1174304d0|48c56d96-d8d6-4ae3-a4ff-cda1e6102b16|cc31a3af-de4a-423c-a2ce-6cdec8b0f266\nstatus: finished\nembed_id: 68b02c14-a329-4772-97d2-d7b168bb50bc\nquery: settings\nid: 2\nprovider: Iconify\npreview_results[6]{name}:\n settings\n settings-outline\n settings-outline-rounded\n settings-rounded\n settings\n settings-outline",
|
|
36377
|
+
"parent_embed_id": null,
|
|
36378
|
+
"embed_ids": [
|
|
36379
|
+
"7af01409-8900-4512-808c-7ccccfc33e08",
|
|
36380
|
+
"1e6080e5-d856-4d5f-bfbb-0b180e393277",
|
|
36381
|
+
"d12b7e45-d9ed-49aa-9fe4-2cd53f4831ea",
|
|
36382
|
+
"820aef48-ddeb-4d6c-b701-aaa072e722df",
|
|
36383
|
+
"06faa994-047b-48ee-a07e-381dc747cbb7",
|
|
36384
|
+
"2e88c915-9a87-47c0-80cd-09521e737597",
|
|
36385
|
+
"aac59ece-3361-41ae-a669-d0b55919e086",
|
|
36386
|
+
"b6282388-6a40-47f1-a307-3df121df52ce",
|
|
36387
|
+
"372bef22-d0ee-405c-92af-aa0959c37000",
|
|
36388
|
+
"71718c5a-e055-44c2-8222-f6ccecdb141e",
|
|
36389
|
+
"6cd050ef-1052-4c04-9b96-65ae0e41b3a6",
|
|
36390
|
+
"6a86b245-92b6-4fe6-ac02-12028a05d6d0",
|
|
36391
|
+
"8088d00c-6358-4beb-896f-83a3b6c960fb",
|
|
36392
|
+
"ba22a4bb-59bb-448e-a90b-b47792252ae2",
|
|
36393
|
+
"69143f9c-d9f4-43fa-a3ae-1b79da548cf7",
|
|
36394
|
+
"7e88c868-a968-4225-9056-472157fc5f8d",
|
|
36395
|
+
"e7d6a11c-118e-44d4-987c-a306dcddd0dd",
|
|
36396
|
+
"34452085-11fe-4291-8b41-abe1174304d0",
|
|
36397
|
+
"48c56d96-d8d6-4ae3-a4ff-cda1e6102b16",
|
|
36398
|
+
"cc31a3af-de4a-423c-a2ce-6cdec8b0f266"
|
|
36399
|
+
]
|
|
36400
|
+
},
|
|
36401
|
+
{
|
|
36402
|
+
"embed_id": "1e6080e5-d856-4d5f-bfbb-0b180e393277",
|
|
36403
|
+
"type": "icon_result",
|
|
36404
|
+
"content": 'icon_id: "material-symbols:settings-outline"\nprefix: material-symbols\nname: settings-outline\ndisplay_name: Settings Outline\ncollection_name: Material Symbols\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols/settings-outline.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-outline-HKQ\napp_id: design\nskill_id: search_icons',
|
|
36405
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36406
|
+
"embed_ids": null
|
|
36407
|
+
},
|
|
36408
|
+
{
|
|
36409
|
+
"embed_id": "820aef48-ddeb-4d6c-b701-aaa072e722df",
|
|
36410
|
+
"type": "icon_result",
|
|
36411
|
+
"content": 'icon_id: "material-symbols:settings-rounded"\nprefix: material-symbols\nname: settings-rounded\ndisplay_name: Settings Rounded\ncollection_name: Material Symbols\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols/settings-rounded.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-rounded-iP0\napp_id: design\nskill_id: search_icons',
|
|
36412
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36413
|
+
"embed_ids": null
|
|
36414
|
+
},
|
|
36415
|
+
{
|
|
36416
|
+
"embed_id": "06faa994-047b-48ee-a07e-381dc747cbb7",
|
|
36417
|
+
"type": "icon_result",
|
|
36418
|
+
"content": 'icon_id: "material-symbols-light:settings"\nprefix: material-symbols-light\nname: settings\ndisplay_name: Settings\ncollection_name: Material Symbols Light\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols-light/settings.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-ZK0\napp_id: design\nskill_id: search_icons',
|
|
36419
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36420
|
+
"embed_ids": null
|
|
36421
|
+
},
|
|
36422
|
+
{
|
|
36423
|
+
"embed_id": "2e88c915-9a87-47c0-80cd-09521e737597",
|
|
36424
|
+
"type": "icon_result",
|
|
36425
|
+
"content": 'icon_id: "material-symbols-light:settings-outline"\nprefix: material-symbols-light\nname: settings-outline\ndisplay_name: Settings Outline\ncollection_name: Material Symbols Light\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols-light/settings-outline.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-outline-jak\napp_id: design\nskill_id: search_icons',
|
|
36426
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36427
|
+
"embed_ids": null
|
|
36428
|
+
},
|
|
36429
|
+
{
|
|
36430
|
+
"embed_id": "aac59ece-3361-41ae-a669-d0b55919e086",
|
|
36431
|
+
"type": "icon_result",
|
|
36432
|
+
"content": 'icon_id: "material-symbols-light:settings-outline-rounded"\nprefix: material-symbols-light\nname: settings-outline-rounded\ndisplay_name: Settings Outline Rounded\ncollection_name: Material Symbols Light\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols-light/settings-outline-rounded.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-outline-rounded-bgT\napp_id: design\nskill_id: search_icons',
|
|
36433
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36434
|
+
"embed_ids": null
|
|
36435
|
+
},
|
|
36436
|
+
{
|
|
36437
|
+
"embed_id": "b6282388-6a40-47f1-a307-3df121df52ce",
|
|
36438
|
+
"type": "icon_result",
|
|
36439
|
+
"content": 'icon_id: "material-symbols-light:settings-rounded"\nprefix: material-symbols-light\nname: settings-rounded\ndisplay_name: Settings Rounded\ncollection_name: Material Symbols Light\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols-light/settings-rounded.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-rounded-Lqd\napp_id: design\nskill_id: search_icons',
|
|
36440
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36441
|
+
"embed_ids": null
|
|
36442
|
+
},
|
|
36443
|
+
{
|
|
36444
|
+
"embed_id": "372bef22-d0ee-405c-92af-aa0959c37000",
|
|
36445
|
+
"type": "icon_result",
|
|
36446
|
+
"content": 'icon_id: "ic:baseline-settings"\nprefix: ic\nname: baseline-settings\ndisplay_name: Baseline Settings\ncollection_name: Google Material Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/material-icons/material-icons/blob/master/LICENSE"\nauthor_name: Material Design Authors\nauthor_url: "https://github.com/material-icons/material-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ic/baseline-settings.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: baseline-settings-7Ym\napp_id: design\nskill_id: search_icons',
|
|
36447
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36448
|
+
"embed_ids": null
|
|
36449
|
+
},
|
|
36450
|
+
{
|
|
36451
|
+
"embed_id": "71718c5a-e055-44c2-8222-f6ccecdb141e",
|
|
36452
|
+
"type": "icon_result",
|
|
36453
|
+
"content": 'icon_id: "ic:outline-settings"\nprefix: ic\nname: outline-settings\ndisplay_name: Outline Settings\ncollection_name: Google Material Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/material-icons/material-icons/blob/master/LICENSE"\nauthor_name: Material Design Authors\nauthor_url: "https://github.com/material-icons/material-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ic/outline-settings.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: outline-settings-D7o\napp_id: design\nskill_id: search_icons',
|
|
36454
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36455
|
+
"embed_ids": null
|
|
36456
|
+
},
|
|
36457
|
+
{
|
|
36458
|
+
"embed_id": "6cd050ef-1052-4c04-9b96-65ae0e41b3a6",
|
|
36459
|
+
"type": "icon_result",
|
|
36460
|
+
"content": 'icon_id: "ic:round-settings"\nprefix: ic\nname: round-settings\ndisplay_name: Round Settings\ncollection_name: Google Material Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/material-icons/material-icons/blob/master/LICENSE"\nauthor_name: Material Design Authors\nauthor_url: "https://github.com/material-icons/material-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ic/round-settings.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: round-settings-zU2\napp_id: design\nskill_id: search_icons',
|
|
36461
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36462
|
+
"embed_ids": null
|
|
36463
|
+
},
|
|
36464
|
+
{
|
|
36465
|
+
"embed_id": "6a86b245-92b6-4fe6-ac02-12028a05d6d0",
|
|
36466
|
+
"type": "icon_result",
|
|
36467
|
+
"content": 'icon_id: "ic:sharp-settings"\nprefix: ic\nname: sharp-settings\ndisplay_name: Sharp Settings\ncollection_name: Google Material Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/material-icons/material-icons/blob/master/LICENSE"\nauthor_name: Material Design Authors\nauthor_url: "https://github.com/material-icons/material-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ic/sharp-settings.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: sharp-settings-lFu\napp_id: design\nskill_id: search_icons',
|
|
36468
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36469
|
+
"embed_ids": null
|
|
36470
|
+
},
|
|
36471
|
+
{
|
|
36472
|
+
"embed_id": "8088d00c-6358-4beb-896f-83a3b6c960fb",
|
|
36473
|
+
"type": "icon_result",
|
|
36474
|
+
"content": 'icon_id: "ic:twotone-settings"\nprefix: ic\nname: twotone-settings\ndisplay_name: Twotone Settings\ncollection_name: Google Material Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/material-icons/material-icons/blob/master/LICENSE"\nauthor_name: Material Design Authors\nauthor_url: "https://github.com/material-icons/material-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ic/twotone-settings.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: twotone-settings-pa3\napp_id: design\nskill_id: search_icons',
|
|
36475
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36476
|
+
"embed_ids": null
|
|
36477
|
+
},
|
|
36478
|
+
{
|
|
36479
|
+
"embed_id": "ba22a4bb-59bb-448e-a90b-b47792252ae2",
|
|
36480
|
+
"type": "icon_result",
|
|
36481
|
+
"content": 'icon_id: "mdi:settings"\nprefix: mdi\nname: settings\ndisplay_name: Settings\ncollection_name: Material Design Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/Templarian/MaterialDesign/blob/master/LICENSE"\nauthor_name: Pictogrammers\nauthor_url: "https://github.com/Templarian/MaterialDesign"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/mdi/settings.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-el8\napp_id: design\nskill_id: search_icons',
|
|
36482
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36483
|
+
"embed_ids": null
|
|
36484
|
+
},
|
|
36485
|
+
{
|
|
36486
|
+
"embed_id": "69143f9c-d9f4-43fa-a3ae-1b79da548cf7",
|
|
36487
|
+
"type": "icon_result",
|
|
36488
|
+
"content": 'icon_id: "mdi:settings-outline"\nprefix: mdi\nname: settings-outline\ndisplay_name: Settings Outline\ncollection_name: Material Design Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/Templarian/MaterialDesign/blob/master/LICENSE"\nauthor_name: Pictogrammers\nauthor_url: "https://github.com/Templarian/MaterialDesign"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/mdi/settings-outline.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-outline-Q6n\napp_id: design\nskill_id: search_icons',
|
|
36489
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36490
|
+
"embed_ids": null
|
|
36491
|
+
},
|
|
36492
|
+
{
|
|
36493
|
+
"embed_id": "7e88c868-a968-4225-9056-472157fc5f8d",
|
|
36494
|
+
"type": "icon_result",
|
|
36495
|
+
"content": 'icon_id: "mdi-light:settings"\nprefix: mdi-light\nname: settings\ndisplay_name: Settings\ncollection_name: Material Design Light\ncollection_category: Material\nlicense_title: Open Font License\nlicense_spdx: OFL-1.1\nlicense_url: "https://github.com/Templarian/MaterialDesignLight/blob/master/LICENSE.md"\nauthor_name: Pictogrammers\nauthor_url: "https://github.com/Templarian/MaterialDesignLight"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/mdi-light/settings.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-7f1\napp_id: design\nskill_id: search_icons',
|
|
36496
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36497
|
+
"embed_ids": null
|
|
36498
|
+
},
|
|
36499
|
+
{
|
|
36500
|
+
"embed_id": "e7d6a11c-118e-44d4-987c-a306dcddd0dd",
|
|
36501
|
+
"type": "icon_result",
|
|
36502
|
+
"content": 'icon_id: "tabler:settings"\nprefix: tabler\nname: settings\ndisplay_name: Settings\ncollection_name: Tabler Icons\ncollection_category: UI 24px\nlicense_title: MIT\nlicense_spdx: MIT\nlicense_url: "https://github.com/tabler/tabler-icons/blob/master/LICENSE"\nauthor_name: Pawe\u0142 Kuna\nauthor_url: "https://github.com/tabler/tabler-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/tabler/settings.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-TgF\napp_id: design\nskill_id: search_icons',
|
|
36503
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36504
|
+
"embed_ids": null
|
|
36505
|
+
},
|
|
36506
|
+
{
|
|
36507
|
+
"embed_id": "34452085-11fe-4291-8b41-abe1174304d0",
|
|
36508
|
+
"type": "icon_result",
|
|
36509
|
+
"content": 'icon_id: "tabler:settings-filled"\nprefix: tabler\nname: settings-filled\ndisplay_name: Settings Filled\ncollection_name: Tabler Icons\ncollection_category: UI 24px\nlicense_title: MIT\nlicense_spdx: MIT\nlicense_url: "https://github.com/tabler/tabler-icons/blob/master/LICENSE"\nauthor_name: Pawe\u0142 Kuna\nauthor_url: "https://github.com/tabler/tabler-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/tabler/settings-filled.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-filled-wVZ\napp_id: design\nskill_id: search_icons',
|
|
36510
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36511
|
+
"embed_ids": null
|
|
36512
|
+
},
|
|
36513
|
+
{
|
|
36514
|
+
"embed_id": "48c56d96-d8d6-4ae3-a4ff-cda1e6102b16",
|
|
36515
|
+
"type": "icon_result",
|
|
36516
|
+
"content": 'icon_id: "ri:settings-fill"\nprefix: ri\nname: settings-fill\ndisplay_name: Settings Fill\ncollection_name: Remix Icon\ncollection_category: UI 24px\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/cyberalien/RemixIcon/blob/master/License"\nauthor_name: Remix Design\nauthor_url: "https://github.com/cyberalien/RemixIcon"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ri/settings-fill.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-fill-CPt\napp_id: design\nskill_id: search_icons',
|
|
36517
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36518
|
+
"embed_ids": null
|
|
36519
|
+
},
|
|
36520
|
+
{
|
|
36521
|
+
"embed_id": "cc31a3af-de4a-423c-a2ce-6cdec8b0f266",
|
|
36522
|
+
"type": "icon_result",
|
|
36523
|
+
"content": 'icon_id: "ri:settings-line"\nprefix: ri\nname: settings-line\ndisplay_name: Settings Line\ncollection_name: Remix Icon\ncollection_category: UI 24px\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/cyberalien/RemixIcon/blob/master/License"\nauthor_name: Remix Design\nauthor_url: "https://github.com/cyberalien/RemixIcon"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ri/settings-line.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-line-c3G\napp_id: design\nskill_id: search_icons',
|
|
36524
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36525
|
+
"embed_ids": null
|
|
36526
|
+
},
|
|
36527
|
+
{
|
|
36528
|
+
"embed_id": "203ca579-1246-43c8-bf52-b9dbe656cc5f",
|
|
36529
|
+
"type": "icon_result",
|
|
36530
|
+
"content": 'icon_id: "boxicons:home"\nprefix: boxicons\nname: home\ndisplay_name: Home\ncollection_name: Boxicons\ncollection_category: UI 24px\nlicense_title: MIT\nlicense_spdx: MIT\nlicense_url: "https://github.com/box-icons/boxicons-core/blob/main/LICENSE"\nauthor_name: Boxicons\nauthor_url: "https://github.com/box-icons/boxicons-core"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/boxicons/home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-DSR\napp_id: design\nskill_id: search_icons',
|
|
36531
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36532
|
+
"embed_ids": null
|
|
36533
|
+
},
|
|
36534
|
+
{
|
|
36535
|
+
"embed_id": "f056562c-25ef-4767-8a42-1f6b25e13b5b",
|
|
36536
|
+
"type": "icon_result",
|
|
36537
|
+
"content": 'icon_id: "boxicons:home-filled"\nprefix: boxicons\nname: home-filled\ndisplay_name: Home Filled\ncollection_name: Boxicons\ncollection_category: UI 24px\nlicense_title: MIT\nlicense_spdx: MIT\nlicense_url: "https://github.com/box-icons/boxicons-core/blob/main/LICENSE"\nauthor_name: Boxicons\nauthor_url: "https://github.com/box-icons/boxicons-core"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/boxicons/home-filled.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-filled-WKO\napp_id: design\nskill_id: search_icons',
|
|
36538
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36539
|
+
"embed_ids": null
|
|
36540
|
+
},
|
|
36541
|
+
{
|
|
36542
|
+
"embed_id": "d12b7e45-d9ed-49aa-9fe4-2cd53f4831ea",
|
|
36543
|
+
"type": "icon_result",
|
|
36544
|
+
"content": 'icon_id: "material-symbols:settings-outline-rounded"\nprefix: material-symbols\nname: settings-outline-rounded\ndisplay_name: Settings Outline Rounded\ncollection_name: Material Symbols\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols/settings-outline-rounded.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-outline-rounded-IqD\napp_id: design\nskill_id: search_icons',
|
|
36545
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36546
|
+
"embed_ids": null
|
|
36547
|
+
},
|
|
36548
|
+
{
|
|
36549
|
+
"embed_id": "fc1ee4af-5c44-4a8e-9ad1-1aaa5a21f997",
|
|
36550
|
+
"type": "icon_result",
|
|
36551
|
+
"content": 'icon_id: "ri:home-fill"\nprefix: ri\nname: home-fill\ndisplay_name: Home Fill\ncollection_name: Remix Icon\ncollection_category: UI 24px\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/cyberalien/RemixIcon/blob/master/License"\nauthor_name: Remix Design\nauthor_url: "https://github.com/cyberalien/RemixIcon"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ri/home-fill.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-fill-ZE4\napp_id: design\nskill_id: search_icons',
|
|
36552
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36553
|
+
"embed_ids": null
|
|
36554
|
+
},
|
|
36555
|
+
{
|
|
36556
|
+
"embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36557
|
+
"type": "app_skill_use",
|
|
36558
|
+
"content": "app_id: design\nskill_id: search_icons\nresult_count: 24\nembed_ids: 432db233-a41d-4da8-aa6c-d7dc01f3192a|7dc95323-2a7d-40b0-a297-94d56baddcc1|d2e24971-51a5-4d22-9016-34c3e466ed94|5aa15934-c245-4e76-8d23-81b843e66d0b|b2a82a7f-16c6-440f-8b43-3571de3fe282|f9d13968-446c-4d63-b73f-0ffbd2427a41|2cb06327-1688-4d58-84ff-7c510e79ebcc|fe7b751c-6700-4c0c-933f-9cecb8703421|38617c3a-0abb-4470-87ae-7b0d46742ee4|f658df85-ac0c-4edc-8f55-712e5d303c9c|432e0453-0853-4e16-81cc-08252c8d6331|0b740b16-05a8-4eb8-ab2d-8bd51c743ded|0d55ebe1-9d4e-43ab-86db-fb14aa28f31f|116e7f4f-85be-4ec8-99aa-c4911627fcbd|19e3a71e-c61a-4e49-8699-876652054766|c76d620d-171f-40e7-aa87-06c94f6b7e93|fc169835-27c4-4579-9c51-2e2028c4e44a|256c45e1-78f8-46c9-92d0-8898ec673ba9|e933597d-16ba-46d1-8553-c6c8d7f4b7de|469e811f-2ec4-44d7-bdff-e6feb1d11390|203ca579-1246-43c8-bf52-b9dbe656cc5f|f056562c-25ef-4767-8a42-1f6b25e13b5b|fc1ee4af-5c44-4a8e-9ad1-1aaa5a21f997|8a1a3fb8-55d9-4b2a-9746-8b839f748f0b\nstatus: finished\nembed_id: f92d6925-690b-4350-9b6a-3a7003f8b947\nquery: home\nid: 1\nprovider: Iconify\npreview_results[6]{name}:\n home\n home-outline\n home-outline-rounded\n home-rounded\n home\n home-outline",
|
|
36559
|
+
"parent_embed_id": null,
|
|
36560
|
+
"embed_ids": [
|
|
36561
|
+
"432db233-a41d-4da8-aa6c-d7dc01f3192a",
|
|
36562
|
+
"7dc95323-2a7d-40b0-a297-94d56baddcc1",
|
|
36563
|
+
"d2e24971-51a5-4d22-9016-34c3e466ed94",
|
|
36564
|
+
"5aa15934-c245-4e76-8d23-81b843e66d0b",
|
|
36565
|
+
"b2a82a7f-16c6-440f-8b43-3571de3fe282",
|
|
36566
|
+
"f9d13968-446c-4d63-b73f-0ffbd2427a41",
|
|
36567
|
+
"2cb06327-1688-4d58-84ff-7c510e79ebcc",
|
|
36568
|
+
"fe7b751c-6700-4c0c-933f-9cecb8703421",
|
|
36569
|
+
"38617c3a-0abb-4470-87ae-7b0d46742ee4",
|
|
36570
|
+
"f658df85-ac0c-4edc-8f55-712e5d303c9c",
|
|
36571
|
+
"432e0453-0853-4e16-81cc-08252c8d6331",
|
|
36572
|
+
"0b740b16-05a8-4eb8-ab2d-8bd51c743ded",
|
|
36573
|
+
"0d55ebe1-9d4e-43ab-86db-fb14aa28f31f",
|
|
36574
|
+
"116e7f4f-85be-4ec8-99aa-c4911627fcbd",
|
|
36575
|
+
"19e3a71e-c61a-4e49-8699-876652054766",
|
|
36576
|
+
"c76d620d-171f-40e7-aa87-06c94f6b7e93",
|
|
36577
|
+
"fc169835-27c4-4579-9c51-2e2028c4e44a",
|
|
36578
|
+
"256c45e1-78f8-46c9-92d0-8898ec673ba9",
|
|
36579
|
+
"e933597d-16ba-46d1-8553-c6c8d7f4b7de",
|
|
36580
|
+
"469e811f-2ec4-44d7-bdff-e6feb1d11390",
|
|
36581
|
+
"203ca579-1246-43c8-bf52-b9dbe656cc5f",
|
|
36582
|
+
"f056562c-25ef-4767-8a42-1f6b25e13b5b",
|
|
36583
|
+
"fc1ee4af-5c44-4a8e-9ad1-1aaa5a21f997",
|
|
36584
|
+
"8a1a3fb8-55d9-4b2a-9746-8b839f748f0b"
|
|
36585
|
+
]
|
|
36586
|
+
},
|
|
36587
|
+
{
|
|
36588
|
+
"embed_id": "7af01409-8900-4512-808c-7ccccfc33e08",
|
|
36589
|
+
"type": "icon_result",
|
|
36590
|
+
"content": 'icon_id: "material-symbols:settings"\nprefix: material-symbols\nname: settings\ndisplay_name: Settings\ncollection_name: Material Symbols\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols/settings.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: settings-BrC\napp_id: design\nskill_id: search_icons',
|
|
36591
|
+
"parent_embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc",
|
|
36592
|
+
"embed_ids": null
|
|
36593
|
+
},
|
|
36594
|
+
{
|
|
36595
|
+
"embed_id": "e933597d-16ba-46d1-8553-c6c8d7f4b7de",
|
|
36596
|
+
"type": "icon_result",
|
|
36597
|
+
"content": 'icon_id: "tabler:home"\nprefix: tabler\nname: home\ndisplay_name: Home\ncollection_name: Tabler Icons\ncollection_category: UI 24px\nlicense_title: MIT\nlicense_spdx: MIT\nlicense_url: "https://github.com/tabler/tabler-icons/blob/master/LICENSE"\nauthor_name: Pawe\u0142 Kuna\nauthor_url: "https://github.com/tabler/tabler-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/tabler/home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-EuX\napp_id: design\nskill_id: search_icons',
|
|
36598
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36599
|
+
"embed_ids": null
|
|
36600
|
+
},
|
|
36601
|
+
{
|
|
36602
|
+
"embed_id": "469e811f-2ec4-44d7-bdff-e6feb1d11390",
|
|
36603
|
+
"type": "icon_result",
|
|
36604
|
+
"content": 'icon_id: "tabler:home-filled"\nprefix: tabler\nname: home-filled\ndisplay_name: Home Filled\ncollection_name: Tabler Icons\ncollection_category: UI 24px\nlicense_title: MIT\nlicense_spdx: MIT\nlicense_url: "https://github.com/tabler/tabler-icons/blob/master/LICENSE"\nauthor_name: Pawe\u0142 Kuna\nauthor_url: "https://github.com/tabler/tabler-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/tabler/home-filled.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-filled-Txe\napp_id: design\nskill_id: search_icons',
|
|
36605
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36606
|
+
"embed_ids": null
|
|
36607
|
+
},
|
|
36608
|
+
{
|
|
36609
|
+
"embed_id": "7dc95323-2a7d-40b0-a297-94d56baddcc1",
|
|
36610
|
+
"type": "icon_result",
|
|
36611
|
+
"content": 'icon_id: "material-symbols:home-outline"\nprefix: material-symbols\nname: home-outline\ndisplay_name: Home Outline\ncollection_name: Material Symbols\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols/home-outline.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-outline-94o\napp_id: design\nskill_id: search_icons',
|
|
36612
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36613
|
+
"embed_ids": null
|
|
36614
|
+
},
|
|
36615
|
+
{
|
|
36616
|
+
"embed_id": "b2a82a7f-16c6-440f-8b43-3571de3fe282",
|
|
36617
|
+
"type": "icon_result",
|
|
36618
|
+
"content": 'icon_id: "material-symbols-light:home"\nprefix: material-symbols-light\nname: home\ndisplay_name: Home\ncollection_name: Material Symbols Light\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols-light/home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-jd5\napp_id: design\nskill_id: search_icons',
|
|
36619
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36620
|
+
"embed_ids": null
|
|
36621
|
+
},
|
|
36622
|
+
{
|
|
36623
|
+
"embed_id": "f9d13968-446c-4d63-b73f-0ffbd2427a41",
|
|
36624
|
+
"type": "icon_result",
|
|
36625
|
+
"content": 'icon_id: "material-symbols-light:home-outline"\nprefix: material-symbols-light\nname: home-outline\ndisplay_name: Home Outline\ncollection_name: Material Symbols Light\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols-light/home-outline.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-outline-3t2\napp_id: design\nskill_id: search_icons',
|
|
36626
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36627
|
+
"embed_ids": null
|
|
36628
|
+
},
|
|
36629
|
+
{
|
|
36630
|
+
"embed_id": "432db233-a41d-4da8-aa6c-d7dc01f3192a",
|
|
36631
|
+
"type": "icon_result",
|
|
36632
|
+
"content": 'icon_id: "material-symbols:home"\nprefix: material-symbols\nname: home\ndisplay_name: Home\ncollection_name: Material Symbols\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols/home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-X0R\napp_id: design\nskill_id: search_icons',
|
|
36633
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36634
|
+
"embed_ids": null
|
|
36635
|
+
},
|
|
36636
|
+
{
|
|
36637
|
+
"embed_id": "0d55ebe1-9d4e-43ab-86db-fb14aa28f31f",
|
|
36638
|
+
"type": "icon_result",
|
|
36639
|
+
"content": 'icon_id: "ic:twotone-home"\nprefix: ic\nname: twotone-home\ndisplay_name: Twotone Home\ncollection_name: Google Material Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/material-icons/material-icons/blob/master/LICENSE"\nauthor_name: Material Design Authors\nauthor_url: "https://github.com/material-icons/material-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ic/twotone-home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: twotone-home-qfg\napp_id: design\nskill_id: search_icons',
|
|
36640
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36641
|
+
"embed_ids": null
|
|
36642
|
+
},
|
|
36643
|
+
{
|
|
36644
|
+
"embed_id": "19e3a71e-c61a-4e49-8699-876652054766",
|
|
36645
|
+
"type": "icon_result",
|
|
36646
|
+
"content": 'icon_id: "mdi:home-outline"\nprefix: mdi\nname: home-outline\ndisplay_name: Home Outline\ncollection_name: Material Design Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/Templarian/MaterialDesign/blob/master/LICENSE"\nauthor_name: Pictogrammers\nauthor_url: "https://github.com/Templarian/MaterialDesign"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/mdi/home-outline.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-outline-VyG\napp_id: design\nskill_id: search_icons',
|
|
36647
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36648
|
+
"embed_ids": null
|
|
36649
|
+
},
|
|
36650
|
+
{
|
|
36651
|
+
"embed_id": "fc169835-27c4-4579-9c51-2e2028c4e44a",
|
|
36652
|
+
"type": "icon_result",
|
|
36653
|
+
"content": 'icon_id: "line-md:home"\nprefix: line-md\nname: home\ndisplay_name: Home\ncollection_name: Material Line Icons\ncollection_category: Material\nlicense_title: MIT\nlicense_spdx: MIT\nlicense_url: "https://github.com/cyberalien/line-md/blob/main/license.txt"\nauthor_name: Vjacheslav Trushkin\nauthor_url: "https://github.com/cyberalien/line-md"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/line-md/home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-IlX\napp_id: design\nskill_id: search_icons',
|
|
36654
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36655
|
+
"embed_ids": null
|
|
36656
|
+
},
|
|
36657
|
+
{
|
|
36658
|
+
"embed_id": "256c45e1-78f8-46c9-92d0-8898ec673ba9",
|
|
36659
|
+
"type": "icon_result",
|
|
36660
|
+
"content": 'icon_id: "line-md:home-twotone"\nprefix: line-md\nname: home-twotone\ndisplay_name: Home Twotone\ncollection_name: Material Line Icons\ncollection_category: Material\nlicense_title: MIT\nlicense_spdx: MIT\nlicense_url: "https://github.com/cyberalien/line-md/blob/main/license.txt"\nauthor_name: Vjacheslav Trushkin\nauthor_url: "https://github.com/cyberalien/line-md"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/line-md/home-twotone.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-twotone-3bU\napp_id: design\nskill_id: search_icons',
|
|
36661
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36662
|
+
"embed_ids": null
|
|
36663
|
+
},
|
|
36664
|
+
{
|
|
36665
|
+
"embed_id": "d2e24971-51a5-4d22-9016-34c3e466ed94",
|
|
36666
|
+
"type": "icon_result",
|
|
36667
|
+
"content": 'icon_id: "material-symbols:home-outline-rounded"\nprefix: material-symbols\nname: home-outline-rounded\ndisplay_name: Home Outline Rounded\ncollection_name: Material Symbols\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols/home-outline-rounded.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-outline-rounded-ipO\napp_id: design\nskill_id: search_icons',
|
|
36668
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36669
|
+
"embed_ids": null
|
|
36670
|
+
},
|
|
36671
|
+
{
|
|
36672
|
+
"embed_id": "5aa15934-c245-4e76-8d23-81b843e66d0b",
|
|
36673
|
+
"type": "icon_result",
|
|
36674
|
+
"content": 'icon_id: "material-symbols:home-rounded"\nprefix: material-symbols\nname: home-rounded\ndisplay_name: Home Rounded\ncollection_name: Material Symbols\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols/home-rounded.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-rounded-tum\napp_id: design\nskill_id: search_icons',
|
|
36675
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36676
|
+
"embed_ids": null
|
|
36677
|
+
},
|
|
36678
|
+
{
|
|
36679
|
+
"embed_id": "2cb06327-1688-4d58-84ff-7c510e79ebcc",
|
|
36680
|
+
"type": "icon_result",
|
|
36681
|
+
"content": 'icon_id: "material-symbols-light:home-outline-rounded"\nprefix: material-symbols-light\nname: home-outline-rounded\ndisplay_name: Home Outline Rounded\ncollection_name: Material Symbols Light\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols-light/home-outline-rounded.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-outline-rounded-Ydw\napp_id: design\nskill_id: search_icons',
|
|
36682
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36683
|
+
"embed_ids": null
|
|
36684
|
+
},
|
|
36685
|
+
{
|
|
36686
|
+
"embed_id": "38617c3a-0abb-4470-87ae-7b0d46742ee4",
|
|
36687
|
+
"type": "icon_result",
|
|
36688
|
+
"content": 'icon_id: "ic:baseline-home"\nprefix: ic\nname: baseline-home\ndisplay_name: Baseline Home\ncollection_name: Google Material Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/material-icons/material-icons/blob/master/LICENSE"\nauthor_name: Material Design Authors\nauthor_url: "https://github.com/material-icons/material-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ic/baseline-home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: baseline-home-er0\napp_id: design\nskill_id: search_icons',
|
|
36689
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36690
|
+
"embed_ids": null
|
|
36691
|
+
},
|
|
36692
|
+
{
|
|
36693
|
+
"embed_id": "f658df85-ac0c-4edc-8f55-712e5d303c9c",
|
|
36694
|
+
"type": "icon_result",
|
|
36695
|
+
"content": 'icon_id: "ic:outline-home"\nprefix: ic\nname: outline-home\ndisplay_name: Outline Home\ncollection_name: Google Material Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/material-icons/material-icons/blob/master/LICENSE"\nauthor_name: Material Design Authors\nauthor_url: "https://github.com/material-icons/material-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ic/outline-home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: outline-home-0cO\napp_id: design\nskill_id: search_icons',
|
|
36696
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36697
|
+
"embed_ids": null
|
|
36698
|
+
},
|
|
36699
|
+
{
|
|
36700
|
+
"embed_id": "432e0453-0853-4e16-81cc-08252c8d6331",
|
|
36701
|
+
"type": "icon_result",
|
|
36702
|
+
"content": 'icon_id: "ic:round-home"\nprefix: ic\nname: round-home\ndisplay_name: Round Home\ncollection_name: Google Material Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/material-icons/material-icons/blob/master/LICENSE"\nauthor_name: Material Design Authors\nauthor_url: "https://github.com/material-icons/material-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ic/round-home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: round-home-ZjJ\napp_id: design\nskill_id: search_icons',
|
|
36703
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36704
|
+
"embed_ids": null
|
|
36705
|
+
},
|
|
36706
|
+
{
|
|
36707
|
+
"embed_id": "fe7b751c-6700-4c0c-933f-9cecb8703421",
|
|
36708
|
+
"type": "icon_result",
|
|
36709
|
+
"content": 'icon_id: "material-symbols-light:home-rounded"\nprefix: material-symbols-light\nname: home-rounded\ndisplay_name: Home Rounded\ncollection_name: Material Symbols Light\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/google/material-design-icons/blob/master/LICENSE"\nauthor_name: Google\nauthor_url: "https://github.com/google/material-design-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/material-symbols-light/home-rounded.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-rounded-68H\napp_id: design\nskill_id: search_icons',
|
|
36710
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36711
|
+
"embed_ids": null
|
|
36712
|
+
},
|
|
36713
|
+
{
|
|
36714
|
+
"embed_id": "0b740b16-05a8-4eb8-ab2d-8bd51c743ded",
|
|
36715
|
+
"type": "icon_result",
|
|
36716
|
+
"content": 'icon_id: "ic:sharp-home"\nprefix: ic\nname: sharp-home\ndisplay_name: Sharp Home\ncollection_name: Google Material Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/material-icons/material-icons/blob/master/LICENSE"\nauthor_name: Material Design Authors\nauthor_url: "https://github.com/material-icons/material-icons"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/ic/sharp-home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: sharp-home-dpS\napp_id: design\nskill_id: search_icons',
|
|
36717
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36718
|
+
"embed_ids": null
|
|
36719
|
+
},
|
|
36720
|
+
{
|
|
36721
|
+
"embed_id": "116e7f4f-85be-4ec8-99aa-c4911627fcbd",
|
|
36722
|
+
"type": "icon_result",
|
|
36723
|
+
"content": 'icon_id: "mdi:home"\nprefix: mdi\nname: home\ndisplay_name: Home\ncollection_name: Material Design Icons\ncollection_category: Material\nlicense_title: Apache 2.0\nlicense_spdx: Apache-2.0\nlicense_url: "https://github.com/Templarian/MaterialDesign/blob/master/LICENSE"\nauthor_name: Pictogrammers\nauthor_url: "https://github.com/Templarian/MaterialDesign"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/mdi/home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-HkF\napp_id: design\nskill_id: search_icons',
|
|
36724
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36725
|
+
"embed_ids": null
|
|
36726
|
+
},
|
|
36727
|
+
{
|
|
36728
|
+
"embed_id": "c76d620d-171f-40e7-aa87-06c94f6b7e93",
|
|
36729
|
+
"type": "icon_result",
|
|
36730
|
+
"content": 'icon_id: "mdi-light:home"\nprefix: mdi-light\nname: home\ndisplay_name: Home\ncollection_name: Material Design Light\ncollection_category: Material\nlicense_title: Open Font License\nlicense_spdx: OFL-1.1\nlicense_url: "https://github.com/Templarian/MaterialDesignLight/blob/master/LICENSE.md"\nauthor_name: Pictogrammers\nauthor_url: "https://github.com/Templarian/MaterialDesignLight"\npalette: false\nsvg_path: /v1/apps/design/icons/iconify/mdi-light/home.svg\ntags[0]:\ntype: icon_result\nparent_app_skill_type: app_skill_use\nembed_ref: home-i4c\napp_id: design\nskill_id: search_icons',
|
|
36731
|
+
"parent_embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947",
|
|
36732
|
+
"embed_ids": null
|
|
36733
|
+
}
|
|
36734
|
+
],
|
|
36735
|
+
metadata: {
|
|
36736
|
+
featured: true,
|
|
36737
|
+
order: 114,
|
|
36738
|
+
app_skill_examples: ["design.search_icons"]
|
|
36739
|
+
}
|
|
36740
|
+
};
|
|
36741
|
+
|
|
35948
36742
|
// ../ui/src/demo_chats/exampleChatData.ts
|
|
35949
36743
|
var ALL_EXAMPLE_CHATS = [
|
|
35950
36744
|
giganticAirplanesChat,
|
|
@@ -36040,7 +36834,8 @@ var ALL_EXAMPLE_CHATS = [
|
|
|
36040
36834
|
habitGardenWebApplicationChat,
|
|
36041
36835
|
printableBenchyPhoneStandModelsChat,
|
|
36042
36836
|
exampleChatTaskPlanningChecklistChat,
|
|
36043
|
-
libraryBookReturnWorkflowChat
|
|
36837
|
+
libraryBookReturnWorkflowChat,
|
|
36838
|
+
dashboardSidebarSvgIconsChat
|
|
36044
36839
|
].sort((a, b) => a.metadata.order - b.metadata.order);
|
|
36045
36840
|
|
|
36046
36841
|
// ../ui/src/i18n/locales/en.json
|
|
@@ -37571,6 +38366,14 @@ Only output the final Markdown table. Do NOT include explanations, notes, or any
|
|
|
37571
38366
|
}
|
|
37572
38367
|
}
|
|
37573
38368
|
},
|
|
38369
|
+
design: {
|
|
38370
|
+
search_icons: {
|
|
38371
|
+
text: "Search icons",
|
|
38372
|
+
description: {
|
|
38373
|
+
text: "Find open-source SVG icons from Iconify collections."
|
|
38374
|
+
}
|
|
38375
|
+
}
|
|
38376
|
+
},
|
|
37574
38377
|
electronics: {
|
|
37575
38378
|
search_components: {
|
|
37576
38379
|
text: "Search components",
|
|
@@ -43537,6 +44340,20 @@ Only output the final Markdown table. Do NOT include explanations, notes, or any
|
|
|
43537
44340
|
text: "What live music or performance events are happening in Berlin next week?"
|
|
43538
44341
|
}
|
|
43539
44342
|
},
|
|
44343
|
+
dashboard_sidebar_svg_icons: {
|
|
44344
|
+
title: {
|
|
44345
|
+
text: "Dashboard Sidebar SVG Icons"
|
|
44346
|
+
},
|
|
44347
|
+
summary: {
|
|
44348
|
+
text: "A Design app example that finds clean open-source SVG home and settings icons for a dashboard sidebar."
|
|
44349
|
+
},
|
|
44350
|
+
message_1: {
|
|
44351
|
+
text: "Find open-source SVG home and settings icons from clean UI icon sets for a dashboard sidebar. Include the icon names, collections, and licenses."
|
|
44352
|
+
},
|
|
44353
|
+
message_2: {
|
|
44354
|
+
text: '```json\n{"type": "app_skill_use", "embed_id": "f92d6925-690b-4350-9b6a-3a7003f8b947", "app_id": "design", "skill_id": "search_icons", "query": "home"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "68b02c14-a329-4772-97d2-d7b168bb50bc", "app_id": "design", "skill_id": "search_icons", "query": "settings"}\n```\n\nFuer eine klare Dashboard-Seitenleiste eignen sich Icons mit einheitlicher Strichstaerke und minimalistischer Aesthetik. Hier sind mehrere Open-Source-SVG-Optionen aus angesehenen, sauberen UI-Icon-Sets:\n\n### 1. Tabler Icons\n[Tabler Icons](wiki:Tabler) ist ein stark anpassbares, strichbasiertes Set auf einem 24x24-Raster und passt dadurch sehr gut zu modernen Dashboards.\n* **Lizenz:** [MIT](wiki:MIT_License)\n* **Home:** `tabler:home` [Home](embed:home-EuX)\n* **Settings:** `tabler:settings` [Settings](embed:settings-TgF)\n\n### 2. Remix Icon\nRemix Icon bietet einen neutralen, professionellen Stil mit "Line"- und "Fill"-Varianten. Das ist ideal, um aktive und inaktive Zustaende in einer Seitenleiste zu unterscheiden.\n* **Lizenz:** [Apache 2.0](wiki:Apache_License)\n* **Home:** `ri:home-line` [Home Line](embed:home-line-vDv)\n* **Settings:** `ri:settings-line` [Settings Line](embed:settings-line-c3G)\n\n### 3. Material Symbols (Light)\n[Material Symbols](wiki:Material_Design) sind der moderne Nachfolger von Material Icons und nutzen variable Font-Technologie. Die Varianten "Light" und "Outline" wirken besonders luftig und hochwertig.\n* **Lizenz:** [Apache 2.0](wiki:Apache_License)\n* **Home:** `material-symbols-light:home-outline` [Home Outline](embed:home-outline-3t2)\n* **Settings:** `material-symbols-light:settings-outline` [Settings Outline](embed:settings-outline-jak)\n\n### 4. Boxicons\nBoxicons ist ein hochwertiges, webfreundliches Icon-Set mit einfachen und gut ausbalancierten Symbolen.\n* **Lizenz:** [MIT](wiki:MIT_License)\n* **Home:** `boxicons:home` [Home](embed:home-DSR)\n* **Settings:** `boxicons:settings` (Available in the Boxicons collection)\n\n### Zusammenfassungstabelle\n\n```json\n{"type": "sheet", "embed_id": "955e10f2-2643-4489-a9d0-6ccdad784a58"}\n```\n\n**Design-Tipp:** Wenn du diese Icons in einer Seitenleiste nutzt, halte die Strichbreite ueber alle Icons hinweg konsistent. Viele dieser Kollektionen verwenden standardmaessig `2px`, was gut sichtbar bleibt, ohne "schwer" zu wirken.\n\nMoechtest du, dass ich weitere Sidebar-Icons wie "Benutzer", "Analytics" oder "Nachrichten" suche, um das Set zu vervollstaendigen? Ich kann dir auch mit einer [Svelte](/#settings/apps/code)- oder [React](wiki:React_(software))-Seitenleistenkomponente helfen, falls du die UI gerade baust.'
|
|
44355
|
+
}
|
|
44356
|
+
},
|
|
43540
44357
|
email_verification_sequence_diagram: {
|
|
43541
44358
|
title: {
|
|
43542
44359
|
text: "Email Verification Sequence Diagram"
|
|
@@ -55697,7 +56514,7 @@ function buildAssistantFeedbackDecision(rating) {
|
|
|
55697
56514
|
import { randomUUID as randomUUID7 } from "crypto";
|
|
55698
56515
|
import { existsSync as existsSync8, mkdtempSync as mkdtempSync2, readFileSync as readFileSync7, readdirSync as readdirSync2, writeFileSync as writeFileSync5 } from "fs";
|
|
55699
56516
|
import { tmpdir } from "os";
|
|
55700
|
-
import { dirname as
|
|
56517
|
+
import { dirname as dirname4, join as join5, resolve as resolve5 } from "path";
|
|
55701
56518
|
import { fileURLToPath } from "url";
|
|
55702
56519
|
var DEFAULT_JUDGE_MODEL = "google/gemini-3-flash-preview";
|
|
55703
56520
|
var DEFAULT_EXTENSIVE_SIZE = 10;
|
|
@@ -56549,13 +57366,13 @@ function normalizeModelKey(model) {
|
|
|
56549
57366
|
}
|
|
56550
57367
|
function findProvidersDir() {
|
|
56551
57368
|
const currentFile = fileURLToPath(import.meta.url);
|
|
56552
|
-
let current =
|
|
57369
|
+
let current = dirname4(currentFile);
|
|
56553
57370
|
for (let index = 0; index < 8; index += 1) {
|
|
56554
57371
|
const candidate = join5(current, "backend", "providers");
|
|
56555
57372
|
if (existsSync8(candidate)) return candidate;
|
|
56556
57373
|
const parentCandidate = join5(current, "..", "..", "backend", "providers");
|
|
56557
57374
|
if (existsSync8(parentCandidate)) return resolve5(parentCandidate);
|
|
56558
|
-
const next =
|
|
57375
|
+
const next = dirname4(current);
|
|
56559
57376
|
if (next === current) break;
|
|
56560
57377
|
current = next;
|
|
56561
57378
|
}
|
|
@@ -56676,7 +57493,7 @@ function round2(value) {
|
|
|
56676
57493
|
return Math.round(value * 100) / 100;
|
|
56677
57494
|
}
|
|
56678
57495
|
function defaultImageFixturePath() {
|
|
56679
|
-
const fixtureDir = join5(
|
|
57496
|
+
const fixtureDir = join5(dirname4(fileURLToPath(import.meta.url)), "..", "fixtures");
|
|
56680
57497
|
const fixturePath = join5(fixtureDir, "brandenburger-tor.png");
|
|
56681
57498
|
if (existsSync8(fixturePath)) return fixturePath;
|
|
56682
57499
|
const tempDir = mkdtempSync2(join5(tmpdir(), "openmates-benchmark-"));
|
|
@@ -58533,6 +59350,10 @@ async function main() {
|
|
|
58533
59350
|
printDraftsHelp();
|
|
58534
59351
|
return;
|
|
58535
59352
|
}
|
|
59353
|
+
if (command === "ideabucket") {
|
|
59354
|
+
printIdeaBucketHelp();
|
|
59355
|
+
return;
|
|
59356
|
+
}
|
|
58536
59357
|
if (command === "apps") {
|
|
58537
59358
|
printAppsHelp();
|
|
58538
59359
|
return;
|
|
@@ -58683,6 +59504,10 @@ async function main() {
|
|
|
58683
59504
|
await handleDrafts(client, subcommand, rest, parsed.flags);
|
|
58684
59505
|
return;
|
|
58685
59506
|
}
|
|
59507
|
+
if (command === "ideabucket") {
|
|
59508
|
+
await handleIdeaBucket(client, subcommand, rest, parsed.flags);
|
|
59509
|
+
return;
|
|
59510
|
+
}
|
|
58686
59511
|
if (command === "apps") {
|
|
58687
59512
|
await handleApps(client, subcommand, rest, parsed.flags);
|
|
58688
59513
|
return;
|
|
@@ -59042,14 +59867,17 @@ async function handleTeams(client, subcommand, rest, flags) {
|
|
|
59042
59867
|
if (typeof flags["encrypted-recipient-hint"] === "string") input.encrypted_recipient_hint = flags["encrypted-recipient-hint"];
|
|
59043
59868
|
if (typeof flags["expires-at"] === "string") input.expires_at = Number.parseInt(flags["expires-at"], 10);
|
|
59044
59869
|
input.role = parseTeamInviteRole(flags.role);
|
|
59870
|
+
if (typeof flags.email === "string") await client.getTeam(teamId);
|
|
59045
59871
|
const invite = await client.createTeamInvite(teamId, input);
|
|
59046
59872
|
if (flags.json === true) printJson2({ invite });
|
|
59047
59873
|
else printJson2(invite);
|
|
59048
59874
|
return;
|
|
59049
59875
|
}
|
|
59050
59876
|
if (subcommand === "accept-invite") {
|
|
59051
|
-
const
|
|
59052
|
-
const
|
|
59877
|
+
const inviteInput = parseTeamInviteInput(requiredStringFlag(flags.invite ?? rest[0], "<invite-id-or-url>"));
|
|
59878
|
+
const inviteSecret = typeof flags.key === "string" ? flags.key : inviteInput.inviteSecret;
|
|
59879
|
+
const recipientEmail = typeof flags.email === "string" ? flags.email : void 0;
|
|
59880
|
+
const result = await client.acceptTeamInvite(inviteInput.inviteId, { inviteSecret, recipientEmail });
|
|
59053
59881
|
if (flags.json === true) printJson2(result);
|
|
59054
59882
|
else printJson2(result);
|
|
59055
59883
|
return;
|
|
@@ -59072,7 +59900,7 @@ async function handleTeams(client, subcommand, rest, flags) {
|
|
|
59072
59900
|
if (subcommand === "approve-access") {
|
|
59073
59901
|
const teamId = requireTeamId(rest, flags);
|
|
59074
59902
|
const accessRequestId = requiredStringFlag(flags.request ?? flags["access-request"] ?? rest[1], "<access-request-id>");
|
|
59075
|
-
const encryptedTeamKey =
|
|
59903
|
+
const encryptedTeamKey = typeof flags["encrypted-team-key"] === "string" ? flags["encrypted-team-key"] : void 0;
|
|
59076
59904
|
const membership = await client.approveTeamAccessRequest(teamId, accessRequestId, encryptedTeamKey);
|
|
59077
59905
|
if (flags.json === true) printJson2({ membership });
|
|
59078
59906
|
else printJson2(membership);
|
|
@@ -59162,6 +59990,16 @@ async function handleTeams(client, subcommand, rest, flags) {
|
|
|
59162
59990
|
}
|
|
59163
59991
|
throw new Error(`Unknown teams command '${subcommand}'. Run 'openmates teams --help'.`);
|
|
59164
59992
|
}
|
|
59993
|
+
function parseTeamInviteInput(value) {
|
|
59994
|
+
try {
|
|
59995
|
+
const url = new URL(value);
|
|
59996
|
+
const inviteId = url.pathname.split("/").filter(Boolean).pop();
|
|
59997
|
+
const fragment = new URLSearchParams(url.hash.replace(/^#/, ""));
|
|
59998
|
+
if (inviteId) return { inviteId, inviteSecret: fragment.get("key") };
|
|
59999
|
+
} catch {
|
|
60000
|
+
}
|
|
60001
|
+
return { inviteId: value, inviteSecret: null };
|
|
60002
|
+
}
|
|
59165
60003
|
function requireTeamId(rest, flags) {
|
|
59166
60004
|
return requiredStringFlag(flags.team ?? flags["team-id"] ?? rest[0], "--team <team-id>");
|
|
59167
60005
|
}
|
|
@@ -59413,6 +60251,42 @@ async function handleDrafts(client, subcommand, rest, flags) {
|
|
|
59413
60251
|
}
|
|
59414
60252
|
throw new Error(`Unknown drafts subcommand '${subcommand}'.`);
|
|
59415
60253
|
}
|
|
60254
|
+
async function handleIdeaBucket(client, subcommand, rest, flags) {
|
|
60255
|
+
if (!subcommand || subcommand === "help" || flags.help === true) {
|
|
60256
|
+
printIdeaBucketHelp();
|
|
60257
|
+
return;
|
|
60258
|
+
}
|
|
60259
|
+
if (subcommand === "add") {
|
|
60260
|
+
const text = rest.join(" ").trim();
|
|
60261
|
+
if (!text) throw new Error("Missing IdeaBucket text for add.");
|
|
60262
|
+
const scheduledSendAt = typeof flags["scheduled-at"] === "string" ? parseUnixSecondsFlag(flags["scheduled-at"], "--scheduled-at") : void 0;
|
|
60263
|
+
printJson2(await client.addIdeaBucketText({
|
|
60264
|
+
text,
|
|
60265
|
+
chatId: typeof flags.chat === "string" ? flags.chat : void 0,
|
|
60266
|
+
bucketId: typeof flags.bucket === "string" ? flags.bucket : void 0,
|
|
60267
|
+
scheduledSendAt,
|
|
60268
|
+
prompt: typeof flags.prompt === "string" ? flags.prompt : void 0
|
|
60269
|
+
}));
|
|
60270
|
+
return;
|
|
60271
|
+
}
|
|
60272
|
+
if (subcommand === "status") {
|
|
60273
|
+
const bucketId = rest[0] ?? (typeof flags.bucket === "string" ? flags.bucket : void 0);
|
|
60274
|
+
printJson2(await client.getIdeaBucketStatus(bucketId));
|
|
60275
|
+
return;
|
|
60276
|
+
}
|
|
60277
|
+
if (subcommand === "process") {
|
|
60278
|
+
const bucketId = rest[0] ?? (typeof flags.bucket === "string" ? flags.bucket : void 0);
|
|
60279
|
+
if (!bucketId) throw new Error("Missing IdeaBucket bucket ID for process.");
|
|
60280
|
+
printJson2(await client.processIdeaBucketBucket(bucketId, { now: flags.now === true }));
|
|
60281
|
+
return;
|
|
60282
|
+
}
|
|
60283
|
+
throw new Error(`Unknown ideabucket subcommand '${subcommand}'.`);
|
|
60284
|
+
}
|
|
60285
|
+
function parseUnixSecondsFlag(value, flagName) {
|
|
60286
|
+
const parsed = Number(value);
|
|
60287
|
+
if (!Number.isFinite(parsed) || parsed <= 0) throw new Error(`Invalid ${flagName}; expected Unix seconds.`);
|
|
60288
|
+
return parsed > 1e10 ? Math.floor(parsed / 1e3) : Math.floor(parsed);
|
|
60289
|
+
}
|
|
59416
60290
|
async function handleChats(client, subcommand, rest, flags, redactor) {
|
|
59417
60291
|
if (!subcommand || subcommand === "help" || flags.help === true) {
|
|
59418
60292
|
printChatsHelp();
|
|
@@ -59858,28 +60732,28 @@ ${deleted}/${resolved.length} chat(s) deleted.`);
|
|
|
59858
60732
|
} catch {
|
|
59859
60733
|
}
|
|
59860
60734
|
}
|
|
59861
|
-
const { mkdir, writeFile } = await import("fs/promises");
|
|
60735
|
+
const { mkdir: mkdir2, writeFile: writeFile2 } = await import("fs/promises");
|
|
59862
60736
|
const { join: join7 } = await import("path");
|
|
59863
60737
|
if (useZip) {
|
|
59864
60738
|
const tmpDir = join7(outputDir, `.${filenameBase}_tmp`);
|
|
59865
|
-
await
|
|
59866
|
-
await
|
|
59867
|
-
await
|
|
60739
|
+
await mkdir2(tmpDir, { recursive: true });
|
|
60740
|
+
await writeFile2(join7(tmpDir, `${filenameBase}.yml`), yamlContent);
|
|
60741
|
+
await writeFile2(join7(tmpDir, `${filenameBase}.md`), mdContent);
|
|
59868
60742
|
if (codeEmbeds.length > 0) {
|
|
59869
60743
|
for (const ce of codeEmbeds) {
|
|
59870
60744
|
const fpath = ce.filePath ?? ce.filename ?? `${ce.embedId.slice(0, 8)}.${getExtForLang(ce.language)}`;
|
|
59871
60745
|
const fullPath = join7(tmpDir, "code", fpath);
|
|
59872
|
-
await
|
|
60746
|
+
await mkdir2(fullPath.substring(0, fullPath.lastIndexOf("/")), {
|
|
59873
60747
|
recursive: true
|
|
59874
60748
|
});
|
|
59875
|
-
await
|
|
60749
|
+
await writeFile2(fullPath, ce.content);
|
|
59876
60750
|
}
|
|
59877
60751
|
}
|
|
59878
60752
|
if (transcriptEmbeds.length > 0) {
|
|
59879
60753
|
const tDir = join7(tmpDir, "transcripts");
|
|
59880
|
-
await
|
|
60754
|
+
await mkdir2(tDir, { recursive: true });
|
|
59881
60755
|
for (const te of transcriptEmbeds) {
|
|
59882
|
-
await
|
|
60756
|
+
await writeFile2(join7(tDir, te.filename), te.content);
|
|
59883
60757
|
}
|
|
59884
60758
|
}
|
|
59885
60759
|
const zipPath = join7(outputDir, `${filenameBase}.zip`);
|
|
@@ -59898,28 +60772,28 @@ ${deleted}/${resolved.length} chat(s) deleted.`);
|
|
|
59898
60772
|
}
|
|
59899
60773
|
} else {
|
|
59900
60774
|
const chatDir = join7(outputDir, filenameBase);
|
|
59901
|
-
await
|
|
60775
|
+
await mkdir2(chatDir, { recursive: true });
|
|
59902
60776
|
const written = [];
|
|
59903
|
-
await
|
|
60777
|
+
await writeFile2(join7(chatDir, `${filenameBase}.yml`), yamlContent);
|
|
59904
60778
|
written.push(`${filenameBase}.yml`);
|
|
59905
|
-
await
|
|
60779
|
+
await writeFile2(join7(chatDir, `${filenameBase}.md`), mdContent);
|
|
59906
60780
|
written.push(`${filenameBase}.md`);
|
|
59907
60781
|
if (codeEmbeds.length > 0) {
|
|
59908
60782
|
for (const ce of codeEmbeds) {
|
|
59909
60783
|
const fpath = ce.filePath ?? ce.filename ?? `${ce.embedId.slice(0, 8)}.${getExtForLang(ce.language)}`;
|
|
59910
60784
|
const fullPath = join7(chatDir, "code", fpath);
|
|
59911
|
-
await
|
|
60785
|
+
await mkdir2(fullPath.substring(0, fullPath.lastIndexOf("/")), {
|
|
59912
60786
|
recursive: true
|
|
59913
60787
|
});
|
|
59914
|
-
await
|
|
60788
|
+
await writeFile2(fullPath, ce.content);
|
|
59915
60789
|
written.push(`code/${fpath}`);
|
|
59916
60790
|
}
|
|
59917
60791
|
}
|
|
59918
60792
|
if (transcriptEmbeds.length > 0) {
|
|
59919
60793
|
const tDir = join7(chatDir, "transcripts");
|
|
59920
|
-
await
|
|
60794
|
+
await mkdir2(tDir, { recursive: true });
|
|
59921
60795
|
for (const te of transcriptEmbeds) {
|
|
59922
|
-
await
|
|
60796
|
+
await writeFile2(join7(tDir, te.filename), te.content);
|
|
59923
60797
|
written.push(`transcripts/${te.filename}`);
|
|
59924
60798
|
}
|
|
59925
60799
|
}
|
|
@@ -61088,6 +61962,10 @@ The booking_token is shown in the output of:
|
|
|
61088
61962
|
await handleModels3dSearch(client, flags, apiKey);
|
|
61089
61963
|
return;
|
|
61090
61964
|
}
|
|
61965
|
+
if (subcommand === "design" && rest[0] === "export-icon") {
|
|
61966
|
+
await handleDesignIconExport(client, rest.slice(1), flags, apiKey);
|
|
61967
|
+
return;
|
|
61968
|
+
}
|
|
61091
61969
|
const generatedCommand = findGeneratedAppSkillCommand(subcommand, rest[0]);
|
|
61092
61970
|
if (generatedCommand) {
|
|
61093
61971
|
await handleGeneratedAppSkillCommand(client, generatedCommand, rest.slice(1), flags, apiKey);
|
|
@@ -61173,6 +62051,75 @@ async function handleModels3dSearch(client, flags, apiKey) {
|
|
|
61173
62051
|
process.exit(1);
|
|
61174
62052
|
}
|
|
61175
62053
|
}
|
|
62054
|
+
async function handleDesignIconExport(client, positionals, flags, apiKey) {
|
|
62055
|
+
if (flags.help === true) {
|
|
62056
|
+
printDesignIconExportHelp();
|
|
62057
|
+
return;
|
|
62058
|
+
}
|
|
62059
|
+
const outputPath = stringFlag(flags, "output");
|
|
62060
|
+
if (!outputPath) {
|
|
62061
|
+
console.error(
|
|
62062
|
+
"Missing --output flag.\n\nUsage:\n openmates apps design export-icon lucide:home --output home.svg [--color '#111827']\n openmates apps design export-icon --prefix lucide --name home --format png --size 64 --output home.png\n"
|
|
62063
|
+
);
|
|
62064
|
+
process.exit(1);
|
|
62065
|
+
}
|
|
62066
|
+
const format = parseDesignIconExportFormat(flags.format);
|
|
62067
|
+
const size = parsePositiveIntegerFlag(flags.size, "--size");
|
|
62068
|
+
const width = parsePositiveIntegerFlag(flags.width, "--width");
|
|
62069
|
+
const height = parsePositiveIntegerFlag(flags.height, "--height");
|
|
62070
|
+
const iconRef = parseDesignIconReference(positionals, flags);
|
|
62071
|
+
try {
|
|
62072
|
+
const result = await exportDesignIcon({
|
|
62073
|
+
...iconRef,
|
|
62074
|
+
outputPath,
|
|
62075
|
+
format,
|
|
62076
|
+
color: stringFlag(flags, "color"),
|
|
62077
|
+
palette: flags.palette === true,
|
|
62078
|
+
allowPaletteRecolor: flags["allow-palette-recolor"] === true,
|
|
62079
|
+
size,
|
|
62080
|
+
width,
|
|
62081
|
+
height,
|
|
62082
|
+
fetchSvg: async (path) => (await client.getRaw(path, apiKey)).data
|
|
62083
|
+
});
|
|
62084
|
+
if (flags.json === true) {
|
|
62085
|
+
printJson2({
|
|
62086
|
+
success: true,
|
|
62087
|
+
format: result.format,
|
|
62088
|
+
content_type: result.contentType,
|
|
62089
|
+
output_path: result.outputPath,
|
|
62090
|
+
svg_path: result.svgPath,
|
|
62091
|
+
bytes: result.data.byteLength
|
|
62092
|
+
});
|
|
62093
|
+
} else {
|
|
62094
|
+
console.log(`Exported ${result.format.toUpperCase()} icon to ${result.outputPath}`);
|
|
62095
|
+
}
|
|
62096
|
+
} catch (err) {
|
|
62097
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
62098
|
+
console.error(`\x1B[31m\u2717 Design icon export failed:\x1B[0m ${msg}`);
|
|
62099
|
+
process.exit(1);
|
|
62100
|
+
}
|
|
62101
|
+
}
|
|
62102
|
+
function parseDesignIconReference(positionals, flags) {
|
|
62103
|
+
const svgPath = stringFlag(flags, "svg-path");
|
|
62104
|
+
if (svgPath) return { svgPath };
|
|
62105
|
+
const icon = stringFlag(flags, "icon") ?? positionals[0];
|
|
62106
|
+
if (icon) {
|
|
62107
|
+
const [prefix, name, extra] = icon.split(":");
|
|
62108
|
+
if (!prefix || !name || extra !== void 0) {
|
|
62109
|
+
throw new Error("Icon reference must use prefix:name, such as lucide:home");
|
|
62110
|
+
}
|
|
62111
|
+
return { prefix, name };
|
|
62112
|
+
}
|
|
62113
|
+
return {
|
|
62114
|
+
prefix: stringFlag(flags, "prefix"),
|
|
62115
|
+
name: stringFlag(flags, "name")
|
|
62116
|
+
};
|
|
62117
|
+
}
|
|
62118
|
+
function parseDesignIconExportFormat(value) {
|
|
62119
|
+
if (value === void 0) return void 0;
|
|
62120
|
+
if (value === "svg" || value === "png") return value;
|
|
62121
|
+
throw new Error("--format must be svg or png");
|
|
62122
|
+
}
|
|
61176
62123
|
async function handleCodeRun(client, flags, apiKey) {
|
|
61177
62124
|
const requests = await buildCodeRunRequestsFromFlags({
|
|
61178
62125
|
code: typeof flags.code === "string" ? flags.code : void 0,
|
|
@@ -61887,13 +62834,13 @@ function parseYamlScalar(value) {
|
|
|
61887
62834
|
return trimmed;
|
|
61888
62835
|
}
|
|
61889
62836
|
async function saveDownloadedDocument(document, output) {
|
|
61890
|
-
const { mkdir, writeFile } = await import("fs/promises");
|
|
61891
|
-
const { join: join7, basename: basename4, dirname:
|
|
62837
|
+
const { mkdir: mkdir2, writeFile: writeFile2 } = await import("fs/promises");
|
|
62838
|
+
const { join: join7, basename: basename4, dirname: dirname6 } = await import("path");
|
|
61892
62839
|
const target = typeof output === "string" ? output : ".";
|
|
61893
62840
|
const filename = basename4(document.filename || "document.pdf");
|
|
61894
62841
|
const filePath = target.endsWith(".pdf") ? target : join7(target, filename);
|
|
61895
|
-
await
|
|
61896
|
-
await
|
|
62842
|
+
await mkdir2(dirname6(filePath), { recursive: true });
|
|
62843
|
+
await writeFile2(filePath, document.data);
|
|
61897
62844
|
return filePath;
|
|
61898
62845
|
}
|
|
61899
62846
|
function printMates(json) {
|
|
@@ -61974,6 +62921,9 @@ async function handleConnectedAccounts(client, subcommand, flags) {
|
|
|
61974
62921
|
printConnectedAccountsHelp();
|
|
61975
62922
|
return;
|
|
61976
62923
|
}
|
|
62924
|
+
if (typeof flags.team === "string") {
|
|
62925
|
+
throw new Error("Team connected accounts are not supported yet. Use personal connected accounts or retry after Teams connected-account support ships.");
|
|
62926
|
+
}
|
|
61977
62927
|
if (subcommand !== "import") {
|
|
61978
62928
|
throw new Error(`Unknown connected-accounts command '${subcommand}'. Run 'openmates connected-accounts --help'.`);
|
|
61979
62929
|
}
|
|
@@ -62048,8 +62998,8 @@ async function promptPlainText(question) {
|
|
|
62048
62998
|
}
|
|
62049
62999
|
}
|
|
62050
63000
|
async function writeSecretFile(filePath, content, force = false) {
|
|
62051
|
-
const { mkdir, writeFile, stat: stat2 } = await import("fs/promises");
|
|
62052
|
-
const { dirname:
|
|
63001
|
+
const { mkdir: mkdir2, writeFile: writeFile2, stat: stat2 } = await import("fs/promises");
|
|
63002
|
+
const { dirname: dirname6 } = await import("path");
|
|
62053
63003
|
try {
|
|
62054
63004
|
await stat2(filePath);
|
|
62055
63005
|
if (!force) throw new Error(`${filePath} already exists. Use --force to overwrite.`);
|
|
@@ -62059,8 +63009,8 @@ async function writeSecretFile(filePath, content, force = false) {
|
|
|
62059
63009
|
}
|
|
62060
63010
|
if (error instanceof Error && !("code" in error)) throw error;
|
|
62061
63011
|
}
|
|
62062
|
-
await
|
|
62063
|
-
await
|
|
63012
|
+
await mkdir2(dirname6(filePath), { recursive: true });
|
|
63013
|
+
await writeFile2(filePath, content, { mode: 384 });
|
|
62064
63014
|
return filePath;
|
|
62065
63015
|
}
|
|
62066
63016
|
async function generateProvisioningPassword() {
|
|
@@ -65007,6 +65957,7 @@ Commands:
|
|
|
65007
65957
|
openmates tasks [--help] Task commands (list, create, board, ...)
|
|
65008
65958
|
openmates teams [--help] Team lifecycle, membership, billing, and move commands
|
|
65009
65959
|
openmates drafts [--help] Encrypted draft lifecycle commands
|
|
65960
|
+
openmates ideabucket [--help] IdeaBucket capture, draft/status, and process commands
|
|
65010
65961
|
openmates apps [--help] App skill commands (list, run, ...)
|
|
65011
65962
|
openmates workflows [--help] Server-side workflow commands
|
|
65012
65963
|
openmates mentions [--help] List available @mentions
|
|
@@ -65084,6 +66035,8 @@ The CLI prompts for the passcode interactively, validates the provider token wit
|
|
|
65084
66035
|
a harmless read, then re-encrypts the account for the currently logged-in CLI
|
|
65085
66036
|
account before storing it.
|
|
65086
66037
|
|
|
66038
|
+
Team connected accounts are not supported in Teams V1 yet.
|
|
66039
|
+
|
|
65087
66040
|
Options:
|
|
65088
66041
|
--payload <OMCA1...> Required encrypted import payload from web settings
|
|
65089
66042
|
--json Output a redacted JSON summary
|
|
@@ -65328,10 +66281,10 @@ function printTeamsHelp() {
|
|
|
65328
66281
|
openmates teams update <team-id> [--name <encrypted-name>] [--description <encrypted-description>] [--slug <slug>] [--json]
|
|
65329
66282
|
openmates teams delete <team-id> --yes [--json]
|
|
65330
66283
|
openmates teams invite <team-id> (--email <email>|--user <user-id>) [--role admin|member|viewer] [--json]
|
|
65331
|
-
openmates teams accept-invite <invite-id> [--json]
|
|
66284
|
+
openmates teams accept-invite <invite-id-or-url> [--email <recipient-email>] [--key <fragment-key>] [--json]
|
|
65332
66285
|
openmates teams decline-invite <invite-id> [--json]
|
|
65333
66286
|
openmates teams access-requests <team-id> [--status pending_access_approval|all] [--json]
|
|
65334
|
-
openmates teams approve-access <team-id> <access-request-id> --encrypted-team-key <value> [--json]
|
|
66287
|
+
openmates teams approve-access <team-id> <access-request-id> [--encrypted-team-key <value>] [--json]
|
|
65335
66288
|
openmates teams reject-access <team-id> <access-request-id> [--json]
|
|
65336
66289
|
openmates teams role <team-id> --user <user-id> --role admin|member|viewer [--json]
|
|
65337
66290
|
openmates teams remove-member <team-id> --user <user-id> [--json]
|
|
@@ -65359,6 +66312,15 @@ function printDraftsHelp() {
|
|
|
65359
66312
|
Draft plaintext is encrypted locally with the account master key. Only Format-D
|
|
65360
66313
|
ciphertext and version metadata are sent to the server or written to CLI cache.`);
|
|
65361
66314
|
}
|
|
66315
|
+
function printIdeaBucketHelp() {
|
|
66316
|
+
console.log(`IdeaBucket commands:
|
|
66317
|
+
openmates ideabucket add <text> [--chat <uuid>] [--bucket <id>] [--scheduled-at <unix>] [--prompt <text>] [--json]
|
|
66318
|
+
openmates ideabucket status [bucket-id] [--json]
|
|
66319
|
+
openmates ideabucket process <bucket-id> [--now] [--json]
|
|
66320
|
+
|
|
66321
|
+
Adding text updates the encrypted OpenMates IdeaBucket draft for the processing
|
|
66322
|
+
bucket and sends only ciphertext plus sparse non-content metadata to the server.`);
|
|
66323
|
+
}
|
|
65362
66324
|
function printAppsHelp() {
|
|
65363
66325
|
console.log(`Apps commands:
|
|
65364
66326
|
openmates apps list [--json]
|
|
@@ -65372,6 +66334,7 @@ function printAppsHelp() {
|
|
|
65372
66334
|
openmates apps code run --entry main.py --file main.py [--file requirements.txt]
|
|
65373
66335
|
openmates apps code run --entry main.py --dir ./project [--exclude node_modules]
|
|
65374
66336
|
openmates apps models3d search --query benchy [--count 10] [--providers Printables] [--json]
|
|
66337
|
+
openmates apps design export-icon lucide:home --output home.svg [--color '#111827']
|
|
65375
66338
|
openmates apps travel booking-link --token "<token>" [--context '<json>']
|
|
65376
66339
|
|
|
65377
66340
|
Authentication:
|
|
@@ -65388,9 +66351,34 @@ Examples:
|
|
|
65388
66351
|
openmates apps examples travel search_connections
|
|
65389
66352
|
openmates apps code run --language python --filename hello.py --code 'print("Hello from CLI")'
|
|
65390
66353
|
openmates apps models3d search --query benchy --count 2 --providers Printables --json
|
|
66354
|
+
openmates apps design search_icons --query home --count 12 --json
|
|
66355
|
+
openmates apps design export-icon lucide:home --format png --size 64 --output home.png
|
|
65391
66356
|
openmates apps travel booking-link --token "<booking_token from search result>"
|
|
65392
66357
|
openmates apps skill-info web search`);
|
|
65393
66358
|
}
|
|
66359
|
+
function printDesignIconExportHelp() {
|
|
66360
|
+
console.log(`Design icon export command:
|
|
66361
|
+
openmates apps design export-icon <prefix:name> --output <path> [--color <hex>] [--format svg|png]
|
|
66362
|
+
openmates apps design export-icon --prefix <prefix> --name <name> --output <path>
|
|
66363
|
+
openmates apps design export-icon --svg-path <path> --output <path>
|
|
66364
|
+
|
|
66365
|
+
Options:
|
|
66366
|
+
--output <path> Required local output path.
|
|
66367
|
+
--format svg|png Output format. Defaults from --output extension, otherwise svg.
|
|
66368
|
+
--color <hex> Recolor currentColor-based monotone SVGs locally.
|
|
66369
|
+
--size <px> PNG output width when --format png is used. Default: 256.
|
|
66370
|
+
--width <px> PNG output width override.
|
|
66371
|
+
--height <px> PNG output height override when width is omitted.
|
|
66372
|
+
--palette Treat the icon as a palette icon and reject recolor by default.
|
|
66373
|
+
--allow-palette-recolor
|
|
66374
|
+
Override the palette recolor guard.
|
|
66375
|
+
--api-key <key> Use an API key instead of a stored CLI session.
|
|
66376
|
+
--json Print export metadata as JSON.
|
|
66377
|
+
|
|
66378
|
+
Examples:
|
|
66379
|
+
openmates apps design export-icon lucide:home --output home.svg --color '#111827'
|
|
66380
|
+
openmates apps design export-icon --prefix lucide --name home --format png --size 64 --output home.png`);
|
|
66381
|
+
}
|
|
65394
66382
|
function printWorkflowsHelp() {
|
|
65395
66383
|
console.log(`Workflows commands:
|
|
65396
66384
|
openmates workflows list [--json]
|
|
@@ -65585,19 +66573,19 @@ async function handleDocs(client, subcommand, rest, flags) {
|
|
|
65585
66573
|
return;
|
|
65586
66574
|
}
|
|
65587
66575
|
if (subcommand === "download") {
|
|
65588
|
-
const { writeFile, mkdir } = await import("fs/promises");
|
|
65589
|
-
const { join: join7, dirname:
|
|
66576
|
+
const { writeFile: writeFile2, mkdir: mkdir2 } = await import("fs/promises");
|
|
66577
|
+
const { join: join7, dirname: dirname6 } = await import("path");
|
|
65590
66578
|
if (flags.all === true) {
|
|
65591
66579
|
const outputDir = typeof flags.output === "string" ? flags.output : "./openmates-docs";
|
|
65592
66580
|
const tree = await client.listDocs();
|
|
65593
66581
|
const slugs = collectSlugs(tree);
|
|
65594
|
-
await
|
|
66582
|
+
await mkdir2(outputDir, { recursive: true });
|
|
65595
66583
|
let count = 0;
|
|
65596
66584
|
for (const slug2 of slugs) {
|
|
65597
66585
|
const content2 = await client.getDoc(slug2);
|
|
65598
66586
|
const filePath = join7(outputDir, `${slug2}.md`);
|
|
65599
|
-
await
|
|
65600
|
-
await
|
|
66587
|
+
await mkdir2(dirname6(filePath), { recursive: true });
|
|
66588
|
+
await writeFile2(filePath, content2, "utf-8");
|
|
65601
66589
|
count++;
|
|
65602
66590
|
process.stderr.write(`\r Downloaded ${count}/${slugs.length}`);
|
|
65603
66591
|
}
|
|
@@ -65616,7 +66604,7 @@ async function handleDocs(client, subcommand, rest, flags) {
|
|
|
65616
66604
|
}
|
|
65617
66605
|
const content = await client.getDoc(slug);
|
|
65618
66606
|
const filename = typeof flags.output === "string" ? flags.output : `${slug.split("/").pop()}.md`;
|
|
65619
|
-
await
|
|
66607
|
+
await writeFile2(filename, content, "utf-8");
|
|
65620
66608
|
console.log(`Saved to ${filename}`);
|
|
65621
66609
|
return;
|
|
65622
66610
|
}
|
|
@@ -65669,7 +66657,7 @@ function isCliEntrypoint() {
|
|
|
65669
66657
|
try {
|
|
65670
66658
|
const invokedPath = realpathSync(entrypoint);
|
|
65671
66659
|
const modulePath = realpathSync(fileURLToPath2(import.meta.url));
|
|
65672
|
-
return invokedPath === modulePath || basename3(invokedPath) === "cli.js" &&
|
|
66660
|
+
return invokedPath === modulePath || basename3(invokedPath) === "cli.js" && dirname5(invokedPath) === dirname5(modulePath);
|
|
65673
66661
|
} catch {
|
|
65674
66662
|
return false;
|
|
65675
66663
|
}
|